所以,
我突然遇到这个,因为它以史诗般的浮躁形式,使我的应用程序无用,但git stash pop(或apply)会自动处理合并冲突。当它这样做时,它会将两个版本添加到文件中,如下所示:
<<<<<<< Updated [remote]
Change from Remote
=======
Change from Stash
>>>>>>> Stashed changes
一开始不知道这个花了我一些时间,因为那些添加的行使xml文件无效。
所以,我想知道是否有办法强制git stash不自动合并但是留下冲突,以便可以使用git mergetool解决它们,而不是要求我在编辑器中打开每个文件并处理&#34; merte&#34;没有为合并冲突设计的工具的好处。
由于 Jaeden&#34; Sifo Dyas&#34; al&#39; Raec Ruiner
答案 0 :(得分:1)
git stash apply
使用的合并过程 - 这是git stash pop
的前半部分 - 在留下效果方面与任何其他合并相同:
$ git status
On branch master
nothing to commit, working tree clean
$ git log --all --decorate --oneline --graph
* f9a96c0 (HEAD -> master) conflicting changes for stash
| * 069a595 (refs/stash) WIP on master: 6fee57d add file "file"
| |\
|/ /
| * c466c42 index on master: 6fee57d add file "file"
|/
* 6fee57d add file "file"
* 2353af8 initial
此时,无论我是运行git stash apply
还是git stash pop
,我都会遇到合并冲突,然后流程停止(不会执行git stash pop
的后半部分):< / p>
$ git stash apply
Auto-merging file
CONFLICT (content): Merge conflict in file
$ git reset --hard HEAD
HEAD is now at f9a96c0 conflicting changes for stash
$ git stash pop
Auto-merging file
CONFLICT (content): Merge conflict in file
$ git stash list
stash@{0}: WIP on master: 6fee57d add file "file"
索引中的内容现在是未合并状态,文件file
的所有三个副本都存在:
$ git ls-files --stage
100644 239c0dc4252320079890fff28cd408eb825776f5 0 README
100644 2983120c0897fea017d8398b5ffdc5e3ef0e17ad 1 file
100644 27b6da381575999c9ba975e9df9ba6caa45e3165 2 file
100644 080f90d42698e258e3efa8059c78ebfd5fdd7bd8 3 file
和git mergetool
很高兴能够在这一点上运行:
$ git mergetool
[snip configuration complaint - I never use git mergetool
so it is not configured]
Merging:
file
Normal merge conflict for 'file':
{local}: modified file
{remote}: modified file
Hit return to start merge resolution tool (bc):
所以,我想知道是否有办法强制执行git stash不自动合并但是留下冲突......
此时,该文件的所有三个版本都存在于索引中。其中只有两个--ours
(通常与HEAD
提交版本相同)和--theirs
(在这种情况下为stashed-commit版本)具有方便的git checkout
命令语法,但您也可以使用:<number>:path
语法提取合并基本版本。运行git mergetool
会为您执行此操作 - 在运行已配置的合并工具之前提取基本,左侧/本地/ ours
和右侧/远程/ theirs
版本。 / p>
因此,我不确定你的问题是什么。