# git merge 指令
## 參考資料
* [git merge官方API](https://git-scm.com/docs/git-merge)
* [git merge 簡介](http://blog.csdn.net/hudashi/article/details/7664382)
* [合并分支如何簡潔](http://hungyuhei.github.io/2012/08/07/better-git-commit-graph-using-pull---rebase-and-merge---no-ff.html)
## 實踐總結:
* 關于 git merge 與 git rebase的區別請看這個[教程](http://backlogtool.com/git-guide/cn/stepup/stepup1_4.html);
* PS: 不是小需求(半天內能完成的改動)不太建議直接使用merge指令合并分支,因為操作的都是本地分支無法保證待合并的分支(例如上述的branchName分支)是最新;
* 解決: 使用`git pull origin branchName` ,使用遠程 'branchName'分支合并當前分支;(git pull 指令會包含git merge操作)
## git merge 常用指令:
* git merge branchName
* 將當前分支 與 **本地** 叫“branchName”分支的代碼合并(branchName代碼合并到當前分支);
* git merge --no-ff branchName
* 將當前分支 與 **本地** 叫“branchName”分支的代碼合并(branchName代碼合并到當前分支),并且顯示合并細節,具體表現在 提交線路圖會出現交叉線;
* git merge --squash branchName
* 合并新分支代碼時, 只將分支新改動放入暫存區,不產生commit;(合并分支減少commit)
# 實踐場景:
* 1.分支testMerge 是基于master的分支;此時將master的代碼備份下;
* 2.分支testMerge 分別修改兩次, 然后改完都合并到master;master 提交該改動;
* 3.將1中master備份的代碼覆蓋master, 然后提交代碼;
* 4.此時再次將 分支testMerge代碼git merge合并到master分支,發現其沒變化了!
* 怎樣讓步驟4代碼有變化? 查看了下git merge --help 也沒發現合適的指令;
* 總結:操作文件盡量別脫離git(例如上述步驟3,完全可以用git指令實現相同效果);
## 相關指令:
* [git_branch.md](https://github.com/wteam-xq/testGit/blob/master/learn_log/git_branch.md) 分支相關操作指令: 跟`git merge`有關的也就我這個指令吧?
* [git_pull.md](https://github.com/wteam-xq/testGit/blob/master/learn_log/git_pull.md) 更新、合并指令: 這個指令是我小弟,合并分支直接找我就行!
* [git_rebase.md](https://github.com/wteam-xq/testGit/blob/master/learn_log/git_rebase.md) 合并其他分支代碼指令: 其實我也可以合并其他分支代碼的!