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

9
我想要一个Git存储库的git log输出,但我不想要克隆整个存储库。
例如:我希望像以下语义一样:git log git@github.com:username/reponame.git 如果有一种方法可以做到这一点,我也想要相同的方法来执行git whatchanged 如果GitHub提供了简单的解决方案,我愿意将自己限制在仅使用托管在GitHub上的Git存储库。

我认为这会违背git作为一个“分布式”版本控制系统的初衷,不是吗? - jeremyharris
远程仓库上的提交历史记录的副本 - sondra.kinsey
5个回答

8
你应该先获取远程分支,然后与之交互。 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时,实际上只是在执行fetch然后merge的操作。)

1
这个回答与实际问题无关,但我还是点了赞,因为当我在 DuckDuckGo 上搜索“git log remote branch”时,它解决了我想要解决的问题 :-) - tobixen

3
我在GitHub上找到两种方法来完成这个任务:
  1. 使用Web API来查询日志信息(不易但可行)
  2. 使用“svn log”,因为GitHub现在在Git存储库上部分模拟了SVN服务器

3
你可以进行浅克隆,这将限制你需要获取的内容量,如果你只需要最近的历史记录:
git clone --depth 100 ...

1

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

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


-1
Unix 的方式是拥有一个 shell 账户:
ssh user@otherserver cd reponame.git '&&' git log

并且

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

这种方法的优点是可以在远程服务器上运行您想要的任何内容。但我怀疑这在 Github 上可能不起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接