本篇文章分享幾個git的命令,本人在代碼託管中,有時候需要用到的命令,雖然並不是常用命令,但是偶爾需要也是很方便的
1、cherry-pick (揀選)
- 簡介:
當一個我們的活動分支(如qa),需要另一個分支(如dev)需要某個提交時,我們在活動分支(如qa)執行git cherry-pick xxx,揀選出(如dev上)這個提交所引入的修改 - 使用場景:
假如我們在dev分支開發一個功能,我們將功能提交到dev上了,但是後面需要將這個功能分到qa上去提測的時候,可在qa分支上cherry-pick揀選出改功能進行修改 -
注意事項:
1、一般揀選出來以後如果有衝突,如沒有特殊情況採用傳入的更改覆蓋即可
2、揀選的時候,同一個文件,在這個揀選點先前的修改也會被揀選出來的,不同文件則不會
2、reset (重置)
2.1 git reset --hard XXX (硬重置)
- 簡介:
有時候我們並不想保留特定提交引入的修改,後續也不需要訪問他,可以就可直接重置到特定提交之前的狀態
硬重置,重置以後,提交記錄不保留 - 使用場景:
錯誤提交一個A功能,需要重置回去提交前的狀態
合併錯誤的時候也可以通過reset還原 - 注意事項:
如果重置的是遠程的提交,重置 完成以後,push需要加上-f,進行強制推送,例如: git push origin dev -f
2.1 git reset --soft XXX (軟重置)
- 簡介:
有時候我們並不想保留特定提交引入的修改,後續也不需要訪問他,可以就可直接重置到特定提交之前的狀態
軟重置,重置以後,移至指定提交,但是修改記錄不會移除 - 使用場景:
錯誤提交一個A功能,但是需要保留部分修改,需要重置回去提交前的修改狀態,進行處理 - 注意事項:
如果重置的是遠程的提交,重置 完成以後,push需要加上-f,進行強制推送,例如: git push origin dev -f
3、revert(撤銷修改)
- 簡介:
撤銷指定提交的修改內容,通過對特定的提交執行還原操作,我們會創建一個包含已還原修改的新提交 - 使用場景:
錯誤提交一個A功能,後續要提交了多個功能其他的功能,這個時候需要撤銷之前的功能A的修改 - 注意事項:
如果revert 的點,後續沒有改同個文件的提交,直接有一個撤銷之前的修改
如果revert 的點,後續存在有改同個文件的提交,則會撤銷後續的修改,存在衝突需要解決
4、commit --amend (修改上一次提交的註釋)
- 簡介:
修改上一次提交的註釋,git commit --amend,然後彈出編輯框修改註釋內容 - 使用場景:
提交一個A功能,但是註釋寫錯啦,又提交了甚至推送到遠程啦,需要修改註釋 - 注意事項:
如果重置的是遠程的提交,重置 完成以後,push需要加上-f,進行強制推送,例如: git push origin dev -f
5、rebase (補充第4點修改指定提交的註釋)
- 簡介:
修改指定提交的註釋,git rebase -i xxx,xxx是我們需要修改提交的上一次提交的header,進入編輯默認,修改提交註釋的pick爲reword,保存,再編輯修改新的註釋內容,保存提交即可 - 使用場景:
提交一個A功能,但是註釋寫錯啦,中間又有其他提交,又提交了甚至推送到遠程啦,需要修改註釋 - 注意事項:
如果重置的是遠程的提交,重置 完成以後,push需要加上-f,進行強制推送,例如: git push origin dev -f
裏面操作還有很多,可以去了解,但不是很推薦用這個,感覺不熟悉風險比較大