Git 學(xué)習(xí)筆記(分支篇)

查看分支信息

git branch
git branch 命令會(huì)列出所有分支,當(dāng)前分支前面會(huì)標(biāo)一個(gè)*號(hào),效果如下所示:
anyang@anyang:~/anyang/learngit$ git branch
* master

創(chuàng)建分支

git branch <name>

效果如下圖所示:

anyang@anyang:~/anyang/learngit$ git branch test
anyang@anyang:~/anyang/learngit$ git branch

  • master
    test

git checkout 命令加上 -b 參數(shù)表示創(chuàng)建并切換分支,例如:git checkout -b <name>,效果如下所示:

anyang@anyang:~/anyang/learngit$ git checkout -b test1
Switched to a new branch 'test1'
anyang@anyang:~/anyang/learngit$ git branch
master
test
* test1

切換分支

git checkout <name>

效果如下所示:

anyang@anyang:~/anyang/learngit$ git branch
master
test
* test1
anyang@anyang:~/anyang/learngit$ git checkout test
Switched to branch 'test'
anyang@anyang:~/anyang/learngit$ git branch
master
* test
test1

合并指定分支到當(dāng)前分支

git merge <name>

合并分支時(shí),加上--no-ff 參數(shù)就可以用普通模式進(jìn)行合并,即合并后的歷史能夠看出曾經(jīng)發(fā)生過(guò)合并,默認(rèn)情況下,Git 采用 fast forward 方式進(jìn)行分支合并,即通過(guò)指針移動(dòng)完成的分支合并,因此看不出曾經(jīng)發(fā)生過(guò)合并,效果圖如下所示:

anyang@anyang:~/anyang/learngit$ git branch
master
* test
test1
anyang@anyang:~/anyang/learngit$ vim README.md
anyang@anyang:~/anyang/learngit$ cat README.md
Hello, world!
I am test.
anyang@anyang:~/anyang/learngit$ git add README.md
anyang@anyang:~/anyang/learngit$ git commit -m "Add I am test"
[test 026803a] Add I am test
1 file changed, 1 insertion(+)
anyang@anyang:~/anyang/learngit$ git checkout master
Switched to branch 'master'
anyang@anyang:~/anyang/learngit$ git branch

  • master
    test
    test1
    anyang@anyang:~/anyang/learngit$ cat README.md
    Hello, world!
    anyang@anyang:~/anyang/learngit$ git merge test
    Updating 513dec6..026803a
    Fast-forward
    README.md | 1 +
    1 file changed, 1 insertion(+)
    anyang@anyang:~/anyang/learngit$ cat README.md
    Hello, world!
    I am test.

刪除指定分支

git branch -d <name>

如果要?jiǎng)h除一個(gè)沒(méi)有被合并過(guò)的分支,可以通過(guò)git branch -D <name>強(qiáng)行刪除,效果圖如下所示:

anyang@anyang:~/anyang/learngit$ git branch
* master
test
test1
anyang@anyang:~/anyang/learngit$ git branch -d test
Deleted branch test (was 026803a).
anyang@anyang:~/anyang/learngit$ git branch
* master
test1
anyang@anyang:~/anyang/learngit$ git checkout test1
Switched to branch 'test1'
anyang@anyang:~/anyang/learngit$ vim README.md
anyang@anyang:~/anyang/learngit$ cat README.md
Hello, world!
I am test1.
anyang@anyang:~/anyang/learngit$ git add README.md
anyang@anyang:~/anyang/learngit$ git commit -m "Add I am test1"
[test1 2cc6751] Add I am test1
1 file changed, 1 insertion(+)
anyang@anyang:~/anyang/learngit$ git checkout master
Switched to branch 'master'
anyang@anyang:~/anyang/learngit$ git branch -d test1
error: The branch 'test1' is not fully merged.
If you are sure you want to delete it, run 'git branch -D test1'.
anyang@anyang:~/anyang/learngit$ git branch -D test1
Deleted branch test1 (was 2cc6751).
anyang@anyang:~/anyang/learngit$ git branch
* master

查看分支合并圖

git log --graph --pretty=oneline --abbrev-commit

假設(shè)我們新建分支 branch1,并添加“Hello, branch1.”到 README.md 文件,緊接著切換到 master 分支,添加“Hello, master.”到 README.md 文件,然后合并 branch1 分支到 master 分支,發(fā)生了沖突,通過(guò)查看沖突文件 README.md,修改 master 分支的文件和 branch1 分支相同,再重新合并即可,效果如下圖所示:

anyang@anyang:~/anyang/learngit$ git branch
* master
anyang@anyang:~/anyang/learngit$ cat README.md
Hello, world!
anyang@anyang:~/anyang/learngit$ git checkout -b branch1
M README.md
Switched to a new branch 'branch1'
anyang@anyang:~/anyang/learngit$ vim README.md
anyang@anyang:~/anyang/learngit$ git add README.md
anyang@anyang:~/anyang/learngit$ git commit -m "Add Hello, branch1"
[branch1 e9d1cb7] Add Hello, branch1
1 file changed, 1 insertion(+), 1 deletion(-)
anyang@anyang:~/anyang/learngit$ cat README.md
Hello, world!
Hello, branch1.
anyang@anyang:~/anyang/learngit$ git checkout master
Switched to branch 'master'
anyang@anyang:~/anyang/learngit$ vim README.md
anyang@anyang:~/anyang/learngit$ cat README.md
Hello, world!
Hello, master.
anyang@anyang:~/anyang/learngit$ git add README.md
anyang@anyang:~/anyang/learngit$ git commit -m "Add Hello, master"
[master 16a1460] Add Hello, master
1 file changed, 1 insertion(+), 1 deletion(-)
anyang@anyang:~/anyang/learngit$ git merge branch1
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
anyang@anyang:~/anyang/learngit$ git status
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: README.md
no changes added to commit (use "git add" and/or "git commit -a")
anyang@anyang:~/anyang/learngit$ vim README.md

snapshot.png

anyang@anyang:~/anyang/learngit$ vim README.md
anyang@anyang:~/anyang/learngit$ cat README.md
Hello, world!
Hello, branch1.
anyang@anyang:~/anyang/learngit$ git add README.md
anyang@anyang:~/anyang/learngit$ git commit -m "conflict fixed"
[master 44d9f6f] conflict fixed
anyang@anyang:~/anyang/learngit$ git merge branch1
Already up-to-date.
anyang@anyang:~/anyang/learngit$ git log --graph --pretty=oneline --abbrev-> > commit
* 44d9f6f conflict fixed
|\
| * e9d1cb7 Add Hello, branch1
* | 16a1460 Add Hello, master
|/
* 026803a Add I am test
* 513dec6 Add Hello, world!
* 72f8209 Add README.md

相關(guān)資料:

  1. Git 官網(wǎng)
  2. Git 官方文檔
  3. [廖雪峰的 Git 教程](http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8
    067c8c017b000)
  4. Git 常用命令查詢(xún)文檔
  5. Git 在線學(xué)習(xí)網(wǎng)址
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,852評(píng)論 9 163
  • 微微人生…… 套著游泳圈的看赤膊劃水的有風(fēng)險(xiǎn), 站在小船上看套著游泳圈的有風(fēng)險(xiǎn), 坐在大船上看站在小船上的有風(fēng)險(xiǎn),...
    _郭永山_閱讀 314評(píng)論 0 0
  • 告別了史詩(shī)一般的《刺客信條2》三部曲,Ezio也在《余燼》短片中于圣母百花大教堂門(mén)前安詳?shù)厮廊?。沒(méi)有人知道下一部的...
    不厭其談閱讀 716評(píng)論 1 1
  • 我心中的,圓圓的你 我腦海,彎彎的,瑩亮凈明的你 我的深藍(lán)的星空中,最亮的你 你看到的,異土中的,灰塵蒙住了綠色的...
    寧羨魚(yú)閱讀 285評(píng)論 0 2

友情鏈接更多精彩內(nèi)容