解决冲突后git仍然抱怨?

解决冲突后git仍然抱怨?,git,Git,当我从我的队友那里得到改变时,我通常会rebase,当我遇到冲突时: ... CONFLICT (content): Merge conflict in app/views/search/index.html.erb Auto-merging public/stylesheets/application.css CONFLICT (content): Merge conflict in public/stylesheets/application.css Failed to merge in t

当我从我的队友那里得到改变时,我通常会
rebase
,当我遇到冲突时:

...
CONFLICT (content): Merge conflict in app/views/search/index.html.erb
Auto-merging public/stylesheets/application.css
CONFLICT (content): Merge conflict in public/stylesheets/application.css
Failed to merge in the changes.
Patch failed at 0001 organizing

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To restore the original branch and stop rebasing run "git rebase --abort".
因此,在打开每个有冲突的文件后,修复它,然后提交修复的文件:

~/Projects/myApp[956f6e1...]% git rebase --continue
You must edit all merge conflicts and then
mark them as resolved using git add
我仍然得到同样的错误

~/Projects/myApp[64b3779...]% git rebase --continue                         
Applying: organizing
No changes - did you forget to use 'git add'?

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To restore the original branch and stop rebasing run "git rebase --abort".
我一直都有这个问题,但我想我从来没有真正选择去解决它,我总是会变得懒惰和
git-rebase--skip

我如何以正确的方式解决冲突

因此,在打开每个有冲突的文件后,修复它,然后提交修复的文件

问题是你不应该提交修复程序。如果
a.txt
有合并冲突,那么您的shell日志应该如下所示:

$ vim a.txt # fix conflict
$ git add a.txt
$ # no commit between add and rebase!
$ git rebase --continue
调用git rebase--continue将处理提交本身


我不知道如何在你提交之前回到你的提交中,当你处于一个ReBASE的中间。代码> Git重置——硬头< /代码>可能会起到作用,但我个人觉得直接进入Git ReBase-ABORT 会更安全,并且在没有提交中间的情况下从头开始。

< P>我发现自己处于同一条船上,<代码> Git ReBase-继续< /代码>无济于事。运行
rm-fr.git/rebase apply
修复了这个问题,不过我同意Mark Rushakoff的观点,即修复提交不应包括提交

至少还有一种方式,git会继续说“您必须编辑所有合并冲突,然后使用GitAdd将它们标记为已解决”,即使您已经这样做了。如果从git版本控制中删除文件,但将未版本化的文件保留在工作树中,然后尝试执行重基,则可能会发生这种情况

我可以按如下方式解决此问题:

  • 使用git rebase终止rebase--abort
  • 通过查看
    git状态
  • 我将未版本化的文件移动到我的
    tmp
    目录
  • 重做rebase-在我的例子中
    git svn rebase
  • 如果你想让未版本的文件挂起,把它移回你想要的地方(我把我的放在我的tmp目录中)

  • 希望这能有所帮助。

    当这件事发生在我身上时,我意识到我在重新设置数据库的过程中编辑了一个没有冲突的文件,我想这可能是错误的。 因此,我使用了git签出--,然后使用git rebase--continue,它成功了。

    对于git 2.14(2017年第3季度),这种在不需要回答的反问中给出的建议(比如“
    你忘了使用‘git add’?
    ”)将不再存在

    参见(2017年5月11日)作者。
    (于2017年5月29日被合并)

    可用性:如果不需要回复,不要提问 当命令的拼写包含 如果出现错误,git程序会尝试通过提供候选项来帮助用户 它们接近于不存在的命令。例如Git打印 以下:

        git: 'stahs' is not a git command. See 'git --help'.
        Did you mean this?
    
        stash
    
    然后退出

    这个提示的问题在于它没有正式表示为 提示,实际上鼓励用户回答问题, 而Git命令已经完成

    用户很不幸,他看到的是命令 ,并在命令行上回答“是”,有效地启动
    程序

    最初的错误是Git程序在中启动时 命令行模式(无交互)不得提问, 因为这些问题通常需要用户输入作为回答 他们真的不会处理。这是用户体验混乱的根源 水平

    为了提高Git套件的通用性,下面的规则 适用于:

    如果这句话

    • 显示在非交互式会话中
    • 是否在退出前最后打印
    • 是针对用户(“您”)的问题
    这句话变成肯定句,并提出了选择

    在您的案例中,“
    您是否忘记使用'git add'?
    ”:

    您应该“
    git add
    ”每个已解决冲突的文件,以将其标记为冲突。
    您可以对一个文件运行
    git rm
    ,以接受该文件的“deleted by they”


    更清楚。

    我已经解决了合并冲突,但我仍然看到

    您有未合并的路径


    我所要做的就是添加,一切都很好。

    是的,我同意。。。我想我没有真正阅读错误消息(按照我通常的工作流程),
    git-rebase--abort
    解决了眼前的问题。再次感谢!很乐意帮忙!git有时确实有点让人困惑,但我不知道没有它我怎么活下来。我警告人们不要这样做。我尝试了它,但它似乎阻塞了我的分支,我无法撤消它(尝试了
    git-rebase--abort
    ,然后
    git-reset--hard-HEAD
    )。甚至
    git reflog
    似乎也没有显示我以前的工作(在重新基址之前的最后一次提交分支)。在IDE的帮助下重建我的补丁,感谢IDE在删除/更新我刚刚放弃的文件和更改之前提出了请求。仔细查看
    git reflog
    输出,找到了我的提交,我也可以通过检查原始分支来实现(在用git checkout-b new_branch_name保存了我分离的头部混乱后)。考虑到这会给我造成多大的混乱,我仍然对这样做持谨慎态度。