我在gerrit上傳了一個補丁X,但是由於錯誤,我添加了一個我不應該包含在補丁中的文件Y.現在,我要提交X新補丁集,沒有文件Y.是否有可能做到這一點Gerrit和repo
步驟從新的補丁集刪除Y表示X
我Y中做出手動刪除所有的變化(不是最好的方式做到這一點,但它新的補丁集刪除Y代表X)
git add .
git commit -s --amned
repo upload .
我在gerrit上傳了一個補丁X,但是由於錯誤,我添加了一個我不應該包含在補丁中的文件Y.現在,我要提交X新補丁集,沒有文件Y.是否有可能做到這一點Gerrit和repo
步驟從新的補丁集刪除Y表示X
我Y中做出手動刪除所有的變化(不是最好的方式做到這一點,但它新的補丁集刪除Y代表X)
git add .
git commit -s --amned
repo upload .
我沒有用太多格里特,但你可以修改提交,我相信。
修改一項提交
當修改與GIT提交提交 --amend,離開轉變-ID線的提交消息在未修改。這個 將允許Gerrit自動更新 提交的修改 。
http://gerrit.googlecode.com/svn/documentation/2.0/user-changeid.html#amend
評論後:
你確保更改-ID線存在並且你的提交信息的最後一行?如果提交消息中沒有Change-Id行,請將該行從Web上的更改頁面複製並放入提交消息中。
簡短的回答:
$ 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>
是您的更改已經審查?如果他們仍在等待審覈,那麼可以將其標記爲已廢棄並將其刪除。之後,您可以再次提交正確的代碼。
如果您的更改已審覈並且修補程序已合併到git存儲庫中,則解決方案應該不同於撤消在線程中解釋的git push; Undoing a 'git push'
嗯,我只是將文件恢復到提交之前的狀態,當我修改了提交時,文件未包含在內。 – ankur 2011-04-24 09:40:47
@ankur - 你能用你試過的步驟更新你的問題嗎? – manojlds 2011-04-24 16:44:18
看到我編輯的答案。 – manojlds 2011-04-24 19:45:43