0

我们试图弄清楚从我们以前的版本控制系统迁移到 git 是否有意义。我们正在努力解决的一个问题是如何简洁地弄清楚自上次拉取以来其他人在所有提交中更改了哪些文件。特别是,如果同一个文件在多次提交中被更改,我们只想在列表中看到该文件一次。 从我读过的内容来看,似乎我必须先拉取远程存储库才能进行检查,但即便如此,似乎也没有一种(简单的?)方法来获取所有已更改文件名的列表。我们对 git 的理解还不是很深,但是做 fetch 的顾虑是一些非常大的文件(图像、aiff 等)可能已经被推送了,没有人愿意为了找出发生了什么而不得不去获取所有内容? 我已经阅读了 stackoverflow 中的其他一些 Q/As,但尽管我看到了看起来相似的问题,但我还没有看到任何似乎可行的答案。我们一直在尝试几种 GUI 工具来让生活更轻松(Tower 和 SmartGit),但它们似乎都无法做到这一点。

4

3 回答 3

1

显示当前和以前的主文件之间更改了哪些文件的方法:

git fetch
git diff --stat master origin/master

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

不幸的是,git 并没有明确说明如何在将更新拉到本地的情况下进行差异化。

于 2012-11-07T21:11:37.997 回答
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。

于 2012-11-08T06:46:01.337 回答
0

尝试:

git log --stat

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

如果不先在本地签出,不确定 git 会做你想做的事。

于 2012-11-07T21:04:11.893 回答