我们是非常没有受过教育的git用户,他们通常使用单个主分支通过GitHub同步许多文件并合并,因为我们在执行时几乎没有重叠。
在极少数情况下,我们会得到一个随机出现的随机rebase分支。这最近发生了。
我们尝试通过执行没有冲突的git rebase --continue
将其与我们的主要主分支合并。然后执行git checkout master
,我们想用git merge RANDOM REBASE
跟随它,但一切似乎都消失了,我们在那个奇怪的随机rebase分支上丢失了重要的提交数据。
我们如何才能恢复它?
答案 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提示符,说明:
如上所述in the answer:
如果你真的不知道你在一个篮板期间做了什么,最好开始的是
git rebase --abort
或者查看“Undoing a git rebase”:在git reflog
和git reset --hard ORIG_HEAD
之间,您可以在该基础之前返回已知状态。
答案 1 :(得分:1)
当您使用Github for Windows应用程序时,我正在尝试用不熟悉git命令的人们来理解这个答案。
在Github for Windows中,Sync按钮实际执行了许多git命令,如eg. in here所述。如果您正在使用同步按钮,则以下方案可能会导致新的分支和奇怪的合并提交:
不幸的是,偶尔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上有很好的章节。