我有一個情況,其中git pull
正在刪除我的提交。以下是如何輕易重現的情況:git pull刪除提交
- 當地分行已經一次提交的遠程回購一個
git update-ref -d refs/heads/<branch> <branch>~1
做的是把它未來的遠程跟蹤分支 git push
- 的。是的,我知道......請不要問爲什麼或者不要說我不應該這樣做。它與一些後端自動化有關,這可能會讓這個線程脫離主題。反正...
- 回到本地回購,
git pull
- 領先提交已經消失
基本上發生的事情是,我有branch.<branch name>.rebase
設置爲true,並在此底墊一步它默認爲語義--fork-point
哪(我認爲)基本上從本地分支的reflog的頂部迭代下來,並檢查SHA是否存在於遠程跟蹤分支的reflog中。一旦它存在於兩者中,那就是叉點。然而,在這個小角落的情況下,它的實際叉點是而不是。如果遠程跟蹤分支和本地分支參數在命令行上交換,則實際返回正確的叉點。
是否可以將
--no-fork-point
設置爲重新綁定的默認值?我看着git config documentation,但沒有找到任何明顯--fork-point
關閉我嘗試使用Git別名會轉,但它的尷尬,並要求每個人都使用非常規的指令
AFAIK做任何'git pull'都不會導致提交被刪除。在最極端的情況下,'git pull --rebase'會導致你的某些提交被_rewritten_並在遙控器上播放,但即使在這種情況下,它們也不會被刪除。 –
@TimBiegeleisen:唉,當'git pull'運行'git rebase'(就像它有'branch'一樣,.rebase'設置爲'true'),你會得到fork-point代碼。 – torek
@torek我完全不知道這可能發生。如果你喜歡它,可以給你的答案添加一些信息。 –