【发布时间】:2021-11-26 16:38:26
【问题描述】:
不久前,我的一位团队成员使用
克隆了我的代码git clone --bare -l /home/jaimemontoya/public_html/app/public.git /home/johndoe/app/public.git
他继续编码,当他使用git remote -v 时,他得到了这个:
origin ssh://johndoe@www.example.com/home/johndoe/app.git (fetch)
origin ssh://johndoe@www.example.com/home/johndoe/app.git (push)
他有最新的代码,所以有一次我想通过以下方式获取他的代码的最新版本:
git clone --progress -v "ssh://jaimemontoya@example.com/home/johndoe/app.git" "C:\Users\jaimemontoya\Apps\Marketing\app"
令我惊讶的是,当我导航到 C:\Users\jaimemontoya\Apps\Marketing\app 并使用 git log -1 时,我得到了一个非常旧的提交,而不是我的团队成员在本地使用 git log -1 时的最新提交。他声称已经推送到远程,这意味着ssh://johndoe@www.example.com/home/johndoe/app.git 应该已经有了他的最新代码,这样当我从中克隆时,我也应该能够获取最新的。我的第一个猜测是他可能没有推到远程。但是假设他已经这样做了,有什么可以解释为什么我无法从ssh://johndoe@www.example.com/home/johndoe/app.git 检索到最新代码?
注意:我使用root 尝试探索ssh://johndoe@www.example.com/home/johndoe/app.git 并看看我得到了什么:
root@sub.example.com [~]# cd ../home/johndoe/app.git/
root@sub.example.com [app.git]# ls -al
total 68
..................
..................
drwxr-x--x 5 johndoe gitgrp 4096 Nov 25 2021 app
..................
..................
drwxr-x--x 7 johndoe gitgroup 4096 Nov 25 2021 .git
..................
..................
root@sub.example.com [androidapp.git]# git log -1
我仍然看到一个旧的提交,而不是我的团队成员声称已经推送到远程的最新提交。即使在以root 登录到托管代码的服务器后,也会发生这种情况。这是一个裸仓库。但是,在托管远程存储库的服务器上使用 git log -1 from /home/johndoe/app.git/ 时,.git 不应该列出推送到 ssh://johndoe@www.example.com/home/johndoe/app.git 的最新代码吗?谢谢。
【问题讨论】:
-
git log -1仅显示 HEAD 提交。如果 HEAD 不在您期望的位置,那并不意味着提交不存在。检查两台机器上的git log --all:您期望的提交是否以这种方式显示? -
他为什么跑
git clone --bare?这意味着创建一个服务器端存储库,其他人将git push进入该存储库。裸克隆没有工作树,因此没有工作的地方(这就是为什么它对服务器有好处:没有工作可以被推送搞砸,但为什么它对用户不利)。 (这与你的问题无关,只是分支名称和HEAD的混淆,但看起来很奇怪。)