[TOC]
# Branches aren't just for Birds - 建立一个feature branch
## Branches
Git 的 repositories 用 分支 branches来隔离进度。当需要跟其他人一起进行专案时,在你完成负责的部份之前,经常需要利用分支 branch来保护你对程序所做的修改。如此,你就可以让**'master' branch**保持稳定,不被未完成的修改影响。等到你完成在 branch 上的修改,就可以把它 合并 merge 回'master' 分支 branch。
![](https://box.kancloud.cn/f3ff4e658a23f1fe567c96ad56f23fc9_715x299.png)
在GitHub Guide 中我们有提供解释 branches运作方式的示意图:[guides.github.com/overviews/flow](https://guides.github.com/overviews/flow/)
## GitHub Pages
GitHub 会自动发布你放在'gh-pages' branch里的静态档案,并架设一个网站。由于你 forked 的项目内容是一个网站,所以它的预设 branch是'gh-pages' 而不是'master'。而你会发现这些网站,网址都长得像这样:
```
http://githubusername.github.io/repositoryname
```
## 步骤:新增 分支 branch
当你新增 分支 branch 的时候,Git 会拷贝目前 分支 branch 上所有的档案到新的 分支 branch。
在命令行输入`git status`可以知道目前你在哪个分支 branch(应该会在'gh-pages')。
新增一个 分支 branch并命名为`「add-<username>」`,请用你的帐号名称替换掉'username'。例如「add-jlord」。**分支 Branches 的名字有分大小写,所以请确定输入的帐号名称跟GitHub 上显示的一模一样。**
```
$ git branch <BRANCH_NAME>
```
水啦!你拥有了一个全新、内容跟'gh-pages' 一模一样的分支 branch!
就像命令行去另一个文件夹的指令`cd`一样,请 `checkout` 到刚才新增的 分支 branch:
```
$ git checkout <BRANCH_NAME>
```
## 步骤:新增文件
接下来我们回到文字编辑器:
* 新增一个文件并命名为`「add-<USER_NAME>.txt」`,请用你的帐号名称替换'username',像这样,「add-jlord.txt」。
* 在档案里写下你的GitHub 帐号名称。例如,我就会写'jlord'。
* 将档案存到在Patchwork里的'contributors'资料夹:**Patchwork/contributors/add-yourusername.txt**
* 接着,把你的修改记录下来!
## 步骤:记录
按照以下的步骤,把刚才的修改用Git 记录下来:
```
$ git status
$ git add <FILE_NAME>
$ git commit -m "<commit message>"
```
推送 Push 刚才记录好的修改到GitHub 上,你 forked 的 代码库 repository 里头:
```
$ git push origin <BRANCH_NAME>
```
## File NOT in contributors folder
刚才新增的文件应该要放到Patchwork 代码库的'contributors'资料夹里。如果不小心放到别的地方,请打开Finder或是Windows的资源管理器将该文件移到'contributors'资料夹,然后可以用`git status`看你刚才移动文件之后所造成的结果。用以下的指令预备 Stage 并且 提交 commit 全部的修改(加上`-A`,会将新增文件跟删除文件的动作一起记录下来):
```
$ git add -A
$ git commit -m "move file into contributors folder"
```
**分支 Branch name expected: _____**
分支 Branch的名字应该要跟你的帐号名称一模一样。用以下的指令修改分支 branch 的名字:
```
$ git branch -M <NEW_BRANCH_NAME>
```
## Tips
只用一个指令就新增并切换到新的 分支 branch
```
$ git checkout -b <BRANCHNAME>
```
创建新分支 branch
```
$ git branch <BRANCHNAME>
```
切换到另一个 分支 branch
```
$ git checkout <BRANCHNAME>
```
列出所有的 分支 branches
```
$ git branch
```
重新命名目前所在的 分支 branch
```
$ git branch -m <NEWBRANCHNAME>
```
看目前正在哪个 branch 上
```
$ git status
```
- 介绍
- 1. Get Git - 安装并且设置Git
- 2. Repository - 建立一个本地的repository
- 3. Commit to it - 检查状态、新增或修改commits
- 4. GitHubbin - 注册GitHub帐号
- 5. Remote Control - 将repository做本地和远程的连接
- 6. Forks and Clones - Fork和clone一个开源的计划
- 7. Branches aren't just for Birds - 建立一个feature branch
- Git分支开发模型
- 8. It's a Small World - 邀请并和别人合作
- 9. Pull, Never Out of Date - 利用Push和pull来和GitHub.com同步
- 10. Requesting You Pull Please - 建立一个pull request
- 11. Merge Tada - Merge和删除branches
- 学会 GitHub
- GitHub 使用指南
- git 与 github 模板配置
- GitHub Actions
- 实用技巧
- Git Flow
- Submodule子模块
- 工作记录
- 常用命令
- 帮助
- 资源
- 解疑答惑