我有两个分支(A和B),我想合并来自分支A的单个文件与来自分支B的相应单个文件。
当前回答
我也遇到过同样的问题。准确地说,我有两个分支A和B,它们有相同的文件,但在一些文件中有不同的编程接口。现在在分支B中修改了独立于两个分支的接口差异的文件f的方法,但这一更改对两个分支都很重要。因此,我只需要将分支B的文件f合并到分支A的文件f。
一个简单的命令已经为我解决了这个问题,如果我假设所有的更改都在分支A和B中提交:
git checkout A
git checkout --patch B f
第一个命令切换到分支A,在那里我想合并B的文件f的版本。第二个命令用B的HEAD的f修补文件f。你甚至可以接受/丢弃补丁的单个部分。你可以在这里指定任何提交,而不是B,它不必是HEAD。
团体编辑:如果B上的文件f在A上还不存在,那么省略——patch选项。否则,您将收到“No Change.”消息。
其他回答
我的编辑被拒绝了,所以我附上了如何从远程分支处理合并更改在这里。
如果你必须在错误的合并后这样做,你可以这样做:
# If you did a git pull and it broke something, do this first
# Find the one before the merge, copy the SHA1
git reflog
git reset --hard <sha1>
# Get remote updates but DONT auto merge it
git fetch github
# Checkout to your mainline so your branch is correct.
git checkout develop
# Make a new branch where you'll be applying matches
git checkout -b manual-merge-github-develop
# Apply your patches
git checkout --patch github/develop path/to/file
...
# Merge changes back in
git checkout develop
git merge manual-merge-github-develop # optionally add --no-ff
# You'll probably have to
git push -f # make sure you know what you're doing.
您可以签出要合并的文件的旧版本,将其保存在不同的名称下,然后在两个文件上运行合并工具。
eg.
B:src/common/storeTs > /tmp/store。ts(其中B是分支名称/提交/标记)
·梅尔德src /普通专卖店。ts / tmp / store ts。
你可以用:
git merge-file
提示:https://www.kernel.org/pub/software/scm/git/docs/git-merge-file.html
我将这样做
Git format-patch branch_old..branch_new文件
这将为文件生成一个补丁。
在目标branch_old上应用补丁
去吧等等补丁
这使用git的内部扩散工具。 也许有一点工作要做,但是直截了当。
#First checkout the branch you want to merge into
git checkout <branch_to_merge_into>
#Then checkout the file from the branch you want to merge from
git checkout <branch_to_merge_from> -- <file>
#Then you have to unstage that file to be able to use difftool
git reset HEAD <file>
#Now use difftool to chose which lines to keep. Click on the mergebutton in difftool
git difftool
#Save the file in difftool and you should be done.
推荐文章
- 如何获得Git存储库中的Git存储库名称?
- 当git说它正在“解析delta”时,它实际上在做什么?
- Git命令将一个文件夹移动到另一个文件夹
- 在单个文件中重新启动/撤消冲突解决方案
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到
- 如何删除多个已删除的文件在Git仓库
- 使用vimdiff查看所有' git diff '