2012-11-07 37 views
0

最后拉,改变了远程服务器上我们正在试图找出是否有意义,从我们以前的版本控制系统迁移到Git的文件只是一个独特的名单。 我们正在努力解决的一个问题是,如何确定自上次拉取后所有提交中的文件被其他人更改过。 特别是,如果多个提交中相同的文件已被更改,我们只想在列表中看到该文件一次。 从我已阅读,看来我必须真正拉远程仓库之前,我可以检查,但即使是这样,似乎没有成为一个(简单吗?)的方式只是让已经改变了所有的文件名列表。 我们混帐的了解还不是很深呢,但做一个获取关注的是,一些非常大的文件(图片,AIFF等)可能会被推迟,没有人希望有获取一切只为了找出有改变了吗? 我已经阅读了一些其他Q/A在stackoverflow中,但虽然我已经看到类似的问题,我还没有看到任何似乎可行的答案。 我们一直在尝试几种GUI工具来让生活变得更轻松(Tower和SmartGit),但他们似乎都无法做到这一点。我怎样才能得到,因为我使用Git

+0

你有到中央存储库访问什么?您可能能够在获取之前在远程存储库上运行diff。为了最佳使用,git依靠快速获取。在源代码库中存储大量的二进制资源可能会有更好的解决方案。 –

+0

我可以完全访问中央存储库---我们只是在一台linux服务器上创建了一个repo,我们都可以通过ssh直接访问它。你会在中央存储库上做什么?这个想法应该是查看远程更改与每个用户系统上的更改。但是,我认为你可能是对的,没有体面的方式来做这个没有获取。 – David

回答

1

的方式做节目哪些文件当前和以前的主人之间的变化:

git fetch 
git diff --stat master origin/master 

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

不幸的是,Git并不使它明显如何diff的没有拉本地更新。

+0

但是@David想要在知道差异结果之前避免抓取。 –

+0

@CharlesBailey我怀疑OP在更新上游之前更加担心上游的变化。基于'git fetch'的工作流程,在初学者的课程中经常被忽略,可以避免这个问题。 – user4815162342

+0

他特别声明,他关心的是抓取和抓取的大小。 –

0

尝试:

git log --stat 

应打印出当前签出库的详细日志。

不知道git会做你想做的,而不检查出当地第一。

+0

'git log --stat'未能满足要求(用粗体字指定),只有在多次提交中更改文件时才列出。 – user4815162342

+0

更重要的是,这显示了我已经提交的内容,它没有显示自上次执行pull操作后远程存储库中的文件已更改。 – David

1

随着通过SSH,你可以从一个本地克隆运行像这样的仓库直接访问。

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

你可能想把它放在脚本或别名中。请注意,$(git rev-parse origin/master)在克隆中本地运行,以检索克隆的远程跟踪分支的标识。

+0

这给了我有意义的错误,如 错误:无法访问“add7b64b5545e06a6cbc2445474e1cb5c2453189” – David

+0

@大卫:如果你只是做类似'SSH githost“混帐--git-DIR会发生什么= /数据/ repo.git show' –

+0

优秀的答案! – user4815162342