git命令清单

本文通过学习廖雪峰老师的git教程整理而成,文章几处引用教程中的图,侵删,老师的git教程链接:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

概念简单介绍

在A目录使用git进行版本管理,A目录即为工作区,我们在工作区上面操作文件(创建、修改、删除等等),A目录下的隐藏目录.git是版本库,.git目录下主要有暂存区(stage)和当前分支(默认的git会自动创建master分支,不指定时当前分支指向master)两部分,如下图

常用操作

在指定目录下创建版本库:

创建一个新目录,并创建版本库:

将文件添加至版本库:

查看目录文件状态是否与版本库一致:

查看目录文件与版本库中的不同点:

查看提交日志(可用于版本回滚):

回滚至某个版本:

(回滚至A版本后,再次git log时没法查到A版本之后的版本的commit id,此时如果想回到A版本之后的版本B时,可使用git reflog查看B版本的commitid)

撤销工作区的修改:

结果说明:

  当FILE修改后未add到暂存区时,此时撤销结果会将回到跟版本库中的状态。

  当FILE已经add到暂存区后,又对FILE进行修改,此时撤销结果会回到跟暂存区一样的状态。

  总结:先查看暂存区中是否有FILE,有则将暂存区中的FILE状态同步到工作区,否则将当前版本的FILE状态同步到工作区

撤销暂存区中的修改:

结果说明:

  暂存区中没有FILE的修改,工作区FILE还是保持修改状态的。

删除文件三步骤:

(误删时,只需git checkout -- 即可恢复文件)

远程管理

将本地git仓库推送同步到远程仓库

在github上创建一个新仓库(此时为空的)

将远程库和本地库关联起来

本地库的所有内容推送到远程库上

  (会将本地库的master分支内容推送到远程库的master分支上,-u参数会将本地的master分支与远程库的master分支关联起来,之后再push就不需要添加这个参数了)

推送本地分支内容同步到远程

抓取分支

使用git clone时,本地默认只能看到master分支,若想在dev上开发,必须手动抓取origin的dev分支到本地。

之后开发完push到origin的dev分支上:

若此时push时,若发现已经有其他人push过了且与你推送的内容有冲突,会导致推送失败,解决如下:

指定本地dev分支与远程origin/dev分支的链接

将最新的origin/dev抓取下来,此时工作区内容会变成origin/dev的状态

修改后commit,再push

分支管理

创建一个分支:

切换到指定分支(切换后,会将工作区同步到dev分支的状态):

创建dev分支并切换到dev分支上(相当于上面两个步骤):

查看当前所在分支:

合并指定分支到当前分支:

说明:

git merge dev执行时,只是将当前head指针移动到dev所在的位置,如下图

此时如果将dev分支删除,之后git log无法查看分支历史,所以合并时可使用--no-ff参数修改合并模式,在merge时不是简单移动指针,而是生成一个commit至内容与dev一致。这种方式merge后便可通过git log查看分支合并历史。

此时的merge过程如下图,其中结点1和结点2的内容是一样的。

删除指定分支(当前分支不能是dev):

删除一个没有被合并过的分支

标签管理

标签作用:对应一个commitid,方便版本跳转。

标签特性:一个标签对应一个commit版本,同一分支上不能出现两个相同的标签名。

创建标签

查看指定标签的信息

查看已打标签

删除指定标签

推送指定标签到远程

推送全部未推送到远程的标签

当标签已经被推送到远程,此时想删除

特殊场景

当由于某种情况无法提交,此时又得新建一个分支处理其他事情时,可使用stash功能将工作区的改变先储存起来,等其他事情处理完后再恢复现场。

假设当前master分支的test.txt内容如下:

cat test.txt

this is for git test in master

当前我们在dev分支,且将test.txt内容修改如下:

cat text.txt

this is for git test in dev

但我们还不能提交改变。此时要求我们新建一个新的分支去处理其他事情。

处理方法如下:

储藏工作区的改变

执行后,工作区状态会变成当前分支最新版本的状态,即test.txt内容为"this is for git test in master",之前所做的改变被储藏起来了。

创建新分支区处理其他事情。

处理完后切回dev分支

恢复现场,并将stash内容删除

说明:

修改A文件--->git stash--->再次修改A文件--->git stash

此时git stash list会查到多个stash,可通过git stash apply stash@恢复指定的stash,从而恢复到指定的状态。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180529G1WZSV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券