我不想要一个可视化合并工具,我也不希望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 rebase之后,在其他情况下,您可以在报告中找到我们标记为已删除的一些文件git status.根据Git,我们是谁?为什么?
它指的是我坐在这个分支上它是否适合我?或者它是指自己和在分支机构工作的人我反对?
关于如何解决有利于一个或另一个分支的合并冲突的 SO 有很多问题。但我找到的最常见的答案是使用git checkout --oursor git checkout --theirs。
问题是将从任一分支git checkout获取整个文件。文件的某些部分可能合并得很好,我们不希望它们被删除。
所以问题是:给定一个处于冲突状态的文件,是否有一种方法可以删除冲突标记以支持“我们的”或“他们的”,而无需将此策略应用于整个合并或从“我们的”中获取整个文件或“他们的”?
使用简单的脚本绝对可以做到这一点,但我想知道是否有我找不到的现有解决方案。
我将两个分支合并在一起,让我们说branchA和branchB。他们有大约100个有冲突的文件。
branchB可以接受所有工作,并且100%是我所需要的。我不想强制推送branchB或任何东西。
有没有一种方法可以合并这两个文件,只是说有任何冲突就可以接受branchB上的内容,所以我不必打开每个文件或“他们的文件”或“我们的文件”。
正在尝试从branchB进行递归合并,并使用-s和-x选项将branchA拉出,但这似乎没有按预期工作
谢谢