首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将git repo历史记录修改为线性

将git repo历史记录修改为线性
EN

Stack Overflow用户
提问于 2013-02-05 17:38:45
回答 1查看 3.1K关注 0票数 4

我们需要从Git源代码基础生成TFS存储库,我们希望保留原始提交历史记录,所以我尝试使用Tf-Git "git tf checkin -deep“命令,该命令应该为每个Git提交创建一个TFS变更集。

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

代码语言:javascript
代码运行次数:0
运行
复制
git-tf: cannot check in - commit 2b15822 has multiple parents, please rebase to form a linear history or use --shallow or --autosquash

这是可以理解的。但是如果现有的Git repo有一长串这样的提交,我们能做些什么呢?我知道可以花一两天的时间手动修改提交历史,但这不是我们想要花费的时间。我是否正确理解了没有自动修复提交历史成为线性的方法,因此,除非我们想在手动工作上花费大量时间,否则我们应该将整个历史作为单个变更集导入。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-05 17:47:41

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

代码语言:javascript
代码运行次数:0
运行
复制
git rebase -i <hash of commit before first branch has been created>

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

下面是一个示例:

代码语言:javascript
代码运行次数:0
运行
复制
A <- B <- E <-----F <- G      master
     ^            ^
      \          /
       - C <- D -             branch

提交CD位于一个分支上,并已通过合并提交F合并到主服务器中。

现在,当从master执行时,执行git rebase -i B将产生以下结果

代码语言:javascript
代码运行次数:0
运行
复制
A <- B <- C <- D <- E <- G    master

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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14704261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档