?🎁個人主頁:我們的五年
🔍系列專欄:Linux網絡編程
🌷追光的人,終會萬丈光芒
🎉歡迎大家點贊👍評論📝收藏?文章
?
相關筆記:
https://blog.csdn.net/djdjiejsn/category_12893502.html
前言:
分布式版本控制系統(Distributed Version Control System,簡稱 DVCS)是一種將代碼倉庫完整地復制到每個開發者本地的版本控制系統。與集中式版本控制系統(如 SVN)不同,分布式版本控制系統中的每個開發者都擁有代碼倉庫的完整副本,包括所有的歷史記錄、分支和標簽等信息。
目錄
1.分支
1.1認識分支:
1.2創建分支:
1.3切換分支
1.4 在分支進行代碼操作
2分支合并
2.1未發生合并沖突的合并:
2.2發生沖突的合并
3.刪除分支:
4.Bug分支
1.分支
1.1認識分支:
在前面就講過每一次提交都會有記錄,有一條線,這是master的主分支。然而,我們還可以創建其他的分支,進行分支操作,分支編寫代碼。
下面就是沒其他其他分支的master分支。
git log --graph --abbrev-commit
1.2創建分支:
git branch進行創建分支,沒有加名字就是查看當前所有的分支,加上就是創建分支
git branch //查看所有的分支
git branch (分支名) //創建分支
比如我查看我現在的分支:
現在只有一個分支:master分支,然后我們創建了dev1,dev2分支。
然后就再次用git branch進行查看分支就有三個了。
* 綠色的就是當前所在的分支。*表示HEAD指向的哪個分支。
1.3切換分支
前面的git checkout -- 是撤銷工作區的修改,撤銷到最近一次的暫存區或者版本庫。
但是不加--的意思就是分支切換了。
git checkout (分支名) //分支切換
此時的HEAD就指向dev1分支了。
1.4 在分支進行代碼操作
我們在dev1分支進行代碼編寫,然后完成一次add,commit操作以后,進行的就是dev分支進行操作。而且在其他分支下是看到這個新增的代碼的。
在dev1新增,并且保存,在master分支,還有dev2分支都是看不到的。
要想在master分支看到,就要在master進行合并。
2分支合并
2.1未發生合并沖突的合并:
使用git merge進行分支合并。
git merge (分支名)
然后我們進行查看,就可以看到dev分支的內容了。
這時候就是正常的合并,沒有出現合并沖突的。
特別注意一下Fast-forward這個,ff合并,不會產生新的commit信息。
下面的最新一次信息還是devcommit產生的信息。
這個用圖示來解釋就是master直接指向dev1分支了。
master直接就指向最新一次的dev1進行的commit。
簡化的就是這樣了:
正常情況下 ,merge如果沒有發生沖突,也沒有寫--no-ff 進行合并,那么就是Fast forward模式進行合并,這種合并不會產生新的commit。這種合并,如果以后把分支刪除了,就分辨不出來這部分是merge到master里面來的,還是正常master,commit提交的。所以我們不建議使用Fast forward模式進行操作。而是每次merge時都要--no-ff,表示不要進行Fast forward模式進行合并。
加上這個選項以后,就要-m "commit描述信息".
這樣就會形成一個新的commit。
2.2發生沖突的合并
這種情況就要手動進行代碼修改,然后再進行一次commit。
Auto-merging file1
CONFLICT (content): Merge conflict in file1
Automatic merge failed; fix conflicts and then commit the result.
提示信息說,自動合并出錯,需要手動fix,然后進行commit最后的結構。
然后我們打開我們的file1
aaaaaaaaaaaaaaaaaa
dev1 add bbbbbbbbb
<<<<<<< HEAD
master master master
=======
dev dev dev dev dev
>>>>>>> dev
<<<<<<<<HEAD到=======是當前分支的內容。
=======到>>>>>>dev是dev分支修改的內容。
然后我們想要怎么修改,我們手動進行修改,再進行commit。
如果沒有發生沖突,也是可以用--no-ff 進行mege形成新的commit的。
3.刪除分支:
當分支合并以后,分支就基本沒用了,我們就可以把分支刪除了,使用的命令是:
git branch -d (已經合并的分支名)
這個只能刪除已經合并的分支。
不能刪除還沒有合并的分支。
刪除沒有合并的分支,要d變為D才能刪除。
git branch -D (未合并的分支名)
4.Bug分支
git stash的作用是保護還沒有commit的工作區和暫存區。
git stash?的主要用途:
臨時保存更改:當你正在開發某個功能或修復某個問題時,突然需要切換到另一個任務,但又不想提交當前未完成的更改。
清理工作區:在切換分支或合并代碼之前,需要清理工作區,但又不想丟失當前的更改。
快速切換任務:在多個任務之間快速切換,而不需要頻繁提交和回滾更改。
//保存當前更改到 Stash
git stash//切換到修復問題的分支
git checkout fix-branch//修復問題并提交
git add .
git commit -m "Fix urgent issue"//切換回原來的分支
git checkout feature-branch//重新應用保存的更改
git stash apply
//將stash放到工作區
git stash pop