我搞砸了我的git回購一點。我在一個單獨的分支中開發了一個功能。完成工作後,我轉向主人合併,但我的合作伙伴推送了一些與我發生衝突的文件。合併後,衝突和推動新的變化,我看到我也犯了我的伴侶的舊變化。撤銷上次提交/合併
現在我想重做這個提交/合併。我試過 git reset --soft HEAD^
但是當我想推,我得到了這個錯誤信息Merge the remote changes before pushing again
。
任何人都可以幫助我嗎?
我搞砸了我的git回購一點。我在一個單獨的分支中開發了一個功能。完成工作後,我轉向主人合併,但我的合作伙伴推送了一些與我發生衝突的文件。合併後,衝突和推動新的變化,我看到我也犯了我的伴侶的舊變化。撤銷上次提交/合併
現在我想重做這個提交/合併。我試過 git reset --soft HEAD^
但是當我想推,我得到了這個錯誤信息Merge the remote changes before pushing again
。
任何人都可以幫助我嗎?
呵呵,你幾乎想通了:
git reset --hard HEAD^
嘿plaes感謝您的回答,但我想保持我推錯的文件。有沒有解決方案? – 2011-04-11 15:08:31
'git reset --soft'可以幫到你。 – LaraChicharo 2015-10-13 19:51:40
您的特性分支仍將指向你的工作。你不會失去這些改變。
正如plaes說,你可以重置主回一個與
git reset --hard HEAD^
如果你想抓住從你的分支一些特定的文件,而合併,就可以檢查出來:
git checkout yourbranch -- file1 file2 etc
如果你想從合併之前的主人的一些文件,你也可以檢查這些:
git checkout master^ -- file3 file4 etc
這並不理想,但它有時是需要的。合併/可能意味着您拒絕合併中的任何一方的一些更改。以獲得適當的合併,最好的辦法是:
git merge --no-commit yourbranch
從主,然後運行從上面的混帳結賬的命令,最後提交:
git add . -A
git commit
現在,當您按下這個分支,你需要添加force
選項
git push --force
或
git push -f
希望這有助於。
感謝您的回覆adymitruk,我嘗試了git'reset --hard HEAD ^',之後git push origin + master,但是我仍然收到錯誤訊息'![遠程拒絕]主機 - >主機(預接收鉤子拒絕)' – 2011-04-11 21:07:54
如果您因爲推送而失去遠程提交,您需要告訴git可以使用'--force'或' -f'選項。更新答案。 – 2012-06-29 18:17:39
這裏的問題是,你要撤消你已經推到中央存儲庫的變化。如果你還沒有把它們推到第一位,那麼一個git reset --hard/- soft/- HEAD ^就可以完成。
所以,當你已經reseted當您嘗試推到原點和更新遠程裁判是不是一個祖先,以你的頭你的頭git的抱怨。使用--force:
git push --force origin master
http://stackoverflow.com/questions/1377845/git-reset-hard-and-a-remote-repository – plaes 2011-04-11 16:04:34