我一直在Windows上使用Git(msysgit)来跟踪我一直在做的一些设计工作的变化.
今天我一直在使用不同的PC(带远程仓库brian),现在我正在尝试将今天完成的编辑合并到我笔记本电脑上的常规本地版本中.
在我的笔记本电脑上,我习惯git pull brian master将更改添加到我的本地版本中.除了主要的InDesign文档之外,一切都很好 - 这显示为冲突.
PC(brian)上的版本是我想要保留的最新版本,但我不知道哪些命令告诉repo使用这个版本.
我试着将文件直接复制到我的笔记本电脑上,但这似乎打破了整个合并过程.
谁能指出我正确的方向?
我不想要一个可视化合并工具,我也不希望vi冲突文件并手动选择HEAD(我的)和导入的更改(他们的)之间.大多数时候我要么想要他们所有的改变,要么全都想要改变.通常这是因为我的改变使它成为了上流,并通过拉动回到我身边,但可能会在不同的地方稍作修改.
是否有一个命令行工具可以摆脱冲突标记并根据我的选择选择所有这些?或者是一组git命令,我可以将自己命名为每个命令.
# accept mine
alias am="some_sequence;of;commands"
alias at="some_other_sequence;of;commands"
Run Code Online (Sandbox Code Playgroud)
这样做很烦人.对于'接受我的',我尝试过:
randy@sabotage ~/linus $ git merge test-branch
Auto-merging Makefile
CONFLICT (content): Merge conflict in Makefile
Automatic merge failed; fix conflicts and then commit the result.
randy@sabotage ~/linus $ git checkout Makefile
error: path 'Makefile' is unmerged
andy@sabotage ~/linus $ git reset --hard HEAD Makefile
fatal: Cannot do hard reset with paths.
Run Code Online (Sandbox Code Playgroud)
我怎么能摆脱这些变化标记?
我可以:
git reset HEAD Makefile; rm Makefile; git checkout Makefile
Run Code Online (Sandbox Code Playgroud)
但这似乎相当圆润,必须有更好的方法.在这一点上,我不确定git是否认为合并发生了,所以我认为这甚至不一定有效.
走另一条路,做"接受他们的"同样是凌乱的.我能弄清楚的唯一方法是:
git show test-branch:Makefile > Makefile; git add …Run Code Online (Sandbox Code Playgroud) 假设我做了一个git merge并且在某些文件中有冲突,比如说,package.json或者pom.xml也许是其他一些文件.
我想要
由于2),我无法使用,git merge -Xours因为这将解决所有冲突.我想只解决一个特定文件中的冲突.
由于3),我无法使用,git checkout --ours package.json因为这可能会丢失输入分支的一些更改.
用例例如是:自动合并脚本,它将以预定义的方式解决琐碎的众所周知的冲突,如果其他文件中存在其他冲突,则会失败.
我经常遇到的典型情况是有两个分支,其中version字段package.json分叉如下:
$ git diff
diff --cc package.json
index 75c469b,f709434..0000000
--- a/package.json
+++ b/package.json
@@@ -1,6 -1,6 +1,12 @@@
{
"name": "test",
++<<<<<<< HEAD
+ "version": "2.0.1",
++||||||| merged common ancestors
++ "version": "1.0.0",
++=======
+ "version": "1.0.2",
++>>>>>>> master
Run Code Online (Sandbox Code Playgroud)
是否可以使用给定策略解决JUST ONE文件的冲突?就像是:
git-resolve-conflict --ours package.json
Run Code Online (Sandbox Code Playgroud)