2016-04-21 44 views
1

由於拙劣的git commit --fixup,我處於rebase地獄的中間。我認爲我已經確定了消息來源,而且我現在處於一個比我開始時更好的地方。但是,如果我看一下git reflog,那麼'rebase -i'這一行看起來就像我以前的拙劣嘗試。我可以在reflog中添加一行嗎?

我可以將自己的行添加到reflog嗎?說的東西,看起來像:

$ git reflog mark '== we are not worse off than we started here ==' 
$ git reflog -3 
cb6536f [email protected]{0}: mark: == we are not worse off than we started here == 
cb6536f [email protected]{1}: rebase -i (finish): fixup! foo: baz the widgets 
9db07de [email protected]{1}: rebase -i (pick): fixup! baz: implement widget bazzing 
+0

最近想我能想到的是'git的承諾--fixup HEAD --allow空的',儘管這創造了一個實際的承諾,它會在下一個'git rebase -i --autosquash'上無害地消失 – badp

回答

2

您可以添加使用相同的命令git的在任何時候一個新的引用日誌條目使用添加新條目引用日誌,即git update-ref。這是一個「管道」(面向腳本)的命令,所以它不是非常用戶友好的,你可能想要添加你自己的小封裝腳本或別名。

例子:

git update-ref -m 'mark: whatever' HEAD HEAD 
git update-ref -m 'mark: another thing' refs/heads/branch branch 
git update-ref -m 'mark: third thing' refs/heads/branch refs/heads/branch 
hash=$(git rev-parse refs/heads/branch) && \ 
    git update-ref -m 'mark: 4' refs/heads/branch $hash 

注意,<ref>(第一個非選項參數)必須全部拼寫出來。 <newvalue>可以是解析爲有效的SHA-1的任何東西,這就是三個示例的中間命令可以工作的原因,但爲了安全起見,最好使用第三種形式(重複<ref>)或使用實際的SHA -1散列(第四種形式),讓git rev-parse驗證這實際上是一個有效的分支名稱。

(當使用HEAD你可以跳過驗證,因爲混帳無法運行在所有如果HEAD是不是一個有效的名稱。)

相關問題