gpt4 book ai didi

git - 如何为所有提交移动 Git 存储库中的目录?

转载 作者:IT王子 更新时间:2023-10-29 00:34:52 26 4
gpt4 key购买 nike

假设我有一个包含此目录结构的存储库:

repo/
blog/
_posts/
some-post.html
another-file.txt

我想将 _posts 移动到 repo 的顶层,因此结构如下所示:

repo/
_posts/
some-post.html
another-file.txt

这对于 git mv 来说已经足够简单了,但是我想让历史看起来好像 _posts always 存在于repo,我希望能够通过 git log -- _posts/some-post.html 获取 some-post.html 的完整历史记录。我想我可以使用 git filter-branch 的一些魔法来完成这个,但我还没有想出具体的方法。有什么想法吗?

最佳答案

您可以使用子目录过滤器来实现这一点

 $ git filter-branch --subdirectory-filter blog/ -- --all

编辑 1:如果您不想有效地使 _posts 成为根,请改用树过滤器:

 $ git filter-branch --tree-filter 'mv blog/_posts .' HEAD

编辑 2: 如果某些提交中不存在 blog/_posts,则上述操作将失败。改用这个:

 $ git filter-branch --tree-filter 'test -d blog/_posts && mv blog/_posts . || echo "Nothing to do"' HEAD

关于git - 如何为所有提交移动 Git 存储库中的目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3142419/

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