310

我有一个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 rebase?但我不想丢失9-sign-in-out分支中的代码。

4

6 回答 6

650

值得了解这些错误消息的含义 -needs mergeerror: you need to resolve your current index first表明合并失败,并且这些文件中存在冲突。如果您认为无论您尝试进行的任何合并都是一个坏主意,您都可以通过以下方式使事情恢复正常:

git reset --merge

但是,否则您应该解决这些合并冲突,如 git 手册中所述


一旦你用任何一种技术处理了这个问题,你应该能够检查9-sign-in-out分支。正如wRAR 的回答9-sign-in-outmaster建议的那样,仅将您重命名为的问题是,如果您与任何人共享了以前的 master 分支,这会给他们带来问题,因为如果两个分支的历史不同,您将发布重写历史。

本质上,您想要做的是将您的主题分支合并9-sign-in-outmaster但完全保留主题分支中的文件版本。您可以通过以下步骤执行此操作:

# 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
于 2011-05-15T07:23:19.517 回答
46

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

git checkout -f 9-sign-in-out 

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

git branch -M master 
于 2011-05-15T05:58:39.157 回答
14

如建议的那样git status

Unmerged paths:                                                                                                                                
(use "git add <file>..." to mark resolution)                                                                                                 

    both modified:   a.jl                                  
    both modified:   b.jl

我曾经git add完成合并,然后git checkout工作正常。

于 2018-01-31T01:35:06.210 回答
3

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

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

于 2020-12-24T12:38:05.057 回答
2

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

这个命令对我有用

 git rebase --skip
于 2020-05-07T20:12:39.977 回答
-8

git commit -m "合并主固定冲突。"

于 2018-03-19T06:31:24.080 回答