git合并多次提交為一次提交

在實(shí)際開發(fā)工作中,很少有一次提交git就達(dá)成目標(biāo)的情況,往往是需要多次修改提交,那么多次提交git,在合并到master分支的時(shí)候,會(huì)過于零碎,為了讓代碼提交歷史更加清晰,需要合并這些零零碎碎的提交履歷。

方法一、拉去新的分支,使用squash命令

步驟如下:

a. 在開發(fā)新功能或者修復(fù)bug的時(shí)候,可以從master分支上拉去一個(gè)新的分支,分支名可以用功能名來創(chuàng)建。格式如:master_xxxbug_20200414(從哪個(gè)分支拉去的,什么bug的修復(fù),什么時(shí)候創(chuàng)建的分支)

b. 在新創(chuàng)建的分支,如master_xxxbug_20200414中進(jìn)行開發(fā),期間可以有多次提交。

c. 開發(fā)完成后,并測試通過,確認(rèn)代碼沒有問題后,切換到主分支master,使用命令,如下:

git merge --squash [branch name]

將新創(chuàng)建分支的修改全部合并過來,這個(gè)時(shí)候,代碼只是進(jìn)行了合并,并沒有實(shí)際commit。

d. 使用如下命令,提交合并代碼到本地倉庫,如下:

git commit -m "message"

這樣,就把在分支里做的全部修改合并成一次提交。

e. 合并之后,在把新拉去的分支刪除

總結(jié):

這種情況適用保持master分支提交干凈,不會(huì)出現(xiàn)零碎的提交歷史。多次提交的歷史,分?jǐn)傇诹诵吕サ姆种厦妗?/p>

方法二、使用git rebase命令

步驟如下:

a. 使用git log命令查看提交歷史,按照提交歷史倒排序,即,最近的提交在第一個(gè)。

git 提交歷史

現(xiàn)在要將如下兩個(gè)版本進(jìn)行合并:

a56cfe42c90a92c3d44282e3832c1ddb08b36dab
c7d55944427678101a9827c33de30037de7b410e

b. 使用命令git rebase -i c7d55944427678101a9827c33de30037de7b410e,當(dāng)然也可以使用這個(gè)版本號(hào)的前8位,git rebase -i c7d55944

解釋:
pick 的意思是要執(zhí)行這個(gè) commit
squash 的意思是這個(gè) commit 會(huì)被合并到前一個(gè) commit

c. git 會(huì)壓縮提交歷史,若有沖突,需要進(jìn)行修改,修改的時(shí)候保留最新的歷史記錄,修改完之后輸入以下命令:

git add .
git rebase --continue

若想退出放棄此次壓縮,執(zhí)行命令:

git rebase --abort

d. 若無沖突或沖突已修復(fù),則會(huì)出現(xiàn)一個(gè) commit message 編輯頁面,修改 commit message ,然后 輸入:wq保存退出。

e.同步到遠(yuǎn)程 git 倉庫

git push -f or git push --force

查看遠(yuǎn)程倉庫效果,多次 commit 已被合并成一次 commit。

總結(jié):

git rebase命令可以將多次commit合并,只保留一次提交歷史記錄。但是這種操作比較復(fù)雜,沒有方法一中方便。當(dāng)然,可以按照自己的git使用習(xí)慣來。

?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 以下筆記主要參考gitgot,大致了解git使用和原理。 第一部分我們從個(gè)人的視角去研究如何用好Git,并且揭示G...
    carolwhite閱讀 2,521評(píng)論 0 1
  • Add & Commit git init 初始化一個(gè) Git 倉庫(repository),即把當(dāng)前所在目錄變成...
    冬絮閱讀 5,125評(píng)論 0 9
  • Git飛行規(guī)則(Flight Rules) 前言 英文原版README 翻譯可能存在錯(cuò)誤或不標(biāo)準(zhǔn)的地方,歡迎大家指...
    騎摩托馬斯閱讀 1,680評(píng)論 0 8
  • 配置 首先是配置帳號(hào)信息ssh -T git@github.com # 登陸 github 修改項(xiàng)目中的個(gè)人信息 ...
    guanguans閱讀 814評(píng)論 0 3
  • Git 是目前最流行的分布式版本控制系統(tǒng)之一。 版本控制指的是,記錄每次版本變更的內(nèi)容和時(shí)間等細(xì)節(jié),保留各版本之間...
    神齊閱讀 1,505評(píng)論 0 7

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