三.分支与合并


简而言之,你可以执行 git branch (branchname) 来创建分支, 使用 git checkout (branchname) 命令切换到该分支,在该分支的上下文环境中, 提交快照等,之后可以很容易地来回切换。当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。使用 git merge 来合并分支。你可以多次合并到统一分支, 也可以选择在合并之后直接删除被并入的分支。

git branch 列出、创建与管理工作上下文    git checkout 切换到新的分支上下文

git branch 列出可用的分支

没有参数时,git branch 会列出你在本地的分支。你所在的分支的行首会有个星号作标记。 如果你开启了彩色模式,当前分支会用绿色显示。

$ git branch
* master
 在这里,我们有一个叫做“master”的分支,并且该分支是当前分支。 当你执行 git init 的时候,缺省情况下 Git 就会为你创建“master”分支。 但是这名字一点特殊意味都没有 —— 事实上你并不非得要一个叫做“master”的分支。 不过由于它是缺省分支名的缘故,绝大部分项目都有这个分支。

git branch + branchname 创建新分支

我们动手创建一个分支。执行 git branch + branchname 即可。

$ git branch testing
$ git branch
* master testing

现在我们可以看到,有了一个新分支。当你以此方式在上次提交更新之后创建了新分支,如果后来又有更新提交, 然后又切换到了“testing”分支,Git 将还原你的工作目录到你创建分支时候的样子 —— 你可以把它看作一个记录你当前进度的书签。

git checkout -b (branchname) 创建新分支,并立即切换到它

通常情况下,你会更希望立即切换到新分支,从而在该分支中操作,然后当此分支的开发日趋稳定时, 将它合并到稳定版本的分支(例如“master”)中去。 执行 git branch newbranch; git checkout newbranch 也很简单, 不过 Git 还为你提供了快捷方式:git checkout -b newbranch。

$ git branch * master 
$ ls README   hello.rb more.txt test.txt 
$ git checkout -b removals Switched to a new branch 'removals' 
$ git rm more.txt  rm 'more.txt' 
$ git rm test.txt  rm 'test.txt' 
$ ls README   hello.rb 
$ git commit -am 'removed useless files' 
[removals 8f7c949] removed useless files
 2 files changed, 0 insertions(+), 2 deletions(-)
 delete mode 100644 more.txt
 delete mode 100644 test.txt 
$ git checkout master 
Switched to branch 'master' 
$ ls README   
hello.rb more.txt test.txt

如你所见,我们创建了一个分支,在该分支的上下文中移除了一些文件,然后切换回我们的主分支,那些文件又回来了。 使用分支将工作切分开来,从而让我们能够在不同上下文中做事,并来回切换。

git branch -d (branchname) 删除分支

假设我们要删除一个分支(比如上例中的“testing”分支,该分支没啥特殊的内容了), 可以执行 git branch -d (branch) 把它删掉。

$ git branch 
* master testing 
$ git branch -d testing 
Deleted branch testing (was 78b2670).

git merge 将分支合并到你的当前分支

一旦某分支有了独立内容,你终究会希望将它合并回到你的主分支。 你可以使用 git merge 命令将任何分支合并 到当前分支中去。 我们那上例中的“removals”分支为例。假设我们创建了一个分支,移除了一些文件,并将它提交到该分支, 其实该分支是与我们的主分支(也就是“master”)独立开来的。 要想将这些移除操作包含在主分支中,你可以将“removals”分支合并回去。

$ git branch * master removals 
$ ls README   hello.rb more.txt test.txt 
$ git merge removals 
Updating 8bd6d8b..8f7c949
Fast-forward
 more.txt |    1 -
 test.txt |    1 -
 2 files changed, 0 insertions(+), 2 deletions(-)
 delete mode 100644 more.txt
 delete mode 100644 test.txt $ ls README   hello.rb












  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值