gpt4 book ai didi

git - 如何在 Git 2.9 之前 git merge 无关历史(--allow-unrelated-history 不可用)

转载 作者:行者123 更新时间:2023-12-04 08:44:54 26 4
gpt4 key购买 nike

我知道有一个选项 --allow-unrelated-histories自 Git 2.9 起可用于 merge 不相关的历史记录。然而,由于一些遗留的公司原因,我坚持使用旧版本的 Git 1.8。
任何人都可以帮助展示如何在没有 --allow-unrelated-histories 的情况下执行此操作?

最佳答案

如果这两个分支在它们的历史记录中有应该自然缝合在一起的点(例如:具有相同内容的提交),您可以使用 git replace (不过,我不知道它是否已经存在于 1.8 中?)或将历史拼接在一起的嫁接:

# say <commit-a> on branch 'other' should be treated as
# <commit-b> on branch 'mine' :
git replace <commit-a> <commit-b>

# if 'git replace' does not exist :
# find the *descendant* of commit-a (say : child-a) and run :
echo "<child-a> <commit-b>" >> .git/info/grafts

# <child-a> is now treated as if <commit-b> was one of his parents
然后你应该可以运行 git merge .
删除 replace ( git replace -d <commit-a> ) 或移植(从 .git/info/grafts 中删除行,如果没有任何其他移植,则删除整个文件)。

另一种选择是转储分支 other 的完整内容作为补丁(例如:将其与具有空内容的虚假提交进行比较),并使用 git apply :
git diff <commit with empty content> other > other.patch
git apply other.patch

关于git - 如何在 Git 2.9 之前 git merge 无关历史(--allow-unrelated-history 不可用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64371024/

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