Git小技巧之使用Rebase命令合並提交


想要獲取更多文章可以訪問我的博客 - 代碼無止境

在日常的開發過程中,我們一個功能可能會有很多次提交。而且我們公司的開發是不允許直接往公司倉庫提交代碼,所以需要fork到自己的倉庫然后merge過去,這樣就會導致拉代碼會產生很多的commit,而這些commit其實是沒有什么實際意義的。提交記錄過多會導致代碼review非常困難,那么今天我們就來介紹一個非常實用的命令 - git rebase,它可以將若干次提交合並成一個提交,下面我們就一起來見證一下這個騷操作吧。

准備

首先我們需要准備一個前提環境:
1.初始化一個git倉庫。

mkdir git-test
cd git-test
git init

2.創建一個README.md文件。
3.創建若干個提交(>1)。
我們執行git log命令會得到如下結果,一共有三次提交記錄,我們將通過git rebase命令將后兩個提交合並成一個commit:

$ git log
commit 8d27ccf975e5ce4af8fd12fa75534b78fdc5b065 (HEAD -> master)
Author: 碼無止境 <gancy.programmer@gmail.com>
Date:   Sun Jun 16 18:00:57 2019 +0800

    第三次提交

commit c953ae97af01e49d7f0ad959b42b91334a6726f3
Author: 碼無止境 <gancy.programmer@gmail.com>
Date:   Sun Jun 16 18:00:30 2019 +0800

    第二次提交

commit 53407186cedef4be98d6001a69ee33d3a8d745fc
Author: 碼無止境 <gancy.programmer@gmail.com>
Date:   Sun Jun 16 18:00:06 2019 +0800

    第一次提交

合並提交記錄

1.首先我們執行git rebase -i HEAD3,這里的HEAD2代表的合並最近兩次提交,命令執行后會進入到一個vi編輯頁面,如下所示:
合並提交vi編輯界面

2.編輯之后的內容為:

p c953ae9 第二次提交
s 8d27ccf 第三次提交

3.編輯好后,保存(:wq)

4.然后會進入到一個編輯提交信息的界面(vi編輯),我寫的”合並提交”,我們看最后合並提交的時間和第二次提交的時間一直,代表上面的合並是將第三次提交合並到了第二次提交。

5.保存消息后就執行成功了,我們再執行以下git log命令查看,會發現如下效果

$ git log
commit b1ab9f0af528aa96c333b2287c85d06e9fea891b (HEAD -> master)
Author: 碼無止境 <gancy.programmer@gmail.com>
Date:   Sun Jun 16 18:00:30 2019 +0800
    合並提交

    第二次提交

    第三次提交

commit 53407186cedef4be98d6001a69ee33d3a8d745fc
Author: 碼無止境 <gancy.programmer@gmail.com>
Date:   Sun Jun 16 18:00:06 2019 +0800

    第一次提交

合並時的幾個命令介紹

  • pick:正常選中
  • reword:選中,並且修改提交信息;
  • edit:選中,rebase時會暫停,允許你修改這個commit
  • squash:選中,會將當前commit與上一個commit合並
  • fixup:與squash相同,但不會保存當前commit的提交信息
  • exec:執行其他shell命令


免責聲明!

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



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