解决冲突后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重置——硬头< /代码>可能会起到作用,但我个人觉得直接进入
rm-fr.git/rebase apply
修复了这个问题,不过我同意Mark Rushakoff的观点,即修复提交不应包括提交
至少还有一种方式,git会继续说“您必须编辑所有合并冲突,然后使用GitAdd将它们标记为已解决”,即使您已经这样做了。如果从git版本控制中删除文件,但将未版本化的文件保留在工作树中,然后尝试执行重基,则可能会发生这种情况
我可以按如下方式解决此问题:
git状态
tmp
目录git svn rebase
希望这能有所帮助。当这件事发生在我身上时,我意识到我在重新设置数据库的过程中编辑了一个没有冲突的文件,我想这可能是错误的。 因此,我使用了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保存了我分离的头部混乱后)。考虑到这会给我造成多大的混乱,我仍然对这样做持谨慎态度。