# 切換一個本地分支
現在我們得到了一個干凈的工作副本,第一件事就是要切換到,或者說 “簽出(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" )。這正是我們想要的結果,我們的改動應該僅僅保持在它對應的分支環境中,并不會影響其他的分支環境。
- Learn Version Control with Git 中文版
- 前言
- Part 1 - 基礎知識
- 什么是版本控制?
- 為什么要使用版本控制系統?
- 準備工作
- 版本控制的基本工作流程
- 從一個未被納入版本控制的項目開始
- 從一個已被納入版本控制的項目開始
- 工作在你的項目上
- Part 2 - 分支與合并
- 分支可以改變你的生命
- 在分支上工作
- 暫時保存更改
- 切換一個本地分支
- 合并改動
- 分支的工作流程
- Part 3 - 遠程倉庫
- 關于遠程倉庫
- 連接一個遠程倉庫
- 查看遠程數據
- 整合遠程的改動
- 發布一個本地分支
- 刪除分支
- Part 4 - 高級應用
- 撤銷操作
- 用 diff 來檢查改動
- 處理合并沖突
- Rebase 代替合并
- 子模塊
- git-flow 的工作流程
- 使用 SSH 公鑰驗證
- Part 5 - 工具與服務
- 桌面應用程序
- 比較和整合工具
- 代碼托管服務
- 更多學習資源
- 附錄
- 版本控制的最佳實踐
- 命令 101
- 從 Subversion 過渡到 Git
- 為什么選擇 Git