首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于冲突,Windows的GitHub让我处于"rebasing“状态,如何从那里开始?

关于冲突,Windows的GitHub让我处于"rebasing“状态,如何从那里开始?
EN

Stack Overflow用户
提问于 2013-03-01 11:24:37
回答 2查看 11.8K关注 0票数 12

我最近开始使用GitHub for Windows

我刚遇到了一个冲突。在命令行上,我知道如何处理这个问题,但GitHub选择将我置于一种我不熟悉的状态:

代码语言:javascript
复制
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时,我被告知:

代码语言:javascript
复制
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能否做到这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-01 13:19:28

正如我们在Simon Boudrias中所说的,如果你不知道你在rebase期间做了什么,最好的开始就是使用git rebase --abort。正如动词所说,它中止当前的rebase,并使您的存储库和工作副本处于与rebase开始之前相同的状态。

在那之后,你应该做你所做的任何事情,启动了rebase过程(我不认为你说了它是什么,但也不认为它真的很重要)。当然,rebase还会重新开始,这就是你最初的问题开始得到回答的地方。

正如状态输出所说,您似乎有冲突。您应该解析它们(我通常使用git status --shortgit mergetool来使用meld解析它们),然后git add文件。当状态为OK (也就是说,每个必须提交的文件都已添加,没有冲突)时,您应该使用git rebase --continue而不是git commit

其思想是git rebase在给定的提交之上应用一组提交。我真的不知道在什么之上应用了什么提交,但记住这一点是很重要的。请记住,可能会显示多个冲突,因为提交是一个接一个地应用。使用git log查看上一次应用的提交,我认为在您的.git/目录中必须有一个包含当前正在应用的提交的提交消息的文件。

在冲突解决期间尝试在文件中包含更改,而不知道(或忘记)这些更改将被后续提交应用,这是一个常见的新手错误(我们都有过这样的经历:)。

因此,希望在解决一些冲突、添加文件并对其进行git rebase --continue之后,您应该会到达一个令人满意的功能存储库,并且您将能够从那里开始git push

最后,但并非最不重要的一点是:在完成所有的rebase工作之后,使用git log检查您没有修改任何公共提交。假设您的新分支包含远程的HEAD commit。Rebasing是强大的,也是非常危险的。你不想改变一个公共提交的基址--这可能是你唯一不想面对的痛苦:)

票数 18
EN

Stack Overflow用户

发布于 2013-03-01 12:46:23

一旦解决了冲突,首先需要通过调用git rebase --continue来结束rebase模式。这应该会让你回到你所拉的那个分支上(在你的情况下是master)。您会注意到,当命令行(posh-git plugin)指示master而不是REBASE时,就会发生这种情况

然后,您可以使用git push origin master进行推送。额外的参数可能会由Git自动填充,但这将取决于您的设置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15149953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档