gpt4 book ai didi

git read-tree 删除了所有历史记录

转载 作者:太空狗 更新时间:2023-10-29 14:32:10 25 4
gpt4 key购买 nike

我正在尝试使用 git read-tree merge 两个存储库。
问题是, merge 文件的先前提交历史消失了。显然我确实逐个文件检查过。

我根据这篇文章按照正常的方式进行子树 merge :
6.7 Git Tools - Subtree Merging

$ git remote add rack_remote git@github.com:schacon/rack.git
$ git fetch rack_remote
$ git checkout -b rack_branch rack_remote/master
$ git read-tree --prefix=rack/ -u rack_branch

我当前的工作区结构如下:

project P
- repoA
- repoB
- repoC
(... and many more repos)

我想改变它们的层次结构,使其成为:

project P
- repoA <=== have repoB and repoC inside.

在上面的示例中我看不到 merge 文件的历史记录,在 git log 结果中我也看不到。
(我想强调我的 repos 是 svn 克隆的,仍然链接到 svn 存储库。这会影响读取树行为吗?)

编辑:我尝试使用原始 Github 存储库,问题是一样的。

最佳答案

您描述的步骤不会将 merge 的历史记录添加为第二个父项。从链接中的文字来看,这似乎是他们的意图。由于您的意图不同,您应该稍微修改一下命令:

$ git remote add rack_remote git@github.com:schacon/rack.git
$ git fetch rack_remote

现在,首先启动 merge 。该命令使用“我们的”策略,因此它还没有真正改变任何东西。

$ git merge -sours --no-commit rack_remote/master

然后修改内容:

$ git read-tree --prefix=rack/ -u rack_remote/master

最后提交(生成编辑器):

$ git commit

现在完成了:您在子目录中有了 merge 的文件及其历史记录。

这可能不是创建具有任意内容的 merge 提交的唯一方法,而是第一个对我有用的方法。另请注意,无需创建本地分支镜像rack_remote/master,可以使用远程引用。

PS:您将需要使用 --follow 来跟踪文件历史记录,因为 merge 重命名了它们。

关于git read-tree 删除了所有历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33855701/

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