2011-04-24 72 views
1

我在gerrit上傳了一個補丁X,但是由於錯誤,我添加了一個我不應該包含在補丁中的文件Y.現在,我要提交X新補丁集,沒有文件Y.是否有可能做到這一點Gerrit和repo

步驟從新的補丁集刪除Y表示X
我Y中做出手動刪除所有的變化(不是最好的方式做到這一點,但它新的補丁集刪除Y代表X)
git add .
git commit -s --amned
repo upload .

回答

0

我沒有用太多格里特,但你可以修改提交,我相信。

修改一項提交

當修改與GIT提交提交 --amend,離開轉變-ID線的提交消息在未修改。這個 將允許Gerrit自動更新 提交的修改 。

http://gerrit.googlecode.com/svn/documentation/2.0/user-changeid.html#amend

評論後:

你確保更改-ID線存在並且你的提交信息的最後一行?如果提交消息中沒有Change-Id行,請將該行從Web上的更改頁面複製並放入提交消息中。

+0

嗯,我只是將文件恢復到提交之前的狀態,當我修改了提交時,文件未包含在內。 – ankur 2011-04-24 09:40:47

+0

@ankur - 你能用你試過的步驟更新你的問題嗎? – manojlds 2011-04-24 16:44:18

+0

看到我編輯的答案。 – manojlds 2011-04-24 19:45:43

3

簡短的回答:

$ git reset HEAD^ <file to remove from commit> 
$ git commit --amend 

這將使<file>本地修改了,於是假設你不想修改都了,你現在可以還原修改:

$ git checkout <file> 

這是最快捷的方式。另一種選擇:

$ git log -n1 --oneline | cat 
$ git reset --soft HEAD^ 
$ git reset <file to be unstaged> 
$ git commit -C <sha1 commit hash from "git log" above> 
0

是您的更改已經審查?如果他們仍在等待審覈,那麼可以將其標記爲已廢棄並將其刪除。之後,您可以再次提交正確的代碼。

如果您的更改已審覈並且修補程序已合併到git存儲庫中,則解決方案應該不同於撤消在線程中解釋的git push; Undoing a 'git push'