首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我如何简单地线性化我的git历史?

我如何简单地线性化我的git历史?
EN

Stack Overflow用户
提问于 2013-08-01 15:50:55
回答 1查看 3.2K关注 0票数 24

问题

假设我有一个类似如下的提交:

A - B - C - D - G - H
     \         /
      - E - F -

我怎样才能得到一个完美的线性历史,只遵循第一个父母?

例如,我想得到:

A - B - C - D - G'- H'

如上所述,预计G和H的SHA1将发生变化。(原因很明显)。如果A、B、C和D的SHA1也改变了,那么我想知道为什么。

背景

这样做的目的是为了避免潜在的合并提交,这可能会在执行简单的git rebase -i时出现。

真正的要点是希望获得更多的洞察力,以便确定哪些提交在特定的分支中,例如,如果我们有以下图表:

I - J - K - L - M
 \     /   /   / 
  - N - O - P -

其中N合并到K中,但O合并到L中,而P合并到M中。

我希望能够将我的历史记录线性化,这样就可以识别和检查这些有问题的提交。我想要有一棵树,可以识别O没有放到上游分支中,即使我可能通过使用git cherry识别出N和P在上游分支中也可能丢失,但是这里的任何建议都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2013-08-01 16:05:32

使用以下命令手动执行此操作:

git rebase -i D-sha1

编辑文件,将G设置为" Edit“。保持"pick“为H.保存并关闭编辑器。

现在Git允许您编辑G提交,让我们将其修改为F提交的挤压合并。您需要执行以下操作:

#cancel the merge commit and position HEAD to D
git reset --hard HEAD~
#squash merge and continue
git merge --squash F-sha1
git rebase --continue

请注意,如果您必须在第一次合并中解决相同的冲突,则必须解决这些冲突。

正如您所说的,您将只有G和H的新SHA1。

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

https://stackoverflow.com/questions/17988099

复制
相关文章

相似问题

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