2012-06-19 19 views
2

我已經通過git reset --hard <commit>上的很多帖子進行了搜索,並且我重置了一個過早合併的分支到狀態,在歷史中有一點提交。 「主」的當前狀態看起來不錯,但git status表示我的本地分支在24次提交後落後於origin/master,並且可以快進。如果沒有再次合併origin/master,我無法推送。有沒有辦法跳過這些提交併說「我不想要它們」?如何在git重置後避免「可以快進」消息--hard <sha1>?

這是一箇中央回購的設置,我的一個同事將他長期運行的開發分支和主人合併在事故中,並且無法弄清楚如何回溯,所以我試圖爲他做這件事。命令

回顧(從內存中,它已經進行了兩天的考驗)

發現了錯誤,當我拿來和檢查主,通知同事。他無法得到它復位,所以...... 我做

git merge master origin/master 
git reset --hard <commit_I_wanted> 
git push # is rejected 
git status # gives me the "behind by x commits, can be fast-forwarded" message 

感謝, 漢斯

回答

2

如果你是一定您的git歷史正確版本你的同事沒有做任何改變,你可以使用這個命令:

git push --force 

將來,請使用git revert,而不是使用重寫歷史記錄來進行新的提交。

同樣,git push --force將重寫遠程端的歷史記錄。你被警告了。

+0

好的,我會考慮通過。我沒有使用恢復,因爲我讀過這將是困難的(不可能?)以後在合併該開發分支英寸我讀的(在幾個地方)說,恢復刪除的變化,但似乎git的變化分支已合併,因此它不會再合併它們。 – Hans

+0

如果他們對我沒有碰過的其他分支進行了更改並將其推送(用於備份目的)會怎麼樣?如果我確定我獲取併合並每個分支,那麼我會好的,對吧? – Hans

+0

執行git push -f origin <分支覆蓋>,然後您可以安全地獲取併合並其他分支到您的本地「<覆蓋分支>」,然後再次推送。 – flumpb