gpt4 book ai didi

Git:什么是 graftcommit 或 graft-id?

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

关于 git-filter-branch ,据说:

To set a commit (which typically is at the tip of another history) to be the parent of the current initial commit, in order to paste the other history behind the current history:

git filter-branch --parent-filter 'sed "s/^\$/-p <graft-id>/"' HEAD

(if the parent string is empty - which happens when we are dealing with the initial commit - add graftcommit as a parent).

这正是我想要的,即设置一些根提交(A)的父级(提交B)。参见 here一个相关的问题。

但是那个命令中的 graft-id 到底是什么?那是新的 parent 吗,即A

进一步,给出了一个更简单的例子来实现同样的目的:

or even simpler:

echo "$commit-id $graft-id" >> .git/info/grafts
git filter-branch $graft-id..HEAD

同样,什么是 $graft-id应该在这个例子中?和 $commit-id = A , 正确的?或者是$commit-id = B$graft-id = A

我还读了this但我仍然不太明白为什么我需要这样一个概念。为什么我不能做 git filter-branch A..HEAD还是这样?


好吧,我想我明白了,看看我自己的答案。

解释我为什么需要它:

在我们的项目中OpenLieroX ,我们曾一度包含 Google Breakpad。

我们没有从官方 SVN 中获取它(因为它当时对我不起作用)而是从最新的 LastFM stable 中获取(它只是随机的,来自那里 - 我也有它我的磁盘,并且知道 LastFM 的人可能使用了一些稳定的 Breakpad 版本)。

然后,随着时间的推移,我们对自己的 Google Breakpad 副本应用了几个补丁。

现在,几个月后,我们想要稍微清理一下历史记录,对我们所有的 Breakpad 补丁有一个很好的了解,也许还可以让它们上游。最重要的是(对我们而言),我们想更新我们的 Breakpad 副本。

所以,我认为最好的办法是创建一个新的 Git 存储库,从某个地方获取官方源代码历史记录并通过 git filter-branch 从我们的主存储库中获取所有 Breakpad 特定的东西|进去。我用了this Breakpad mirror作为基地。 filter-branch也有点复杂,因为我们将整个 Breakpad 目录移动到 OpenLieroX 存储库中的一个位置。

所以我最终得到了三个分支:

  • breakpad-in-mainsrc : git filter-branch -Breakpad 在 src/breakpad/external 时的首次运行.
  • breakpad-in-libs : git filter-branch -Breakpad 在 libs/breakpad 时的第二次运行.
  • official :master的副本来自 Breakpad mirror .

然后我在 official 中搜索提交最接近 breakpad-in-mainsrc 中的根.我没有得到任何完美匹配,所以我使用了最接近的一个(写了一个小的 Python 脚本来解决这个问题)。这个现在被标记为 olx-closest-initial-breakpad .

然后我想将这三个历史 merge 在一起。这按照上述方式进行得很好(并在下面给出了我自己的答案)。

结果在这里:OpenLieroX Google Breakpad on GitHub

最佳答案

好的,它似乎按我预期的方式工作。回答我自己的问题:

  • graft-id 实际上就是一个 commit-id,即提交的 SHA1。
  • $commit-id = B(但它必须是 SHA1,没有标签等)
  • $graft-id = A(同样,必须是 SHA1)

然后给定的更简单的方法按预期工作。

关于Git:什么是 graftcommit 或 graft-id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6088551/

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