Git合并错误
我有一个名为Git合并错误,git,branch,git-merge,git-branch,Git,Branch,Git Merge,Git Branch,我有一个名为9-sign-in-out的git分支,它的代码工作得很好,我想把它变成主代码。我现在在总支 $ git branch 9-sign-in-out * master 我正在尝试切换到9-sign-in-out分支,但它不允许我: $ git checkout 9-sign-in-out app/helpers/application_helper.rb: needs merge config/routes.rb: needs merge error: you need to res
9-sign-in-out
的git分支,它的代码工作得很好,我想把它变成主代码。我现在在总支
$ git branch
9-sign-in-out
* master
我正在尝试切换到9-sign-in-out
分支,但它不允许我:
$ git checkout 9-sign-in-out
app/helpers/application_helper.rb: needs merge
config/routes.rb: needs merge
error: you need to resolve your current index first
知道如何忽略所有主分支错误并将
9-sign-in-out
分支变为主分支吗?也许是吉特?但是我不想丢失9-sign-in-out
分支中的代码。更改分支,放弃所有本地修改
git checkout -f 9-sign-in-out
将当前分支重命名为主分支,放弃当前主分支
git branch -M master
有必要了解这些错误消息的含义-
需要合并
和错误:您需要首先解决当前索引
指示合并失败,并且这些文件中存在冲突。如果您认为无论您尝试进行什么合并,都是一个坏主意,那么您可以通过以下方式恢复正常:
git reset --merge
但是,否则您应该解决这些合并冲突
一旦您通过这两种技术处理了这个问题,您应该能够签出
9-sign-in-out
分支。如中所述,将9-sign-in-out
重命名为master
的问题在于,如果您与任何人共享了以前的master分支,这将给他们带来问题,因为如果两个分支的历史发生分歧,您将发布重写的历史
基本上,您要做的是将主题分支9-sign-in-out
合并到master
中,但要准确地将文件的版本保留在主题分支中。您可以通过以下步骤执行此操作:
# Switch to the topic branch:
git checkout 9-sign-in-out
# Create a merge commit, which looks as if it's merging in from master, but is
# actually discarding everything from the master branch and keeping everything
# from 9-sign-in-out:
git merge -s ours master
# Switch back to the master branch:
git checkout master
# Merge the topic branch into master - this should now be a fast-forward
# that leaves you with master exactly as 9-sign-in-out was:
git merge 9-sign-in-out
如
git status
中所述
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: a.jl
both modified: b.jl
未合并的路径:
(使用“git add…”标记分辨率)
两者均已修改:a.jl
两者均已修改:b.jl
我使用了git add
来完成合并,然后git checkout
工作正常。git commit-m“合并的主程序修复了冲突。”我的问题是(主程序|重新基础1/1)
这个命令对我有效
git rebase --skip
我在从开发分支切换到主分支时也遇到了同样的问题。我所做的是提交更改并切换到主分支。您可能有未提交的更改
您还可以尝试这个
git重置--merge
。这可以用来解决任何冲突并恢复。你的意思是你不想在9-sign-in-out中丢失未注释的代码吗?@Mauvis:我已经在9-sign-out分支中提交了我的代码。Mark,在我再次收到要合并的错误后,我终于明白你说的了什么。但是,我有一个错误:Sayanee:twitter sweska$git checkout master错误:您对以下文件的本地更改将被checkout覆盖:webrat.log请在切换分支之前提交或隐藏您的更改。中止:任何方式,使用分支中的webrat.log并使其与主合并?@Sayanee:这是一个不同的错误,产生于不同的情况,如果你对此感到困惑,最好提出一个新的问题。(不过,简单地说,git阻止您切换分支,因为这会覆盖webrat.log
中未提交的更改)我过去只是将整件事情重新整理。但这更好。我认为像下面马克建议的那样重置合并比强制签出更干净。