我怎样才能获得自从我上次使用Git以来在远程服务器上更改的唯一文件列表

时间:2012-11-07 21:01:09

标签: git

我们正试图弄清楚从我们以前的版本控制系统迁移到git是否有意义。 我们正在努力解决的一个问题是,如何在最后一次拉动之后,毫无疑问地弄清楚其他人在所有提交中改变了哪些文件。 特别是,如果在多次提交中更改了相同的文件,我们只想在列表中看到该文件一次。 从我读过的内容来看,似乎我必须在我检查之前实际拉动远程存储库,但即使这样,似乎也没有(简单?)方式来获取已更改的所有文件名列表。 我们对git的理解还不是很深,但是对提取的关注是一些非常大的文件(图像,aiff等)可能已被推送,没有人想要获取所有内容只是为了找出改变了什么? 我已经在stackoverflow中阅读了其他一些Q / As,但是虽然我看到了类似的问题,但我还没有看到任何看似可行的答案。 我们一直在尝试使用几种GUI工具来简化生活(Tower和SmartGit),但他们似乎都没能做到这一点。

3 个答案:

答案 0 :(得分:1)

显示当前和上一个主文件之间哪些文件已更改的方法:

git fetch
git diff --stat master origin/master

第一个命令在不更改树的情况下检索最新更新。第二个打印一个已更改文件的列表(以及插入/删除统计信息) - 如果您键入了git pull,则会删除所有已提交的提交。之后,您可以运行git merge origin/master将更改与上游更改合并。 (这相当于git pull,但是如果在此期间推送了任何内容,则pull可以从服务器获得新的更改。)

不幸的是,如果没有在本地提取更新,git就不会明白如何区分

答案 1 :(得分:1)

通过ssh直接访问存储库,您可以从本地克隆运行类似的东西。

ssh githost "git --git-dir=/data/repo.git diff --name-only\
             $(git rev-parse origin/master) master"

您可能希望将其放在脚本或别名中。请注意,$(git rev-parse origin/master)在克隆中本地运行,以检索克隆的远程跟踪分支的ID。

答案 2 :(得分:0)

尝试:

git log --stat

那应该打印出当前检出的存储库的详细日志。

不确定git会做什么,而不先在本地签出。