2014-02-21 56 views
0

我有一個問題,當我櫻桃從gerrit挑選一個提交,做出改變等。我想提交他們回來 - 在我做這個櫻桃之前,我怎麼能做到這一點? 現在,我剛纔添加-A的所有文件,但是我不知道下一步該怎麼做Gerrit櫻桃挑

+0

你實際上是否意味着評論/改變,而不是「從gerrit提交」和取/結賬而不是櫻桃選擇? –

+0

櫻桃挑選提交是來自Gerrit的補丁集? – HiB

回答

1

修改僅適用於最新的提交。我們假設您要修改的提交被稱爲(具有SHA-1代碼)111。您可以在git log中看到您提交的真實SHA-1代碼。

您可以使用git reset --hard使您的本地分支指向要修改的提交。請注意,對於沒有Gerrit的「普通」git,這將是一個非常糟糕的主意,因爲您通過修改已推送的提交來重寫歷史記錄!

我假設你已經有一些本地的,未提交的某些文件的更改,並且你想將這些更改應用到提交111。您必須保留這些更改,因爲git reset --hardwill remove them and it couldn't be undone

所以,你必須做(與你在一個分支的名稱替換master):

git stash save 
git reset --hard 111 
git stash apply 
<do some more changes to commit 111 if needed> 
git commit --amend 
git push gerrit master:refs/for/master 

瞧 - 你的提交111進行了修訂,並與格里特更新。

還有另一種方法可以做到這一點 - 您可以使用git rebase --interactive,但在這種情況下,我發現它比git reset更復雜。

+0

非常感謝你,那正是我正在尋找的 – user3274539

1

的格里特的工作流程,你的情況是:

  • 使用URL從檢討獲取從格里特的變化頁面
  • 進行更改
  • 到指數的變化添加與git add -A .
  • 修改以前犯了git commit --amend
  • 修訂推回提交到格里特git push gerrit master:refs/for/master(更換master你和遠程分支名稱)
+0

我做了一些改變,提交了他們,然後我櫻桃Picked其他提交,做了另一個修改,現在我希望他們被推在我的櫻桃選擇之前的第一次提交,現在當我正在修改我在那個櫻桃選擇提交不幸 – user3274539

+0

你可以通過交互式rebase('git rebase -i HEAD〜3')來完成。然後在你想修改的提交前用'e'替換'pick'。完成修改後,發出'git rebase --continue'完成操作。 –

0

我建議使用checkout而不是挑櫻桃從格里特的改變/補丁集。惠特檢查提交不會取決於。在你的情況下,修改最後修改會影響最後一次提交,這是櫻桃選擇 - 這是正常的。但是如果您想要修改1. commit中的更改,則只需首先刪除櫻桃選擇通知。