[英]Is it possible to rebase and edit a git commit without using interactive rebase?
[英]git interactive rebase: stop without commit
(TLDR) git rebase -i
有沒有一種方法可以停止編輯而沒有提交ID? (/ TLDR)
較長版本:
使用git rebase -i
,我得到了一個文本編輯器,可以在其中定義命令列表,從每一行的pick COMMIT_ID
開始。
選項之一是用“ edit COMMIT_ID”替換“ pick COMMIT_ID”,這意味着它將在提交后停止,以便我修改提交或進行一些手動操作。 然后我可以繼續git rebase --continue
。
從選項列表中:
# e, edit = use commit, but stop for amending
我想知道是否有一個選項可以停止編輯而不選擇任何提交。
例如,如果我要壓縮一定范圍的提交,然后在某些手動操作之后停止,則必須在同一提交ID之前放置edit +壁書-這是不允許的。
相反,我會做這樣的事情:
pick COMMIT_0 Change some colors
pick COMMIT_1 Make it faster
squash COMMIT_2 Fix a typo in previous commit
squash COMMIT_3 Fix another typo in previous commit
edit
pick COMMIT_4 Refactor some things
pick COMMIT_5 Introduce new options
這種選擇還允許在序列中的第一次提交之前停止。
(我要說的是,它允許在整個歷史記錄的初次提交之前進行編輯,但這是不正確的-初次提交永遠不會成為重新設置序列的一部分)
如果我這樣做,git會這樣說:
警告:SHA-1丟失或不是以下行中的提交:
有趣的是,效果或多或少是我想要的,它停止了並且我可以做事情。 但是我敢肯定這不是預期的方式。
根據某些情況,您有一個,兩個或三個選項。
插入
exec false
或其縮寫
x false
在您要停止的地方。 您可能知道, exec
在命令出現的位置運行shell命令。 但是,如果該命令失敗退出,則git rebase
停止,並且命令false
總是失敗退出。
如果您使用的是Git 2.20或更高版本,則可以插入
break
或其縮寫
b
在您要停止的地方。 引入此命令是出於您所要求的目的。
用edit
而不是pick
標記要停止的位置之前的提交。 顯然,如果您想在第一次提交之前或在squash
或fixup
提交之后停止,則此操作將無效。
我不知道那是不可能的。 壓扁之后,您必須進行第二次交互式變基,然后再修改提交。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.