Git合并错误

我有一个名为9-sign-in-out的git分支,它具有完美的工作代码,我想把它变成master。我目前在主分支上。

$ 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分支变成主分支?也许git 变基?但是我不想丢失9-sign-in-out分支中的代码。

491376 次浏览

变更分支,丢弃所有本地修改

git checkout -f 9-sign-in-out

将当前分支重命名为master,丢弃当前master

git branch -M master

理解这些错误消息的含义是值得的——needs mergeerror: you need to resolve your current index first表示合并失败,并且这些文件中存在冲突。如果你已经决定无论你试图做什么合并都是一个坏主意,你可以用以下方法让事情恢复正常:

git reset --merge

然而,否则你应该解决这些合并冲突,如git手册中所述


一旦你用任何一种技术处理了它,你应该能够签出9-sign-in-out分支。像wRAR的回答中建议的那样,将你的9-sign-in-out重命名为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来完成合并,然后git checkout工作正常。

git commit -m "合并的master修正了冲突。"

我的问题是(master|REBASE 1/1)

这个命令对我很管用

 git rebase --skip

当从开发分支切换到主分支时,我也遇到了同样的问题。我所做的就是提交我的更改并切换到主分支。您可能有未提交的更改。

你也可以试试这个git reset --merge。这可用于解决任何冲突并恢复。

当我使用GitHub桌面试图从开发分支切换到主时,即使在我解决了所有合并冲突之后,我也得到了这个。

在命令行上输入git add *后,它允许我再次切换分支。