[英]Git undo changes by merge
我將本地倉庫回滾到提交,然后進行了一些本地更改。 現在我想用我的本地倉庫更新(簡單地覆蓋)遙控器。 但當我做了一個git pull時,終端顯示出一堆沖突。 我不想遠程更改,我只想提交本地文件。
我讀到了某個地方
git checkout --ours
我跑得像
git checkout --ours .
但是當我執行git status
后運行命令它顯示了之前的狀態。
據我所知,你想要用本地分支中的任何東西覆蓋你的遠程分支。
這可以通過使用-f
force選項或git push命令中的--force-with-lease
選項來實現。 讓您的本地分支處於您想要的狀態並執行:
git push -f origin <remoteBranch>
但要小心 ,這個動作有后果,我強烈建議你閱讀這個答案: https : //stackoverflow.com/a/10510482/1695393
此外,當你執行git pull
,git會嘗試合並遠程和本地分支,這將撤消你准備本地分支的工作。 既然你想“覆蓋”遙控器,我建議你跳過拉。
如果你現在仍然處於這種不潔凈的狀態,你可能想要進行git reset --hard
將你的本地存儲庫重置為它在你最后一次拉動之前所處的狀態。
git checkout --ours
只支持簽出一個文件。 所以你輸入git checkout --ours .
它不會像你期望的那樣工作。
所以在這種情況下,你必須運行git checkout --ours [path_to_your_conflict_file]
如果您有太多沖突文件,可以運行以下命令:
for f in `git ls-files -m`;do git checkout --ours $f; done;
你想保留遠程回購中的歷史記錄嗎? 還有其他人退出嗎? 如果這兩個問題的答案都是“不”,那么你可能只想擺脫沖突並強行推動。
git reset --hard <commit to keep>
git push --force origin <remote branch>
如果您確實希望將歷史記錄保存在遠程倉庫中和/或某人已經撤消,您可以這樣做:
git reset --hard origin/<remote branch> # Erase changes (conflicts) in your working copy
git reset --soft <commit to keep>
git commit --all --message "Commit message with reason for restoring"
git push
正如@dubes寫道,要注意力推動可能帶來的負面后果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.