分支与 tag

分支

分支的本质

分支可以简单的理解为一个指针,指向某个提交。而每个提交都记录了它的父提交,从而形成了一个链表。当某个分支上不断产生提交时,分支指向的提交就会发生改变,不断向后移动,相当于这个链表在不断延长。

查看分支

  1. 输入 gb,它会展示所有本地分支,等价于命令 git branch, 输入命令 gbv 可以额外显示每个分支的最后一次提交和这个分支跟踪的远程分支,等价于命令 git branch -vv
  2. 输入 gb branch_name 表示创建一个分支,指向当前提交,gb branch_name commit 表示新建一个分支并指向某个 commit,注意这两个命令都不会切换分支。
  3. 输入 gba,查看本地和远程分支,等价于命令 git branch -a,输入命令 gbr,查看远程分支,等价于命令 git branch --remote

删除分支

  1. 输入 gbd branch_name 删除某个分支,等价于命令 git branch -d
  2. 并非所有分支都可以通过 gbd 命令删除,可以通过 git branch --merged 来查看已经合入到某个指针(默认是 HEAD)的分支,换句话说是可以通过这个指针回溯到的分支。这个命令也简写为 gbm
  3. gbm 列出的分支都是可以抵达的,因此可用 gbd 删除,而 gbnm 列出的则是不可达的分支,因此不能用 gbd 删除,它是 git branch --no-merged 命令的简写
  4. 如果真的要强行删除,可以用 gbD 命令,它是 git branch -D 的简写

切换分支

  1. 输入 gco branch 可以 checkout 到某个分支上,等价于命令 git checkout,注意如果有未提交的改动,请不要切换分支。
  2. 输入 gcb new_branch 可以创建分支 new_branch 并切换到这个分支上,它是 git checkout -b 命令的缩写,等价于 git branch new_branchgit checkout new_branch 这两条命令

有时候我们要从远程仓库检出一个新的分支,比如叫 feature 吧,有几种思路:

git branch -t feature origin/feature
git checkout -b feature origin/feature
git checkout --track origin/feature

第一种写法不太合适,因为它只会创建分支并且跟踪远程分支,并不会切换。我想一般创建分支的时候都是需要切换的,否则你创建它干嘛呢,可以等到要切换的时候再创建呐。

第二种写法稍微高级些,它和第一种写法一致并且可以切换分支,之前的 tips 中介绍过 gcb 后面加单个参数的含义和用法,这里第二个参数表示跟着远程分支。

第三中方法最简单,因为它参数少,而且功能和第二种写法一样,我给他起的别名叫 gct,对应 git checkout --track

如果想为当前分支设置跟踪的远程分支,输入 gtrack 即可,不需要携带参数,它会自动让当前分支跟踪远程的同名分支

Tag

标签是分支功能的子集,可以理解为不能移动的分支。前文说过,分支始终指向某个链表的开端,是可以移动的。但 Tag 始终指向某个固定的提交,不会移动。

使用 gco 同样可以切换到某个分支上。其他常用命令如下:

  1. 使用命令 gt tag_name 可以打 tag,它是 git tag 命令的缩写。
  2. 使用命令 gtd tag_name 可以删除本地 tag,它是 git tag -d 命令的缩写

results matching ""

    No results matching ""