Git合并错误

Say*_*nee 249 git branch git-merge git-branch

我有一个git分支调用9-sign-in-out完美的代码,我想把它变成主.我现在在主分公司.

$ git branch
9-sign-in-out
* master
Run Code Online (Sandbox Code Playgroud)

我正在尝试切换到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
Run Code Online (Sandbox Code Playgroud)

任何想法如何忽略所有主分支错误并将9-sign-in-out分支转换为主分支?也许是git rebase?但我不想丢失9-sign-in-out分支中的代码.

Mar*_*air 497

值得了解这些错误消息的含义 - needs mergeerror: you need to resolve your current index first指出合并失败,并且这些文件中存在冲突.如果你已经确定你想要做的任何合并都是一个坏主意,你可以把事情恢复正常:

git reset --merge
Run Code Online (Sandbox Code Playgroud)

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


一旦你通过任何一种技术处理它,你应该能够结帐9-sign-in-out分支.只需重命名你的问题9-sign-in-outmaster,如建议WRAR的回答是,如果你共享你以前的主分支与任何人,这会为他们创造的问题,因为如果两个分支的历史分歧,你会被改写发布历史.

基本上,您要做的是将主题分支合并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
Run Code Online (Sandbox Code Playgroud)


wRA*_*RAR 39

git checkout -f 9-sign-in-out # change branch, discarding all local modifications
git branch -M master # rename the current branch to master, discarding current master
Run Code Online (Sandbox Code Playgroud)

  • 我认为更清洁重置像Mark下面建议的合并而不是强制结账. (3认同)

Jin*_* Wu 6

根据建议git status

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

    both modified:   a.jl                                  
    both modified:   b.jl
Run Code Online (Sandbox Code Playgroud)

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


Cha*_*age 5

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

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


Jas*_*ran 5

我在尝试从 dev 分支切换到 master 分支时使用 GitHub Desktop 时遇到了这个问题,即使我已经解决了所有合并冲突。

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