Git 之 互動式 rebase

2021-09-14 03:04:16 字數 2931 閱讀 8602

使用 git rebase -i

可以進入互動式模式,可以對某一範圍內的提交 進行重新編輯

預設情況下,直接使用 git rebase -i 命令的操作物件為自最後一次從 origin 倉庫拉取或者向 origin 推送之後的所有提交。

假設我要把 master 上紅色區域的分支合併成乙個提交

首先找到起始 commit 的 前乙個,也就是865b2ac,rebase 會顯示當前分支從這個 comimt 之後的所有 commit。

這些資訊表示從865b2accommit 操作後有 4 個提交。每個提交都用一行來表示,按時間順序展示,首行是最早的提交,末行是最新的提交,行格式如下:

(action) (partial-sha) (short commit message)
當修改這個檔案後,git 會依次把這些 commit 按照 action 重新執行。action 有很多種,預設都是pick,即使用該 commit,不作任何修改。

我們現在想把後三個提交合併到第乙個中去,這裡需要用到squash,該 action 表示 使用該提交,但是把它與前一提交合併,所以只需把後四個的 action 改為 squash 即可。

儲存之後,會喚出編輯器提示基於歷史的提交資訊建立乙個新的提交資訊,也就是需要使用者編輯一下合併之後的 commit 資訊,更改提示資訊並儲存即可。

合併完之後的歷史記錄:

如果想把某個 commit 拆分成多個 commit,可以使用edit作為 action,edit 表示使用該提交,但是先在這一步停一下,等我重新編輯完再進行下一步。

初始狀態如下:

just add a new line這個 commit 修改了兩個檔案myfile.txtanothorfile.txt,我們希望把它拆成兩個 commit,每個檔案的修改各提交乙個 commit

執行git rebase -i 13243ea,然後修改865b2ac這個 commit 的 action 為edit

儲存並退出後,git 會提示在865b2ac上停止了

➜  git rebase -i 13243ea

stopped at 865b2ac... just add a new line

you can amend the commit now, with

git commit --amend

once you are satisfied with your changes, run

git rebase --continue

這裡可以使用git commit --amend命令對 commit 資訊進行重新編輯(什麼是 git commit --amend)

我們這裡是要拆分 commit,所以要先對 commit 內容 reset,然後重新提交

➜  git reset head^ # 撤銷提交

unstaged changes after reset:

m myfile.txt

m anotherfile.txt

➜ git add myfile.txt # 拆解出第乙個提交

➜ git commit -m 'first part of split commit'

[detached head d0727f7] first part of split commit

1 file changed, 1 insertion(+)

➜ git add anotherfile.txt # 拆解出第二個提交

➜ git commit -m 'second part of split commit'

[detached head 2302fc7] second part of split commit

1 file changed, 1 insertion(+)

create mode 100644 anotherfile.txt

➜ git rebase --continue

successfully rebased and updated refs/heads/master.

拆分完成後使用git rebase --continue即結束 rebase,結果如下:

如果想刪除某個提交,使用 git rebase -i 後直接在編輯器中刪除那一行 commit 即可

假設刪除的是 commit 2,那麼編輯完成後 git 會比較 commit 1 與 commit 3 的差異,如果有衝突,需要手動解決衝突後 add 並git rebase --continue

Altium Designer 筆記之互動式布局

你可以利用該功能先幫你按原理圖的電路功能塊來進行粗分,最後再來細布局這樣可以大大提高你的布局效率。為了演示需要我們可以先將螢幕垂直分割成兩個顯示區 ad10 支援多顯示器顯示 單擊 window tilevertically 選單可使當前的螢幕分割成兩個顯示區,注意在應用該命令前確保當前只開啟了一張...

HTML之互動式表單

首先來了解一下瀏覽器提交表單與伺服器的互動過程,如下圖所示 1 使用 method 用於指定向伺服器傳送表單資料時所使用的http方法,可以使get或post兩種方法中的一種,get是預設的方法。當採用get方法提交表單時,提交的資料被附加到url的末端,作為url的一部分傳送到伺服器端。而post...

git互動式新增

互動式新增提供友好的介面去操作 git 索引 index 同時亦提供了視覺化索引的能力。只需簡單鍵入git add i,即可使用此功能。git 會列出所有修改過的檔案及它們的狀態。git add i staged unstaged path 1 unchanged 4 0 assets styles...