git pull删除提交

时间:2017-05-24 04:19:08

标签: git version-control

我有一个git pull正在删除我的提交的情况。以下是如何轻松复制案例:

  1. 本地分支有一个提交,将其置于远程跟踪分支之前
  2. git push
  3. 远程仓库上完成git update-ref -d refs/heads/<branch> <branch>~1。是的,我知道......请不要问为什么或不要只是说我不应该这样做。它与一些后端自动化有关,这可能会使这个线程偏离主题。总之...
  4. 回到当地仓库,git pull
  5. 领先提交已经消失
  6. 基本上发生的事情是我将branch.<branch name>.rebase设置为true,并且在此rebase步骤中它默认为--fork-point的语义(我认为)基本上从本地分支的顶部向下迭代reflog并检查远程跟踪分支的reflog中是否存在SHA。一旦它存在于两者中,那就是叉点。然而,在这个小角落的情况下, 不是 实际的叉点。如果在命令行上交换了远程跟踪分支和本地分支参数,则实际返回正确的fork point。

    1. 是否可以将--no-fork-point设置为重新定位的默认值?我查看了git config documentation,找不到任何明显可以关闭--fork-point

    2. 的内容
    3. 我尝试使用git别名,但这很尴尬,需要每个人都使用非常规命令

1 个答案:

答案 0 :(得分:2)

不幸的是,这是--fork-point的实际目标:它意味着剥离上游本身剥离的上游提交,即你在分支中所拥有的。

Q1的答案是没有办法从git pull关闭它。通常情况下,我建议不要使用git pull:使用git fetch后跟git rebase ...但是如果您没有指定特定的上游,则使用默认的--fork-point(或{ {1}})仍会咬你。

Q2不是一个真正的问题:别名有点尴尬,是的。明确的--root后跟git fetch将完成这项工作,但它要求人们真正做到这一点。