gpt4 book ai didi

git - 将 git repo 历史修改为线性

转载 作者:行者123 更新时间:2023-12-05 01:28:34 26 4
gpt4 key购买 nike

我们需要从 Git 源代码库生成一个 TFS 存储库,我们想保留原始提交历史,所以我尝试使用 Tf-Git "git tf checkin --deep"命令,该命令应该为每次 Git 提交。

不幸的是,这一步失败了,因为 Git 存储库中的许多提交由于 merge 而有两个父项,并且 TFS 要求提交历史是线性的才能导入它。所以我收到以下错误:

git-tf: cannot check in - commit 2b15822 has multiple parents, please rebase to form a linear history or use --shallow or --autosquash

这是可以理解的。但是,如果现有的 Git 存储库有很长的此类提交链,该怎么办呢?我知道花一两天时间手动修改提交历史是可能的,但这不是我们想要的。我是否正确理解没有将提交历史修复为线性的自动方法,所以除非我们想在手动工作上花费很多时间,否则我们应该将整个历史作为单个变更集导入?

最佳答案

rebase 实际上应该为您解决这个问题。

git rebase -i <hash of commit before first branch has been created>

在执行该命令时 pop 的窗口中,不要更改任何内容。只需保存并关闭。

一个例证:
A <- B <- E <-----F <- G      master
^ ^
\ /
- C <- D - branch

提交 CD 位于一个分支上,并且已通过 merge 提交 F merge 到 master 中。

现在,当从 git rebase -i B 执行时,执行 master 将产生以下结果:
A <- B <- C <- D <- E <- G    master

请注意 merge 提交 F 消失了,因为它是空的。

关于git - 将 git repo 历史修改为线性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14704261/

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