gpt4 book ai didi

git - git 过滤器分支和 git 子树之间的区别?

转载 作者:太空狗 更新时间:2023-10-29 12:47:52 31 4
gpt4 key购买 nike

正在搜索 throw SO 来寻找答案。遇到这个似乎没有给出任何答案的旧线程。重新触发此线程,希望有人知道!

有人能告诉我 git subtree 和 git filter-branch 的区别吗?为此,我将在原始问题中使用相同的示例:

git subtree split --prefix=some_subdir -b some_branch

git filter-branch --subdirectory-filter some_subdir some_branch

最佳答案

2016:是的,git subtree (a contrib/ shell)可用于拆分 repos,如 Using Git subtrees for repository separation 中所述,Stu Campbell .

不过,您需要删除在拆分文件夹中复制的代码(另请参阅 theamkanswer):

git subtree split --prefix=path/to/code -b split
git push ~/shared/ split:master
git rm -r path/to/code
git commit -am "Remove split code."

这不同于 git filter-branch ( native Git 命令)重写存储库历史记录,仅选取那些实际影响特定子目录内容的提交。

含义:filter-branch 运行后,git rm 没有代码。
git filter-branch 不会像 git subtree split 那样复制提交 :它会删除(“过滤掉”)所有与特定分支不匹配的内容标准(这里是子文件夹路径)。
再次参见 theamkanswer对于更新:使用新分支时没有重复:git subtree split --prefix=some_subdir -b some_branch


2021 年更新:

git filter-repo 可以 extract wanted paths and their history (剥离其他一切)

 git switch -c some_branch
git filter-repo --path some_subdir/ --refs some_branch

关于git - git 过滤器分支和 git 子树之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38735205/

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