## 關卡內容：

在你的 <n>fork</n> 新增 <n>branch</n>。

## <n>Branches</n>

Git <n>repositories</n> 用 <n>branches</n> 來隔離進度。當需要跟其他人一起進行專案時，在你完成負責的部份之前，經常需要利用 <n>branch</n> 來保護你對程式所做的修改。如此，你就可以讓主要的 'master' <n>branch</n> 保持穩定，不被未完成的修改影響。等到你完成在 <n>branch</n> 上的修改，就可以把它 <v>merge</v> 回 'master' <n>branch</n>。

在 GitHub Guide 中我們有提供解釋 <n>branches</n> 運作方式的示意圖：guides.github.com/overviews/flow

## GitHub Pages

GitHub 會自動發佈你放在 'gh-pages' <n>branch</n> 裡的靜態檔案，並架設一個網站。由於你 <v>forked</v> 的專案內容是一個網站，所以它的預設 <n>branch</n> 是 'gh-pages' 而不是 'master'。而你會發現這些網站，網址都長得像這樣：

`http://githubusername.github.io/repositoryname`

## 步驟：新增 <n>branch</n>

當你新增 <n>branch</n> 的時候，Git 會拷貝目前 <n>branch</n> 上所有的檔案到新的 <n>branch</n>。

在終端機輸入 `git status` 可以知道目前你在哪個 <n>branch</n>（應該會在 'gh-pages'）。

新增一個 <n>branch</n> 並命名為「add-<username>」，請用你的帳號名稱替換掉 'username'。例如「add-jlord」。<n>Branches</n> 的名字有分大小寫，所以請確定輸入的帳號名稱跟 GitHub 上顯示的一模一樣。

`$ git branch <BRANCHNAME>`

水啦！你擁有了一個全新、內容跟 'gh-pages' 一模一樣的 <n>branch</n>！

就像終端機去另一個資料夾的指令 `cd` 一樣，請 <v>checkout</v> 到剛才新增的 <n>branch</n>：

`$ git checkout <BRANCHNAME>`

## 步驟：新增檔案

接下來我們回到文字編輯器：

- 新增一個檔案並命名為 「add-<USERNAME>.txt」，請用你的帳號名稱替換 'username'，像這樣，「add-jlord.txt」。
- 在檔案裡寫下你的 GitHub 帳號名稱。例如，我就會寫 'jlord'。
- 將檔案存到在 Patchwork 裡的 'contributors' 資料夾： Patchwork/contributors/add-yourusername.txt
- 接著，把你的修改記錄下來！

## 步驟：紀錄

按照以下的步驟，把剛才的修改用 Git 記錄下來：

`$ git status`

`$ git add <FILENAME>`

`$ git commit -m "<commit message>"`

<v>Push</v> 剛才記錄好的修改到 GitHub 上，你 <adj>forked</adj> 的 <n>repository</n> 裡頭：

`$ git push origin <BRANCHNAME>`

{{{verify_directory_button}}}

## `git-it verify` 的時候沒有通過？

#### File NOT in contributors folder

剛才新增的檔案應該要放到 Patchwork <n>repository</n> 的 'contributors' 資料夾裡。如果不小心放到別的地方，請打開 Finder 或是 Windows 的檔案總管將該檔案移到 'contributors' 資料夾，然後可以用 `git status` 看你剛才移動檔案之後所造成的結果。用以下的指令 <v>Stage</v> 並且 <v>commit</v> 全部的修改（加上 -A，會將新增檔案跟刪除檔案的動作一起記錄下來）：

`$ git add -A`

`$ git commit -m "move file into contributors folder"`

#### <n>Branch</n> name expected: _____

<n>Branch</n> 的名字應該要跟你的帳號名稱一模一樣。用以下的指令修改 <n>branch</n> 的名字：

`$ git branch -M <NEWBRANCHNAME>`

完成以上的動作之後，再執行一次 `git-it verify`！

## 撇步

- 只用一個指令就新增並切換到新的 <n>branch</n>
- `$ git checkout -b <BRANCHNAME>`
- 新增 <n>branch</n>
- `$ git branch <BRANCHNAME>`
- 切換到另一個 <n>branch</n>
- `$ git checkout <BRANCHNAME>`
- 列出所有的 <n>branches</n>
- `$ git branch`
- 重新命名目前所在的 <n>branch</n>
- `$ git branch -m <NEWBRANCHNAME>`
- 看目前正在哪個 <n>branch</n>
- `$ git status`