我最近开始使用GitHub上的Windows 。
我刚刚得到一个冲突。 在命令行我也知道如何处理这一点,但GitHub上的Windows选用把我在我不熟悉的状态:
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.
# (fix conflicts and then run "git rebase --continue")
# (use "git rebase --skip" to skip this patch)
# (use "git rebase --abort" to check out the original branch)
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
...
我固定的冲突,犯下的文件,但是当我运行git push
有人告诉我:
fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD) state now, use
git push origin HEAD:<name-of-remote-branch>
什么是推荐的方式来获得我的合并承诺远程主?
我怀疑git push origin HEAD:master
会实现这一目标。
正如我们在那里有说西蒙Boudrias ,如果你真的不知道你衍合过程中做了什么,要开始最好的办法是用git rebase --abort
。 作为动词表示,它将中止当前的底垫,并留下你与你的底垫开始前这是同样的状态信息库和工作副本。
在这之后,你应该做你已经做了启动rebase过程(我不认为你说这是什么,但不认为这是非常重要的,无论是)。 当然底垫将再次启动,而这里就是你原来的问题开始回答。
由于状态输出说,你似乎有冲突。 你应该解决这些问题(我一般用git status --short
加git mergetool
以解决这些问题meld
),然后git add
文件。 当状态正常(比如,要COMMITED添加,没有冲突,每次将有文件),你应该git rebase --continue
而不是git commit
。
这个想法是git rebase
适用一集团承诺对给定的承诺之上。 我真的不知道正在被应用在什么上面什么提交,但有一点是很重要的。 请记住,有可以显示多个冲突,因为提交申请逐一。 使用git log
,看看有什么是最后一次提交申请,我认为必须有在你的文件.git/
目录,与此提交,因此目前正在应用的提交信息。
这是一个commmon新手错误(我们都在那里:))尝试包括在解决冲突过程中对文件的修改不知道(或忘记),他们将通过后者提交应用。
所以,我希望,解决一些冲突,添加文件后git rebase --continue
荷兰国际集团他们,你应该到达一个幸福的功能库,你就可以git push
从那里。
最后,但并非最不重要的:毕竟衍合的时候,使用git log
来检查你不修改任何公开承诺。 再说了,你的新分支包含遥控器的HEAD提交。 垫底是强大的,非常危险。 你不想变基公众提交 - 它也许你不想面对的唯一的Git痛苦:)
首先需要结束rebase
通过调用模式git rebase --continue
一旦你解决你的冲突。 那么这应该把你回来的分支你拉(你的情况大师)。 你会发现这种情况发生时,在命令行(豪华-git的插件)的意愿表示master
,而不是REBASE
然后,你可以使用推git push origin master
。 额外的参数可以通过GIT中被自动填充,但会取决于您的设置。
文章来源: On conflict, GitHub for Windows puts me in “rebasing” state, how to go from there?