切换一个本地分支

现在我们得到了一个干净的工作副本,第一件事就是要切换到,或者说 “签出(check out)” 那个新建的分支上去:

$ git checkout contact-form
概念

签出(Checkout),HEAD,和你的工作副本(Working Copy)

分支会自动指向最后一次的提交。而且,一个提交也对应项目中的一个特定版本,Git 总是非常地清楚定位哪些文件属于该分行。

在这个时间点,仅仅有一个分支被指向 HEAD,或者说仅仅有一个被签出(checked out)的活动分支。在你的工作副本上的文件都会被关联在这个分支上。所有其它的分支以及它们的关联文件都被安全地保存在 Git 的数据库中了。

指定另外一个分支为活动分支(比如我们之前建立的 “contact-form” ),可以使用 “git checkout” 命令。 这个命令会为我们完成两件事:

  • (a) 它会让 HEAD 指针指向这个 “contact-form” 分支。
  • (b) 它会替换你工作目录(working directory)中的所有文件,并且完全匹配它们的版本到 “contact-form”。

再执行一下 “git status” 命令,你将看到我们现在已经切换到分支 “contact-form” 上了。从现在开始我们所有的改动和提交都将只适用于这个分支,直到我们再次使用 “checkout” 命令切换到其它分支上去。

让我们来验证一下。建立一个新的文件并且命名为 “contact.html” 然后提交它:

$ git add contact.html
$ git commit -m "Add new contact form page"
$ git log
commit 56eddd14cf034f4bcb8dc9cbf847b33309fa5180
Author: Tobias Günther <support@learn-git.com>
Date: Fri Jul 26 10:56:16 2013 +0200

    Add new contact form page

commit 2dfe283e6c81ca48d6edc1574b1f2d4d84ae7f1
Author: Tobias Günther <support@learn-git.com>
Date: Fri Jul 26 10:52:04 2013 +0200

    Implement the new login box

commit 2b504bee4083a20e0ef1e037eea0bd913a4d56b6
Author: Tobias Günther <support@learn-git.com>
Date: Fri Jul 26 10:05:48 2013 +0200

    Change headlines for about and imprint

注意观察这个日志信息,你会看到那个新提交的文件被正确保存下来了,到目前为止这并没有什么特别的。但是现在让我们切换回 “master” 分支,并且再来观察下一个它的日志信息:

$ git checkout master
$ git log
commit 2dfe283e6c81ca48d6edc1574b1f2d4d84ae7f1
Author: Tobias Günther <support@learn-git.com>
Date: Fri Jul 26 10:52:04 2013 +0200

    Implement the new login box

commit 2b504bee4083a20e0ef1e037eea0bd913a4d56b6
Author: Tobias Günther <support@learn-git.com>
Date: Fri Jul 26 10:05:48 2013 +0200

    Change headlines for about and imprint

你会发现到那个注释为 “Add new contact form page” 的提交并不在这里,这是因为我们操作仅仅只针对于当时的那个 HEAD 分支(当时的 HEAD 分支应该是 “contact-form”,而不是 “master" )。这正是我们想要的结果,我们的改动应该仅仅保持在它对应的分支环境中,并不会影响其他的分支环境。

Get our popular Git Cheat Sheet for free!

About Us

As the makers of Tower, the best Git client for Mac and Windows, we help over 100,000 users in companies like Apple, Google, Amazon, Twitter, and Ebay get the most out of Git.

Just like with Tower, our mission with this platform is to help people become better professionals.

That's why we provide our guides, videos, and cheat sheets (about version control with Git and lots of other topics) for free.