Git小技巧之使用rebase命令合併提交

想要獲取更多文中能夠訪問個人博客 - 代碼無止境git

在平常的開發過程當中,咱們一個功能可能會有不少次提交。並且咱們公司的開發是不容許直接往公司倉庫提交代碼,因此須要fork到本身的倉庫而後merge過去,這樣就會致使拉代碼會產生不少的commit,而這些commit實際上是沒有什麼實際意義的。提交記錄過多會致使代碼review很是困難,那麼今天咱們就來介紹一個很是實用的命令 - git rebase,它能夠將若干次提交合併成一個提交,下面咱們就一塊兒來見證一下這個騷操做吧。shell

準備

首先咱們須要準備一個前提環境: 1.初始化一個git倉庫。bash

mkdir git-test
cd git-test
git init
複製代碼

2.建立一個README.md文件。 3.建立若干個提交(>1)。 咱們執行git log命令會獲得以下結果,一共有三次提交記錄,咱們將經過git rebase命令將後兩個提交合併成一個commit:ui

$ 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 HEAD~3,這裏的HEAD~2表明的合併最近兩次提交,命令執行後會進入到一個vi編輯頁面,以下所示:spa

avatar

2.編輯以後的內容爲:3d

p c953ae9 第二次提交
s 8d27ccf 第三次提交
複製代碼

3.編輯好後,保存(:wq) 4.而後會進入到一個編輯提交信息的界面(vi編輯),我寫的」合併提交」,咱們看最後合併提交的時間和第二次提交的時間一直,表明上面的合併是將第三次提交合併到了第二次提交。 5.保存消息後就執行成功了,咱們再執行如下git log命令查看,會發現以下效果code

$ 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命令
相關文章
相關標籤/搜索