在远程分支上运行`git log`

时间:2012-09-06 00:08:56

标签: git github

我想要git存储库的git log输出,但我不想克隆整个存储库。

即。我想要一些语义上的东西,如下面的

git log git@github.com:username/reponame.git

如果有办法做到这一点,我也希望git whatchanged

也一样

如果github为此提供了一个简单的解决方案,我愿意将自己限制为只在github上托管的git存储库。

5 个答案:

答案 0 :(得分:3)

你可以做一个浅层克隆,如果你只需要最近的历史记录,这将限制你需要获取的东西数量:

git clone --depth 100 ...

答案 1 :(得分:3)

您应该获取远程分支,然后与之交互。 git fetch会将远程分支拉入本地存储库的FETCH_HEAD,而不是您的工作目录。

git log FETCH_HEAD --decorate=full会让您看到HEAD与refs / origin / HEAD(远程分支)相比的位置。

git whatchanged FETCH_HEAD --decorate=full与上述相同,但也会显示已更改的文件。

git diff HEAD FETCH_HEAD在您的存储库的HEAD和您刚刚获取的远程分支的HEAD之间存在差异

git diff --stat HEAD FETCH_HEAD更改的摘要预览,就像您在合并期间和git pull底部看到的一样。

请注意,如果您确实需要提取所提取的更改,请执行git merge FETCH_HEAD。 (当你git pull基本上只是进行获取然后合并时)

答案 2 :(得分:2)

我发现有两种方法可以使用GitHub:

  1. 使用Web API查询日志信息(不是简单但可行)
  2. 使用“svn log”,因为GitHub现在部分模拟Git存储库上的SVN服务器

答案 3 :(得分:0)

我认为您的解决方案是在github.com网站上查看历史记录。如果您需要git log从命令行工作,那么您需要自己的存储库克隆。

理论上你可以编写一个命令行工具来从github的API中提取提交信息,但这仅限于显示提交消息/元数据,而不是实际的差异。

答案 4 :(得分:0)

Unix方式是拥有一个shell帐户:

ssh user@otherserver cd reponame.git '&&' git log

ssh user@otherserver cd reponame.git '&&' git whatchanged

此方法的优点是可以在远程服务器上运行您想要的任何内容。我怀疑这对github有效。