gpt4 book ai didi

git - 创建 merge 提交用他们的替换我们的

转载 作者:太空狗 更新时间:2023-10-29 13:15:21 24 4
gpt4 key购买 nike

我有两个分支 A 和 B。我想做的是在 A 上创建一个新的( merge )提交,A 的当前状态作为父级,它引用 B 描述的文件树,丢弃 A 中的任何内容。基本上 B 的历史应该被压缩成一个提交。

具体存储库状态由两个独立分支组成,它们没有共同的祖先(来自两个以前独立的存储库),但描述相同的内容。现在我想找到一种“git”方式将它们组合在一起。一个基本的解决方案(没有 git)是 checkout A 并将 B 的内容复制到工作树中,然后执行 git commit。这基本上就是我之前为将第二个存储库的内容传播到第一个存储库所做的工作。

我试过用git来做

git checkout A
git merge --squash B

但不幸的是,它为 A 和 B 之间不同的所有文件生成了 merge 冲突,这绝对不是我所期望的。

基本上是这样的

git merge --squash -s theirs

应该完成这项工作,但 merge 策略 theirs 不存在。阅读纪录片节目使用像

这样的东西的可能性
git merge -X theirs

这是 merge 策略recursive 的一个选项。但这仍然会 merge 不冲突的 block 。只有冲突的 block 直接取自他们的

最佳答案

正如您评论的那样,从我在“git command for making one branch like another”中列出的所有 merge 策略中,第二个选项接近您的需要:

Shows as a merge, with ours as the first parent.
(proposed by 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

关于git - 创建 merge 提交用他们的替换我们的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11793081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com