我有一个带子模块的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 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 merge命令.<<<<<<<,|||||||,=======,>>>>>>>标记).然后它将其状态设置为"合并"或类似.git mergetool ...配置的外部合并工具打开,参数指向BASE,LOCAL,OTHER,当然还有MERGED.有几点我很困惑:
diff3选项怎么样?它是否也被外部工具普遍理解?我找不到真正讲述整个故事的任何解释.
GitHub在一个月前添加了一个功能来解决Web界面上的合并冲突,但它只适用于"简单"的合并冲突:
简单的冲突
复杂的冲突
在介绍新功能的博客文章中,GitHub提到了竞争的线路变化,其范围从相当简单到非常复杂.
什么是合格的冲突太复杂,无法在网页编辑器中解决?
我从主分支中提取一些代码,但它包含与我的代码冲突.只有1个文件处于更改状态,只有1个更改,并且包含冲突.我通过选择"向右选择然后向左"解决它,但"拉"按钮未启用.它仍然被禁用.昨天我也遇到了同样的问题,但我忽略了.
现在又来了.这在Xcode 9.2中运行良好.我错过了什么或者我应该向Apple报告此错误吗?
我想重新创建合并冲突,以便我可以在第二轮正确解决它.
例:
我本质上想重新解决冲突问题.
我没有选择重新设置我的HEAD,因为分支已被推送到遥控器; 在我意识到冲突解决是错误的之前,还有可能让其他人承诺.
我也想避免直接修复分支'A'.
我想避免樱桃采摘.我知道我可以做一个标准的恢复和樱桃选择我的提交等,我不想这样做.
这样做有什么优雅的方式吗?
我已经尝试恢复合并提交然后再次恢复恢复和合并分支'B',但不幸的是它没有要求我在第二轮解决任何冲突,我只是得到标准的"已经是最新的"消息.
简单地说,我想重新创建我的冲突,以便我可以在第二轮正确解决它.
任何帮助都感激不尽.
谢谢.
我正处于变基中,我需要修复一些合并冲突。当我在 XCode 中打开文件时,我看到文件中的源代码控制冲突标记(<<<<<<< 等)。
如何使用 XCode 的合并工具以图形方式解决这些冲突?我正在寻找这个屏幕:
merge xcode merge-conflict-resolution git-merge-conflict xcode10
我有一个简单的场景。我已经在本地提交了更改,现在我想将远程(在我前面的一个分支)中的内容合并到本地工作目录中。
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) 在 Visual Studio Code 中使用 Git 作为源代码控制提供程序时,每当我尝试将冲突文件与保留当前版本的远程存储库合并时,都会遇到问题。
步骤如下:
如果我接受传入的更改,接受两个更改或向我以前的版本添加其他字符(以更改我之前尝试提交的版本),则一切正常。我认为当我选择“接受当前更改”并尝试暂存合并更改时,编辑器(或 Git?)不会将文件添加到 STAGED CHANGES 中,因为它与之前提交的版本相同,并且不会更新 git状态,仍然停留在合并冲突中。
合并时向以前的版本添加额外字符的解决方法工作正常,但我需要知道这是一个错误还是我在合并时遗漏了一些步骤。
请不要用命令行解决方法回复我(如 git merge --abort),我正在寻找一个 UI 友好的解决方案(并非我的所有队友都对命令行有信心)。提前致谢。
git ×9
git-merge ×2
github ×2
merge ×2
xcode ×2
algorithm ×1
file-format ×1
git-revert ×1
git-stash ×1
mergetool ×1
pull-request ×1
xcode10 ×1
xcode9.3 ×1