标签: git-merge-conflict

如何从`git stash pop`解决子模块上的git合并冲突

我有一个带子模块的git存储库.我需要弹出我之前隐藏的变化.但是,这会导致子模块引用上出现合并冲突.

除了子模块之外,我想保留我对存储的更改.对于大多数代码文件,我可以通过编辑冲突文件来解决冲突,但这似乎不是子模块的选项.

如何解决合并冲突并仍然从存储中提取我的更改?

$ git stash pop
warning: Failed to merge submodule some-submodule (commits don't follow merge-base)
Auto-merging some-code
Auto-merging some-submodule
CONFLICT (submodule): Merge conflict in some-submodule
Run Code Online (Sandbox Code Playgroud)
$ git status
# On branch some-branch
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   some-code
#
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      some-submodule
Run Code Online (Sandbox Code Playgroud)

git git-stash git-merge-conflict

10
推荐指数
1
解决办法
6588
查看次数

Git - 如何在采摘樱桃时自动解决"我们删除"冲突

我运行以下命令:

git cherry-pick SHA --strategy-option theirs
Run Code Online (Sandbox Code Playgroud)

并得到这样的冲突等待手动解决:

deleted by us: SOME_FILE
Run Code Online (Sandbox Code Playgroud)

有没有办法让git通过添加我们删除的文件自动解决此类冲突?

git git-cherry-pick git-merge-conflict

10
推荐指数
2
解决办法
3744
查看次数

Git:关于合并算法,冲突格式以及与mergetools的相互作用的困惑

我不知道细节,但据我了解合并和冲突解决的过程,它如下(假设存储库中只有一个文件,在两个分支中修改):

  1. 用户发出git merge命令.
  2. Git应用一些特定git的算法来自动合并两个修改过的文件.为此,它创建了该文件的BASE,LOCAL,OTHER和BACKUP版本.
  3. 然后它将合并结果写入原始跟踪文件(称为MERGED).
  4. 假设存在冲突.Git使用某种格式来表示冲突(<<<<<<<,|||||||,=======,>>>>>>>标记).然后它将其状态设置为"合并"或类似.
  5. 如果用户然后发出git mergetool ...配置的外部合并工具打开,参数指向BASE,LOCAL,OTHER,当然还有MERGED.

有几点我很困惑:

  • 该工具是否会始终了解Git的冲突格式?它是标准化的吗?diff3选项怎么样?它是否也被外部工具普遍理解?
  • 该工具是否会应用自己的(可能是不同的)合并算法并完全废弃Git的输出?
  • 当Git需要执行递归合并(因为有几个合并基础) - 并且中间合并产生冲突时 - 它会将内部冲突标记视为纯文本,就像任何其他非冲突文本一样吗?或者冲突格式是递归的吗?

我找不到真正讲述整个故事的任何解释.

git algorithm file-format mergetool git-merge-conflict

10
推荐指数
1
解决办法
517
查看次数

GitHub Pull Request复杂冲突

GitHub在一个月前添加了一个功能来解决Web界面上的合并冲突,但它只适用于"简单"的合并冲突:

没有冲突 GitHub Pull Request  - 没有冲突

简单的冲突

GitHub Pull Request  - 解决简单冲突

复杂的冲突

GitHub Pull Request  - 解决复杂的冲突

在介绍新功能的博客文章中,GitHub提到了竞争的线路变化,其范围从相当简单到非常复杂.

什么是合格的冲突太复杂,无法在网页编辑器中解决?

git github merge-conflict-resolution git-merge-conflict

9
推荐指数
1
解决办法
2462
查看次数

Xcode 9.3 Git merge解决冲突后的问题

我从主分支中提取一些代码,但它包含与我的代码冲突.只有1个文件处于更改状态,只有1个更改,并且包含冲突.我通过选择"向右选择然后向左"解决它,但"拉"按钮未启用.它仍然被禁用.昨天我也遇到了同样的问题,但我忽略了.
现在又来了.这在Xcode 9.2中运行良好.我错过了什么或者我应该向Apple报告此错误吗?

这是截图. Xcode截图

git xcode git-merge-conflict xcode9.3

9
推荐指数
1
解决办法
662
查看次数

“此分支存在必须解决的冲突”但它已经合并

我将PR与 GitHub Web 界面合并,在成功的合并提交中解决。

后来,GitHub 抱怨这个分支有冲突,必须解决。有人知道为什么或如何合并状态吗?

git github merge-conflict-resolution pull-request git-merge-conflict

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

推送后重做坏git冲突解决方案

我想重新创建合并冲突,以便我可以在第二轮正确解决它.

例:

  • 分支'A'签出.
  • 分支'B'合并为.
  • 从合并解决的冲突(创建合并提交).
  • 推送到远程.
  • 其他人合并到分支'A'并推送到远程.
  • 哦亲爱的,我已经意识到我的冲突解决是错误的,我和他们一起去了,而不是我的.
  • 怎么办?

我本质上想重新解决冲突问题.

我没有选择重新设置我的HEAD,因为分支已被推送到遥控器; 在我意识到冲突解决是错误的之前,还有可能让其他人承诺.

我也想避免直接修复分支'A'.

我想避免樱桃采摘.我知道我可以做一个标准的恢复和樱桃选择我的提交等,我不想这样做.

这样做有什么优雅的方式吗?

我已经尝试恢复合并提交然后再次恢复恢复和合并分支'B',但不幸的是它没有要求我在第二轮解决任何冲突,我只是得到标准的"已经是最新的"消息.

简单地说,我想重新创建我的冲突,以便我可以在第二轮正确解决它.

任何帮助都感激不尽.

谢谢.

git git-revert git-merge-conflict

8
推荐指数
1
解决办法
971
查看次数

如何使用 XCode 的合并工具解决冲突?

我正处于变基中,我需要修复一些合并冲突。当我在 XCode 中打开文件时,我看到文件中的源代码控制冲突标记(<<<<<<< 等)。

如何使用 XCode 的合并工具以图形方式解决这些冲突?我正在寻找这个屏幕:

在此处输入图片说明

merge xcode merge-conflict-resolution git-merge-conflict xcode10

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

Git拉取覆盖并且不合并或确认同一分支(主节点)上的冲突

背景:

我有一个简单的场景。我已经在本地提交了更改,现在我想将远程(在我前面的一个分支)中的内容合并到本地工作目录中。

git branch -vv --list --all 给出以下内容:

  master                79d9d4e [origin/master: behind 7] Footprint UI working
  remotes/origin/HEAD   -> origin/master
  remotes/origin/master a86a1a9 Added sample data to webpage
Run Code Online (Sandbox Code Playgroud)

我特别想合并一个文件。这是差异: git diff --stat a86a1a9 79d9d4e views/footprint.handlebars

views/footprint.handlebars | 65 +++++++++++++++++++++++++++++++++--------------------------------
 1 file changed, 33 insertions(+), 32 deletions(-)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行时git pull,本地提交中的文件版本将被远程版本覆盖。更详细地说:

$ git fetch -v origin  

From github.com:githubusername/foo
 = [up to date]      master     -> origin/master
Run Code Online (Sandbox Code Playgroud)
$ git merge origin  
Updating 79d9d4e..a86a1a9
Fast-forward
...
 views/footprint.handlebars    | 65 ++++++++++++++++++++++++++++++++---------------------------------
...
 6 files changed, 220 insertions(+), …
Run Code Online (Sandbox Code Playgroud)

git version-control merge git-merge git-merge-conflict

8
推荐指数
1
解决办法
462
查看次数

Visual Studio Code 不会暂存 Git 合并更改

在 Visual Studio Code 中使用 Git 作为源代码控制提供程序时,每当我尝试将冲突文件与保留当前版本的远程存储库合并时,都会遇到问题。

步骤如下:

  • 远程存储库上的文件已被修改,我在本地存储库上修改了相同的文件
  • 当我尝试将更改推送到服务器时,我(正确地)收到一条错误消息(无快进),我必须执行拉取以更新我的本地存储库
  • 拉动时,编辑器警告我文件上的冲突,给我四个选项(接受当前更改、接受传入更改、接受两个更改、比较更改)
  • 我接受当前更改(我的本地版本)并保存文件。当我尝试暂存更改时,该文件不会添加到 STAGED CHANGES 部分,但它会消失。Git 仍处于“合并”状态,我什么也做不了(推给我与第一次推相同的错误,拉给我一个错误,就像我没有解决冲突一样;实际上在 .git 文件夹中我还有 MERGE_HEAD 文件)

如果我接受传入的更改,接受两个更改或向我以前的版本添加其他字符(以更改我之前尝试提交的版本),则一切正常。我认为当我选择“接受当前更改”并尝试暂存合并更改时,编辑器(或 Git?)不会将文件添加到 STAGED CHANGES 中,因为它与之前提交的版本相同,并且不会更新 git状态,仍然停留在合并冲突中。

合并时向以前的版本添加额外字符的解决方法工作正常,但我需要知道这是一个错误还是我在合并时遗漏了一些步骤。

请不要用命令行解决方法回复我(如 git merge --abort),我正在寻找一个 UI 友好的解决方案(并非我的所有队友都对命令行有信心)。提前致谢。

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

7
推荐指数
1
解决办法
3286
查看次数