Git如何合并多次提交
Git合并多次提交
有時(shí)候需要合并幾個(gè)提交歷史記錄為一個(gè)提交,該怎么辦呢?可以使用 git rebase
!
也可以使用 git reset --soft 或者 git reset --mixed
將多次commit合并為一次commit,可以通過git rebase命令實(shí)現(xiàn)
查看歷史,確定要合并的提交
git log? 或者? ?git log --oneline?
注意:不要合并了其他人的提交,不要合并了其他人的提交,不要合并了其他人的提交
ATTENTION: Do not merge others' commit! Do not merge others' commit! Do not merge others' commit!
git rebase -i *****
其中 ***** 為不需要合并的提交。其中,-i 的參數(shù)是不需要合并的 commit 的 hash 值。
也可以使用相對(duì)提交,例如我需要合并最近2次提交可以使用(倒數(shù)第三次之后的提交會(huì)合并,不合并第三次)
git?rebase? -i? HEAD^^^
下面進(jìn)入編輯頁(yè)面,選擇合并到哪個(gè)提交上
pick
的意思是要執(zhí)行這個(gè)commit
squash
的意識(shí)是這個(gè)commit
會(huì)被合并到前一個(gè)commit
編輯完保存退出
若無沖突或者沖突已 fix,則會(huì)出現(xiàn)一個(gè) commit message
編輯頁(yè)面,修改 commit message ,然后保存退出。Successfully表示操作成功。
中間可能會(huì)出現(xiàn)的情況
git 會(huì)壓縮提交歷史,若有沖突,需要進(jìn)行修改,修改的時(shí)候保留最新的歷史記錄,修改完之后輸入以下命令:
git add . git rebase --continue
若想退出放棄此次壓縮,執(zhí)行命令:
git rebase --abort
同步到遠(yuǎn)程 git 倉(cāng)庫(kù)
輸入:git push -f
或者 git push --force
查看遠(yuǎn)程倉(cāng)庫(kù)效果,多次 commit 已被合并成一次 commit。
Git_合并多次提交記錄
使用git rebase將多條提交記錄合并成一條
應(yīng)用場(chǎng)景
公司代碼分支在master上,張三接到一個(gè)開發(fā)任務(wù),需要在master上開發(fā)一個(gè)新功能,首先張三不能直接使用master分支進(jìn)行開發(fā),因?yàn)閺埲拈_發(fā)過程沒必要存在于公司主分支master上面,正確的做法是張三新建一個(gè)dev分支,張三git merge master獲取到master分支上的最新代碼,然后張三所有的開發(fā)都在這個(gè)dev分支上,開發(fā)完成后把dev分支上的所有過程打包成一條記錄,再推到主分支上。
1、在dev分支上查看已經(jīng)開發(fā)了6條記錄了,我們需要把這6條記錄合并起來
2、git rebase -i db2c1c847c80ca4943ea04a49ccdf2e95b307b1a
這個(gè)是git的默認(rèn)編輯器(vim)首先點(diǎn)擊i進(jìn)入編輯模式(最下面出現(xiàn)-- INSERT --)
把這6條記錄的其中五條都屏蔽掉,只保留一個(gè)
然后按esc鍵退出編輯模式,按shift+;進(jìn)入命令輸入模式,輸入wq保存退出
3、合并之后的記錄使用的commit,同樣也是屏蔽5個(gè)保留一個(gè)
4、當(dāng)出現(xiàn)Successfully rebased and updated refs/heads/dev.表示合并成功了
5、回到master分支,把dev分支merge到主分支就好了,然后git log檢查一下看到就剩一條記錄了
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Python解決Windows文件名非用反斜杠問題(python 小技巧)
要想讓你的 Python 代碼同時(shí)在 Windows 和 Mac/Linux 上工作,你需要處理不同系統(tǒng)文件名用不同斜杠的問題。而 Python 3 有一個(gè)名為「pathlib」的新模塊,可以幫你解決這個(gè)麻煩,需要的朋友可以參考下2019-11-11vscode檢測(cè)到#include錯(cuò)誤請(qǐng)更新includePath的解決方法
這篇文章主要介紹了vscode檢測(cè)到#include錯(cuò)誤請(qǐng)更新includePath的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08快速設(shè)置IDEA代碼風(fēng)格為Google風(fēng)格
這篇文章主要介紹了快速設(shè)置IDEA代碼風(fēng)格為Google風(fēng)格,使用Google風(fēng)格format的圖文教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-11-11WebSocket部署服務(wù)器但外網(wǎng)無法連接的解決方法
WebSocket是html5新增加的一種通信協(xié)議,目前流行的瀏覽器都支持這個(gè)協(xié)議,例如Chrome,Safari,Firefox,Opera,IE等等,下面這篇文章主要給大家介紹了關(guān)于WebSocket部署服務(wù)器但外網(wǎng)無法連接的解決方法,需要的朋友可以參考下。2017-10-10Git 教程之創(chuàng)建倉(cāng)庫(kù)詳解
本文主要介紹Git 創(chuàng)建倉(cāng)庫(kù)的知識(shí),這里整理了相關(guān)資料及簡(jiǎn)單示例代碼,幫助大家學(xué)習(xí)理解此部分的知識(shí),有興趣的小伙伴可以參考下2016-09-09關(guān)于base64編碼的原理及實(shí)現(xiàn)方法分享
我們的圖片大部分都是可以轉(zhuǎn)換成base64編碼的data:image。 這個(gè)在將canvas保存為img的時(shí)候尤其有用2012-03-03