我有两个分支A和B.我想要做的是在A上创建一个新的(合并)提交,当前状态为A作为父级,引用B描述的文件树丢弃任何东西.基本上是历史B应该被压缩成一个提交.
具体的存储库状态由两个独立的分支组成,这些分支没有共同的祖先(来自两个独立的独立存储库),但描述相同的内容.现在我想找到一个"git" - 将它们组合在一起.一个基本的解决方案(没有git)将是结帐A并只是将B的内容复制到工作树中并执行git commit.这基本上是我之前所做的将第二个存储库的内容传播到第一个存储库中的内容.
用git做的我试过了
git checkout A
git merge --squash B
Run Code Online (Sandbox Code Playgroud)
但不幸的是,它为A和B之间不同的所有文件生成了合并冲突,这肯定不是我的预期.
基本上就像是
git merge --squash -s theirs
Run Code Online (Sandbox Code Playgroud)
应该做的工作,但合并策略theirs不存在.阅读文件显示使用类似的东西的可能性
git merge -X theirs
Run Code Online (Sandbox Code Playgroud)
这是合并策略的一个选项recursive.但是这仍然会合并非冲突的块.只有冲突的块直接从中获取theirs.
正如您所评论的,从我在“ git 命令使一个分支像另一个分支一样”中列出的所有合并策略中,第二个选项接近您所需要的:
显示为合并,我们的作为第一个父级。(由jcwenger
提出)
git checkout -b tmp upstream
git merge -s ours thebranch # ignoring all changes from downstream
git checkout downstream
git merge --squash tmp # apply changes from tmp but not as merge.
git rev-parse upstream > .git/MERGE_HEAD #record upstream 2nd merge head
git commit -m "rebaselined the branch from upstream" # make the commit.
git branch -D tmp # deleting tmp
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |