git - 有没有办法列出远程存储库跟踪的所有文件?
问题描述
我知道我可以列出某个分支跟踪的文件git ls-tree -r <branch> --name-only
,这正是我想要的。但是,当我尝试使用仅远程分支执行此操作时,我收到错误:sh: origin/master: No such file or directory
. 那么有没有一种方法可以在不拉动该分支的情况下列出远程分支中的文件?
解决方案
首先值得一提的是,这不是由分支跟踪或由(Git)存储库跟踪的文件集,因为这些短语的定义并不明确。git ls-files -r
on 提交的结果是该提交中的文件集。
在 Git 中跟踪这个词相当多,但是当我们在 Git 中谈论跟踪文件与未跟踪文件时,我们的意思是现在索引中存在或不存在的文件。
如果您使用或提取某些特定的提交,将在 Git 索引中的文件集通常是1该提交中的文件集。因此,从这个意义上说,您可以将这些“跟踪”文件称为“跟踪”文件,但如果这样做,您就会陷入混乱。被跟踪的文件是那些在 Git 的索引中的文件。您可以随时更改该设置:git checkout
git switch
git add F
将文件的工作树副本复制F
到 Git 的索引中。2 如果它以前不存在——未被追踪——好吧,现在它存在了,所以现在它被追踪了。或者:
git rm --cached F
将删除文件 F 的索引副本。如果之前存在,则现在不存在;现在文件F
未跟踪。文件F
是否在其他提交中都没有关系,除非并且直到您签出该提交。
每当您进行新的提交时,Git 都会使用当时索引中的文件进行新的提交。甚至命令git commit -a
、和 也可以使用索引,尽管这些命令也使用额外的临时索引文件,以便在发生故障时轻松回滚更新。(这使得描述它们的确切动作,特别是在存在 Git 钩子的情况下,特别棘手。)git commit --include files
git commit --only files
同时,您可以检查您拥有的任何提交,使用git ls-files -r
它;您只需要使用 Git 可以转换为正确提交哈希 ID 的名称。 正如您在评论中指出的那样,您使用的是两个名称而不是一个名称。
1这个词通常在这里,因为您可以通过设置环境变量来使用 Git 的索引或使用备用索引来玩各种技巧GIT_INDEX_FILE
。此外,Git 有时会允许您在提交和/或分支切换操作之间进行索引和/或工作树更改。有关血腥细节,请参阅Checkout another branch when there are uncommitted changes on the current branch。
2如果您在当前位于索引中的文件上设置了--assume-unchanged
或位,则不会从工作树更新索引。您也可以在脚注 1 中使用。--skip-worktree
git add
GIT_INDEX_FILE
推荐阅读
- r - Latent growth curve and cross-lagged panel modelling with 2 latent variables with 3 waves
- css - 在不同的组件中以不同的方式覆盖 Angular Material CSS
- google-cloud-platform - 如何在 Apache Beam 中提取 Google PubSub 发布时间
- javascript - 从侦听器中删除 EventListener 时遇到问题
- go - 如何获取 go 包的统计信息?
- c++ - 使用 libcurl 下载功能,但它工作不完整
- r - 我想在 for 循环中为每次迭代分配和存储一个新值
- python - 如何使用 Chalice 处理 DynamoDB 流事件
- reactjs - Reactjs - 主细节导航 - 回去时主应该在同一个位置
- android - 如何在后台设置警报或通知作为服务并使其即使在应用程序关闭时也能运行