2016-02-11 209 views
0

我從git pull得到這條消息之後我把代碼推到了GERRIT(在GERRIT代碼審查之後,我從GERRIT提交到遠程)!你的分支提前1次提交

因爲我在使用GERRIT - 在將git「代碼」推送到GERRIT並最終通過GERRIT將它提交給遠程後,我的本地git實例似乎認爲我仍然有變化,我仍然需要推動我的更改! 所以我被迫做了一次「git reset HEAD ^」,每次都回1次提交!我沒有失去任何東西,因爲此時我已經使用GERRIT將代碼推送到遠程,但它非常具有欺騙性,我必須在每次git push> Gerrit推送到遠程後執行此操作!

有什麼建議可以解決這個問題嗎?

PS:之前已經有一些關於這方面的問題。雖然我不能通過GERRIT找到解決方案!

回答

0

如果你不想做硬重置(我更喜歡git reset --hard origin master順便說一句),那麼只需在提交之前創建一個新的分支。推完之後,您可以將該分支丟棄。

P.S.你可能有興趣嘗試git-review

+0

我檢查了SE中的一些查詢。奇怪的是,我注意到了這次的一些事情:在我收到這個消息之後(在推向gerrit之後提交了1個提交之前) - 而不是** git pull ** - 我嘗試了** git fetch **,問題突然消失了。然而,在運行** git fetch **後,我的分支向我展示了幾百次提交,但現在做了一次** git pull **,使我獲得了最新的原點。我認爲** git pull = git fetch和git merge **。我不知道我很理解爲什麼git fetch方法工作(並且我不明白,爲什麼git merge沒有更新我的主人) –

+0

似乎沒有得到任何迴應....有誰知道什麼原因可以在這背後? –

+0

是的,pull = fetch + rebase/merge。不知道,你發生了什麼事。它只帶來當前分支。但是,儘管如此,你的承諾不會被拉扯掉。如上所述,要麼'git reset --HARD',這是完全沒問題的,因爲所有的改變都存儲在Gerrit中,或者使用分支。而已。 – StephenKing

相關問題