【发布时间】:2016-05-19 22:46:07
【问题描述】:
从存储库中检索单个文件。
我有一个包含 10 个目录/一些文件和 pom.xml 的存储库以及一个名为 pom.xml 的文件(在目录之外)。所以我需要从该存储库中检索一个带有历史记录的 pom.xml。这里的一个问题是 pom.xml 在所有 10 个目录中。当我尝试使用 git filter-branch -f --prune-empty --index-filter 'git rm --cached --ignore-unmatch $(git ls -files | grep -v "pom.xml")',此命令检索目录中的所有 pom.xml,包括 pom.xml。你能帮我检索除 pom.xml 之外的目录中的 pom.xml。
【问题讨论】:
-
听起来像是一个奇怪的用例。为什么不能获取整个仓库?
-
我可以获得整个存储库。但我只需要一个位于目录之外的 pom.xml。问题是我在所有这些目录中还有其他 10 个目录,我有 pom.xml 和其他文件。
-
如果您可以获得整个存储库并且您只需要一个文件,那么通常(并且通常是正确的)过程是获取整个存储库,然后仅使用其中的适当文件。这对于 pom 尤其重要,因为依赖关系可能非常复杂:仅仅因为您认为您现在只需要一个 pom 并不意味着有一天您将需要全部十个。
-
好吧,正如你所说,我得到了整个存储库。到目前为止,我想获得一个不在目录中的 pom。我需要一个不在目录中的 pom。所以如果有任何可能请告诉我。
-
git filter-branch -f --prune-empty --index-filter 'git rm --cached --ignore-unmatch $(git ls-files | grep -v "pom.xml" )' 我尝试过这种方式。它也获取了目录中的所有 pom.xml。