不需要git clone,是否可以获取远程git仓库的提交日志/消息?

60
有没有可能在不git clone的情况下获取远程git仓库的提交日志/消息?
我使用的git仓库非常庞大,即使我使用--depth=1来运行git clone,克隆它仍然需要一些时间。
我正在寻找类似于这样的东西,
git remote-log .
我还研究了git-ls-remote,它只提供SHA和Heads/tags。我想获取最后两个提交标题,提交用户和提交SHA?
有人知道如何做到这一点吗?

6
我无法相信这是不可能的。这太荒谬了。SVN比这更好... - user541686
4个回答

29

如果你想查看一个分支的最新几个提交,可以尝试使用以下命令:

git clone -b [branch name] --single-branch [repo url] --depth=3

这将只克隆您感兴趣的分支上的最后3个提交。完成后,您可以进入克隆的存储库并查看历史记录。


3
感谢Noob的帮助。我会接受这个答案,但我想知道是否有一种方法可以在不下载整个仓库或只下载仓库日志而不是完整仓库的情况下查看git日志。 - Murtaza Pitalwala
1
--depth意味着除非给出--no-single-branch,否则将隐含--single-branch:D - juanmf
6
我只会添加 --bare,这样工作文件就不会被复制或检出。 - joveyol

19

如果没有本地(克隆的)副本,无法使用 git log 查看远程日志。您需要先克隆仓库,然后执行您想要的操作。一旦克隆完成,您可以获取不同的远程仓库并使用 git log <remote>/<branch> 命令。另一种方法是在服务器上使用软件,通过某种服务(例如Stash、GitHub企业版等)查看远程Git历史记录。

请参阅 远程存储库的提交历史记录

如果您想了解更多,请参考这个很好的资源:http://git-scm.com/book/en/Git-Basics-Viewing-the-Commit-History


3
你好 Aust,如果代码库很大,而我只想查看最后一次提交的人、提交标题和 SHA,我是否仍然需要下载所有文件? - Murtaza Pitalwala
1
很不幸,是的。请参见https://dev59.com/GmTWa4cB1Zd3GeqPAzSD - aust
1
好的,谢谢你的帮助。既然没有其他方法,我会接受你的“答案”。 - Murtaza Pitalwala
2
不是一个强硬的说法:P。我要指出,这在技术上是可能的。Git使用git-fetch-pack可以获取单个git对象和git-ls-remote来获取对象的名称(此页面讨论了git对象的类型和关系),理论上您可以使用它来获取任何您想要的git子集。 - Att Righ

16

不是完全相同,但有一个解决方法。

使用 GitHub 开发者 API。

1. Opening this will get you the recent commits.

    https://api.github.com/repos/learningequality/ka-lite/commits

    You can get the specific commit details by attaching the commit hash in the end of above url.

2. All the files ( You need sha for the main tree)

    https://api.github.com/repos/learningequality/ka-lite/git/trees/7b698a988683b161bdcd48a949b01e2b336b4c01

我希望这可以帮到你。


这应该是被接受的答案。它可能不适用于所有的Git远程分支,但在Github上肯定能给你想要的结果! - Flak DiNenno

0

我遇到了这个问题。在我的情况下,我可以访问.git文件。我能够使用以下方法从中提取信息:

git --git-dir=path/to/your/xyz.git log

这不仅提取了本地repo的日志信息吗? - Flak DiNenno

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