我有一个git pull
正在删除我的提交的情况。以下是如何轻松复制案例:
git push
git update-ref -d refs/heads/<branch> <branch>~1
。是的,我知道......请不要问为什么或不要只是说我不应该这样做。它与一些后端自动化有关,这可能会使这个线程偏离主题。总之... git pull
基本上发生的事情是我将branch.<branch name>.rebase
设置为true,并且在此rebase步骤中它默认为--fork-point
的语义(我认为)基本上从本地分支的顶部向下迭代reflog并检查远程跟踪分支的reflog中是否存在SHA。一旦它存在于两者中,那就是叉点。然而,在这个小角落的情况下, 不是 实际的叉点。如果在命令行上交换了远程跟踪分支和本地分支参数,则实际返回正确的fork point。
是否可以将--no-fork-point
设置为重新定位的默认值?我查看了git config documentation,找不到任何明显可以关闭--fork-point
我尝试使用git别名,但这很尴尬,需要每个人都使用非常规命令
答案 0 :(得分:2)
不幸的是,这是--fork-point
的实际目标:它意味着剥离上游本身剥离的上游提交,即你在分支中所拥有的。
Q1的答案是没有办法从git pull
关闭它。通常情况下,我建议不要使用git pull
:使用git fetch
后跟git rebase
...但是如果您没有指定特定的上游,则使用默认的--fork-point
(或{ {1}})仍会咬你。
Q2不是一个真正的问题:别名有点尴尬,是的。明确的--root
后跟git fetch
将完成这项工作,但它要求人们真正做到这一点。