美文网首页
Git14-分支创建&切换分支

Git14-分支创建&切换分支

作者: 我相信你爱过gg | 来源:发表于2017-01-16 22:36 被阅读193次

每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向mastermaster才是指向提交的,所以,HEAD指向的就是当前分支。

一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:

每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长:参考视频

当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:

你看,Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化!

不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变:

创建分支

$ git checkout -b dev
Switched to a new branch 'dev'

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

$ git branch dev

切换分支

要切换到一个已存在的分支,你需要使用git checkout命令。 我们现在切换到新创建的dev分支去:

$ git checkout dev

这样HEAD就指向testing分支了。

HEAD 指向当前所在的分支

然后,用git branch命令查看当前分支:

$ git branch
* dev
  master

git branch命令会列出所有分支,当前分支前面会标一个*号。

然后,我们就可以在dev分支上正常提交,比如对readme.txt做个修改,加上一行:

Creating a new branch is quick.

然后提交:

$ git add readme.txt 
$ git commit -m "branch test"
[dev fec145a] branch test
 1 file changed, 1 insertion(+)
HEAD 分支随着提交操作自动向前移动

如图所示,你的testing分支向前移动了,但是master分支却没有,它仍然指向运行git checkout时所指的对象。 这就有意思了,现在我们切换回master分支看看:

$ git checkout master
检出时 HEAD 随之移动

这条命令做了两件事。 一是使HEAD指回master分支,二是将工作目录恢复成master分支所指向的快照内容。 也就是说,你现在做修改的话,项目将始于一个较旧的版本。 本质上来讲,这就是忽略testing 分支所做的修改,以便于向另一个方向进行开发。

分支切换会改变你工作目录中的文件
在切换分支时,一定要注意你工作目录里的文件会被改变。 如果是切换到一个较旧的分支,你的工作目录会恢复到该分支最后一次提交时的样子。 如果 Git 不能干净利落地完成这个任务,它将禁止切换分支。

我们不妨再稍微做些修改并提交:

$ vim test.rb
$ git commit -a -m 'made other changes'

现在,这个项目的提交历史已经产生了分叉。 因为刚才你创建了一个新分支,并切换过去进行了一些工作,随后又切换回 master 分支进行了另外一些工作。 上述两次改动针对的是不同分支:你可以在不同分支间不断地来回切换和工作,并在时机成熟时将它们合并起来。 而所有这些工作,你需要的命令只有branchcheckoutcommit

项目分叉历史

相关文章

  • Git14-分支创建&切换分支

    每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫...

  • git分支管理

    查看分支: 创建分支: 切换分支: 创建+切换分支: 合并某分支到当前分支: 删除分支:

  • git分支管理常用命令

    创建分支: 切换分支: 创建并切换分支 创建远程分支到本地: 查看当前分支: 获取所有分支: 合并某分支到当前分支...

  • Git 分支

    创建分支 git branch <分支名> 切换分支 git checkout <分支名> 创建同时切换分支(合并...

  • Git(三)——Branch分支

    创建分支 查看分支 切换分支 创建并切换分支 删除本地(合并)分支: 删除本地(未合并)分支: 删除远程分支 分支...

  • 创建与合并分支

    查看分支:git branch 创建分支:git branch 切换分支:git checkout 创建+切换分支...

  • 【操作】git版本控制流入门命令FQ#1

    查看分支:git branch -a创建分支:git branch切换分支:git checkout创建+切换分支...

  • git分支(branch)和标签(tag)操作

    分支相关操作 查看分支 创建分支 切换分支 创建+切换分支 合并某分支到当前分支 删除本地分支 删除远程分支 标签...

  • git命令 — 创建、切换、提交、删除分支

    查看分支 创建本地分支 切换本地分支 创建本地分支并切换 提交本地分支到远程 删除分支 checkout远程分支,...

  • Git 日常记录常见问题 (四)

    创建分支: 切换分支: 创建并切换分支: 更新master主线上的东西到该分支上: 切换到master分支: 更新...

网友评论

      本文标题:Git14-分支创建&切换分支

      本文链接:https://www.haomeiwen.com/subject/dsbpbttx.html