Git Auto Rebase问题

时间:2016-12-16 03:40:57

标签: git github

我们是非常没有受过教育的git用户,他们通常使用单个主分支通过GitHub同步许多文件并合并,因为我们在执行时几乎没有重叠。

在极少数情况下,我们会得到一个随机出现的随机rebase分支。这最近发生了。

我们尝试通过执行没有冲突的git rebase --continue将其与我们的主要主分支合并。然后执行git checkout master,我们想用git merge RANDOM REBASE跟随它,但一切似乎都消失了,我们在那个奇怪的随机rebase分支上丢失了重要的提交数据。

我们如何才能恢复它?

3 个答案:

答案 0 :(得分:2)

  

当使用github for windows时,它显示为另一个名称为(fj%74(REBASE)

的分支)

this question所示:

C:\Users\w\Documents\GitHub\CmisSync [(6026d18...)|REBASE +0 ~1 -0 !1 | +0 ~0 -0 !1]> git status
# Not currently on any branch.
# You are currently rebasing.

它不是分支,而是一个git bash提示符,说明:

  • 正在进行改造
  • 您需要继续并完成rebase(或取消)

如上所述in the answer

  

如果你真的不知道你在一个篮板期间做了什么,最好开始的是git rebase --abort

或者查看“Undoing a git rebase”:在git refloggit reset --hard ORIG_HEAD之间,您可以在该基础之前返回已知状态。

答案 1 :(得分:1)

当您使用Github for Windows应用程序时,我正在尝试用不熟悉git命令的人们来理解这个答案。

在Github for Windows中,Sync按钮实际执行了许多git命令,如eg. in here所述。如果您正在使用同步按钮,则以下方案可能会导致新的分支和奇怪的合并提交:

  • 人A已编辑文件xyz
  • 人A承诺&将xyz同步到主人
  • 人B在没有先同步的情况下编辑文件xyz(即B正在编辑xyz的旧版本)
  • B人承诺&尝试同步xyz
  • Windows的Github试图自动处理这种情况
  • 这可能会导致从A和B的更改的公共起点创建一个新分支,B在此新分支上提交,A在主服务器上提交
  • 这个新分支将在主人身上自动重新定位或合并(取决于冲突和等)

不幸的是,偶尔Github for Windows会破坏rebase。然后你在GUI中得到一条错误信息,需要弄清楚Git shell中的情况。如果是这种情况,通常我发现唯一的解决方法选项是使用git rebase --abort中止rebase,从GUI撤消B的提交(如果可能),并将B的工作区恢复到包含A提交的主分支。然后B可以对包含A更改的文件重新应用她的更改。

Github for Windows的Simple Person工作流通常应该是“同步,更改,提交,同步”,以便在编辑任何内容之前获得所有以前的更改。在shell中使用实际的git命令仍然是首选选项。

答案 2 :(得分:0)

如果您真的想要合并分支,则应该any。命令git merge <branch name>执行执行合并。相反,它继续已经开始的rebase操作,这与合并非常不同。此外,如果您正在执行此命令,则表示您之前必须已完成git rebase --continue。分支不仅仅出现在任何地方。它们是在您执行命令时创建的,通常是git rebase <branch name>git branch。如果您确实需要使用git checkout -b,则应详细了解其工作原理。 Git Pro是一本免费的在线图书,在Branches and Rebasing上有很好的章节。