标签: merge-conflict-resolution

由于在两个分支中重命名而导致git合并冲突 - 如何修复和避免将来使用?

我有两个地方分支机构masterdev.两个分支包含三个文件夹:

projectBeta
project
project_v1
Run Code Online (Sandbox Code Playgroud)

我想只保留projectBeta和删除project,并project_v1然后重命名projectBetaproject.这就是我在两个分支上单独做的事情,随着我的进展而做出承诺.一切都看起来很好,直到我试图将dev分支合并到主人,我得到了一堆这样的错误:

CONFLICT (rename/delete): Rename projectBeta/test.c->project/test.c in dev and deleted in HEAD
CONFLICT (rename/delete): Rename project_v1/test.c->project/test.c in HEAD and deleted in dev
Run Code Online (Sandbox Code Playgroud)

所以看起来Git在不同的分支中以不同的方式跟踪重命名.

如果我做了git status,我得到

# On branch master
# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   added by us:        project/test.c
#
no changes added to commit (use "git add" and/or "git …
Run Code Online (Sandbox Code Playgroud)

git merge merge-conflict-resolution

13
推荐指数
1
解决办法
8091
查看次数

使用git merge单独提交冲突解决方案

我正在尝试将一个大主题分支合并到主服务器中,但我想要一个单独的提交来显示冲突解决方案是如何发生的.目标是让一个提交显示"这些文件冲突以及它们如何冲突",下一个提交将显示"这就是解决冲突的方式".即第一次提交将包含冲突标记.

原因是大主题分支已经过审查和测试,主分支也是如此.在合并中,我们只想查看需要一些工作的部分(冲突和其他合并工作).

这是我到目前为止所做的:

git checkout master
git checkout -b merge-from-topic
git merge topic
Run Code Online (Sandbox Code Playgroud)

要记录有冲突的文件,我使用临时文件:

git diff --name-only --diff-filter=U >conflicts.txt
Run Code Online (Sandbox Code Playgroud)

首先,我只是将带有冲突标记的文件添加到提交中:

xargs git add <conflicts.txt
git commit
Run Code Online (Sandbox Code Playgroud)

然后我创建另一个分支(用于审查目的),我想在其中进行冲突解决:

git checkout -b resolve-merge-from-topic
Run Code Online (Sandbox Code Playgroud)

为了恢复冲突,我试过了

xargs git reset HEAD^ -- <conflicts.txt
Run Code Online (Sandbox Code Playgroud)

但是后来git mergetool说没有文件需要合并,尽管我工作树中的文件有冲突标记.

如何恢复conflict.txt中列出的文件,以便我可以在它们上使用git mergetool

我也对其他获得"单独提交冲突解决"效果的方式持开放态度.

git merge merge-conflict-resolution

13
推荐指数
1
解决办法
3773
查看次数

告诉git关注移动的内容(不仅仅是移动的文件)

在重构源代码时,有时您需要在文件中移动大块文本,甚至移动到新文件.您创建一个分支refactored并提交:

$git checkout master
$git branch refactored
$git checkout refactored
<move code around>
$git commit -m "refactored code"
Run Code Online (Sandbox Code Playgroud)

但是,人们可能会在旧的预重构分支之上提交,更改已移动的代码:

$git checkout master
<change code that was moved elsewhere on branch refactored>
$git commit -m "bugfix"
Run Code Online (Sandbox Code Playgroud)

在分支上refactored,您希望合并在master以下位置进行的更改:

$git checkout refactored
$git merge master
<giant merge conflict>
Run Code Online (Sandbox Code Playgroud)

这导致了大的合并冲突.如果有办法告诉git简单地移动了内容,应该可以自动合并.

更糟糕的是,即使在解决冲突并提交冲突之后,git仍然无法使用该解决方案来确定进一步的合并:

<fix conflicts>
$git commit -m "merge master into refactored"
$git checkout master
<change more code>
$git commit -m "bugfix2"
$git checkout refactored
$git merge master
<another giant …
Run Code Online (Sandbox Code Playgroud)

git diff merge merge-conflict-resolution

13
推荐指数
1
解决办法
1089
查看次数

将合并冲突发送给协作者以在Git中解决

在解决合并冲突时,如果我不知道选择哪一个(因为我不知道这两个变化中的任何一个),我想

  1. 创建补丁,或
  2. 创建单独的分支(种类),或
  3. 还有什么可以做的,

所以我可以把冲突发送给我的队友,让他解决冲突.

注意:在这种情况下,中止合并并要求我的队友合并是一种方式.但是,这意味着所有解决的冲突都是浪费精力,现在合并的其他人将不得不再次重复所有决议.所以,这不是一个选择.

git git-merge merge-conflict-resolution

13
推荐指数
1
解决办法
883
查看次数

如何在Visual Studio 2015中配置比较3路合并功能

问题: Visual Studio 2015(和以前的版本)中的默认差异/合并工具在比较文件时不允许合并.它只允许你看到差异.我知道启用3路合并选项的唯一场合是存在合并冲突时.

我想在Visual Studio中的diff工具的每个实例上看到3路合并选项.

注意:我绝对不会在此寻找替代工具或"解决方法".我一直很高兴使用WinMerge作为我的合并工具,它可以在你比较的任何时候进行合并.我非常喜欢vs diff工具的3路选项,并且能够在我想要的任何时候使用它对我的工作流程起到很好的推动作用.

谢谢!

diff merge visual-studio merge-conflict-resolution visual-studio-2015

13
推荐指数
1
解决办法
1347
查看次数

为什么git stash不能放弃刚刚做出的改变?

我从github分叉了一个项目,原点指向我自己的github仓库,远程指向它的原始仓库,因为我想从远程获取更新,

我使用git pull remote branch_name,然后我的本地repo处于冲突模式,现在我想取消git pull的效果,所以我使用git stash,但是很惊讶地发现我没有这样做?怎么了?

详细信息如下:

[mirror@home weechat]$ git status
# On branch master
# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#       both modified:      CMakeLists.txt
#       both modified:      ChangeLog
#       both modified:      NEWS
#       both modified:      configure.in
#       both modified:      po/cs.po
#       both modified:      po/de.po
#       both modified:      po/es.po
#       both modified:      po/fr.po
#       both modified:      po/hu.po
#       both modified:      po/ru.po
#       both modified:      po/weechat.pot
#       deleted by us:      src/irc/irc-server.c
# …
Run Code Online (Sandbox Code Playgroud)

git github git-stash git-pull merge-conflict-resolution

12
推荐指数
2
解决办法
2万
查看次数

由于与UserInterfaceState.xcuserstate冲突而无法合并

我创建了一个分支并进行了一系列更改.我提交了更改,然后存档了更改.然后我切换到主分支并尝试进行合并.它说我有未提交的更改.所以我在master分支上做了一个提交,看看它在说什么.它说有一个名为UserInterfaceState.xcuserstate的文件已被修改.所以我做出了改变(不确定改变是什么).然后我试着再次合并.然后它打开一个合并窗口,表明与UserInterfaceState.xcuserstate存在冲突.所以我回到分支机构,发现现在需要提交相同的文件.这没有出现过.所以我承诺了,然后又回到了主分公司.我再次尝试合并但由于未提交的更改而无法合并.果然,UserInterfaceState.xcuserstate再次需要提交.我承诺并尝试合并.冲突也有同样的问题.这是一个恶性循环.

该文件是什么以及如何解决报告的冲突.它不会显示在我的项目导航窗口中.此外,它不在unix文件系统中.我完全陷入困境.建议?我正在使用xcode 4.5.2

xcode commit merge-conflict-resolution

12
推荐指数
2
解决办法
2万
查看次数

Git pull将自行中止,本地文件更改将被合并覆盖

我已经更改了我朋友正在同时工作的文件.我做了一些改变,现在我想推它,但它说我应该先拉.当我git pull,它说:

错误:对以下文件的本地更改将被合并覆盖:请提交更改或存储它们,然后才能合并.
中止

我该如何合并文件?如果我这样做,我朋友的文件会彻底改变吗?我相信他已经添加了一些东西,我添加了我的东西.我们的变更将如何处理?

git git-pull merge-conflict-resolution

12
推荐指数
2
解决办法
4万
查看次数

Git rebase因冲突而失败,但没有冲突

我试图对rebase我已提交但未推送的代码执行操作,因为我听说可能会影响我正在处理的内容的原点发生了一些变化.这是我得到的:

$ git rebase origin/thor-develop
First, rewinding head to replay your work on top of it...
Applying: PH-2127: F193: SYO for Signed in User
Using index info to reconstruct a base tree...
M       js/angular/localization/StoreListCtrl.js
M       templates/default_site/site_embed.group/html_header.html
<stdin>:17: trailing whitespace.

<stdin>:73: trailing whitespace.

<stdin>:77: trailing whitespace.

<stdin>:78: trailing whitespace.
                            $scope.address_dropdown = addressStore.getTop($scope.my_occasion, 3);
<stdin>:79: trailing whitespace.

warning: squelched 16 whitespace errors
warning: 21 lines add whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging templates/default_site/site_embed.group/html_header.html
Auto-merging js/angular/localization/StoreListCtrl.js …
Run Code Online (Sandbox Code Playgroud)

git rebase tortoisegit merge-conflict-resolution

12
推荐指数
1
解决办法
6211
查看次数

已解决的VS代码中的git合并冲突,但仍然表示尚未解决

所以我有一个开发分支和主题分支.我正在使用Window的VS Code中的默认终端.在主题分支中,我做了,git merge develop因为我刚刚开发了分支.现在在一个文件中存在简单的合并冲突.在VS Code中,我解决了冲突.在代码页上,没有更多的冲突可以Accept Incoming或者Accept Current,但是当我尝试在左侧的"源代码管理"面板上暂存文件时,它会显示一个警告弹出窗口Are you sure you want to stage with merge conflicts?

这是正常的吗?看起来VS Code并不认为我解决了冲突,即使我刚刚做了,并且文件中没有冲突.或者有什么我缺少Git/VS Code-wise?

git merge merge-conflict-resolution visual-studio-code

12
推荐指数
3
解决办法
4700
查看次数