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