Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git合并错误_Git_Branch_Git Merge_Git Branch - Fatal编程技术网

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
中未提交的更改)我过去只是将整件事情重新整理。但这更好。我认为像下面马克建议的那样重置合并比强制签出更干净。