8

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

即我想要一些语义上的东西,如下所示

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

如果有办法做到这一点,我也想要同样的git whatchanged

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

4

5 回答 5

7

您应该获取远程分支然后与之交互。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基本上只是在进行提取然后合并时)

于 2013-01-10T17:13:35.047 回答
3

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

git clone --depth 100 ...
于 2012-09-06T00:42:34.417 回答
2

我发现了两种使用 GitHub 执行此操作的方法:

  1. 使用 web API 查询日志信息(不简单但可行)
  2. 使用“svn log”,因为 GitHub 现在部分模拟了 Git 存储库上的 SVN 服务器
于 2014-11-20T12:51:25.997 回答
1

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

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

于 2012-09-06T00:36:59.340 回答
0

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

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

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

这种方法的优点是可以在远程服务器上运行您想要的任何东西。我怀疑这是否适用于 github。

于 2012-09-06T00:47:54.183 回答