gpt4 book ai didi

Git 将 master merge 为没有提交历史的孤儿

转载 作者:太空狗 更新时间:2023-10-29 12:55:12 26 4
gpt4 key购买 nike

给定一个没有历史记录的 orphan 分支,我将如何 merge 在 master 分支上完成的更改,自创建孤儿的那一刻起,在推送时不复制所有提交历史远程孤儿。

A <- B <- C <- D  

orphan(created from state B) <-X <- Y

我想将 cd 带到孤立分支,然后将 xy 带到 master .

如果我执行 checkout orphan, merge masterrebase master orphan 得到提交,还有所有历史树。例如当我将孤儿推送到远程服务器时,每个人都将能够看到所有 master 的 历史。

稍后我想将 orphan merge 回 master,将提交 xy 带到那里。

编辑:

现在可以使用 git merge 将 orphan merge 到 master 中了

A <- B <- C <- D <------X <- Y
/
orphan <-X <- Y

但是,master merge 回 orphan 要么将整个 master 历史放入 orphan(例如变成 XB) 或 cherry picking 开头,但我需要跳过 merge 提交并且还会遇到更多冲突

最佳答案

Grafts 正是为此而构建的。

root=$(git rev-list my-orphan-branch --max-parents=0)  # get the orphaned-branch root
echo $(git rev-parse $root B) >.git/info/grafts # locally remember its real parent

现在所有的本地命令都会知道祖先,但它会保持 repo-local,push 和 fetch 不会导出它。

关于Git 将 master merge 为没有提交历史的孤儿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46651241/

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