Git——分支詳解


  在Git中,假設寫了第一個版本的代碼VI,然后下面又寫了第二個版本的代碼V2,那么V2保留的內容是相對於V1新加的內容,他們之間的關系是V2指向V1。這一條線叫做主干:master

 

 


 

   此時在V2的基礎上,想新加一個功能G1,那么可以在V2的基礎上添加一個分支,這個分支G1是創建了一個新環境來寫的。再比如說此時想添加另外一個新功能G2,我們同樣創建一個分支,這個分支用來寫G2。G1和G2是完全不交涉的。最后如果我們確定G1和G2完成之后,我們只需要將他們合並到主干master上即可。

 


  •   現在我們有這樣的一個版本的代碼:

  •    查看狀態:
git log

 

  •    查看當前所處的分支,我們可以看見現在所處的分支是主干master。
git branch

 

 

  •  現在我們創建一個新分支,用於開發功能G1。然后我們查看分支,發現有兩個分支:一個是當前所處主干master,一個就是剛剛創建的分支G1。
    git branch G1  # 用於創建新分支
    git branch  # 查看當前所處分支

  • 我們切換到分支G1去,然后查看分支,發現現在我們處在G1分支中。

    git checkout G1

  • 現在我們開發功能G1,注意我們現在處於分支G1中。

  

  上圖開發完成之后,我們查看一下狀態,發現文件被修改了,接着添加到git管理,提交到版本控制,最后查看狀態。所以現在我們是在G1這個新的環境中修改代碼。

git status
git add .
git commit -m 'G1'
git log

   

 

 

  •  現在我們切換回到主干master中,所以現在我們處在master中,然后查看剛剛修改的文件,發現剛剛修改的文件不見了,這是因為我們是在G1中修改的,而G1是單獨的一個環境,並且沒有合並到master中。
git checkout master

 

 

 

  •  現在我們創建另外一個分支G2,開發新功能G2。注意此時我們已經切換到主干master中了。
git branch G2
git checkout G2
...開發中
git add .
git commit -m 'G2'

 

 

 

 

   切換到G2之后,我們開發完G2,然后將他提交到版本控制中,並且查看他的狀態,我們發現里面沒有G1,只有G2和V2還有V1,這也再次說明G1和G2是單獨的一個環境,沒有任何交涉,他們都是通過指針指向V2。

 

  •   現在我們覺得G1開發成熟了,此時我們將G1合並到master上。首先我們要切換到master中,這樣我們才能合並。
git checkout master

 

 

   然后我們查看一下狀態,只有V1,V2

 

   接着我們合並G1到master中

git merge G1

 

 

   查看狀態,相對於沒有合並的,現在的主干上多了G1

 

  •  如果確認G1沒有問題之后,我們就可以將分支G1刪掉
git branch -d G1
  •  若G2也開發完畢,這是我們也能夠將G2合並到master中了。依舊切換到master上,然后合並G2
git merge G2

   此時我們發現出現了一個報錯,這說明合並文件出現了沖突。因為我們之前合並過G1,而G1和G2都屬於分支,當兩個分支都合並到master中時,Git不知道如何將他們合並到一起,所以會產生沖突。

  為什么合並G1不會產生沖突了?這是因為合並G1時,沒有其他分支在他之前合並過。

 

   我們查看代碼文件:

 

   此時,我們手動將他們合並

 

   最后我們執行版本控制,將他們提交即可

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM