git 日志未显示克隆存储库中的最新提交
git log not showing latest commits in cloned repository
不久前,我的一位团队成员使用
克隆了我的代码
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
身份登录到托管代码的服务器后,也会发生这种情况。这是一个裸仓库。但是,当在托管远程存储库的服务器上使用 /home/johndoe/app.git/
中的 git log -1
时,.git
不应该列出推送到 ssh://johndoe@www.example.com/home/johndoe/app.git
的最新代码吗?谢谢。
git log
默认显示 HEAD
的历史记录。所以 git log -1
只是向您展示 HEAD
ref 指向的提交。很可能您的团队成员的最新代码被推送到 HEAD
指向的分支以外的分支,或者由于某种原因,远程仓库中的 HEAD
未更新为指向他们推送的最新提交。
您可以在远程或您的远程克隆上使用以下命令验证这一点:
git log --graph --pretty=format:'%C(yellow)%h%Creset %Cgreen(%cd) %C(bold blue)<%an>%Creset %C(red)%d%Creset %s' --all
如果我的猜想是正确的,你会在历史图表中看到 HEAD
指向一个非常旧的提交(在历史图表的更下方),你会看到你的团队成员在不同的地方的较新提交分支。您会在该分支的最后一次提交旁边找到该分支的名称(如果您使用我上面的命令,则为红色)。
这是怎么发生的?有很多种可能,比如:
- 你的队友为他们的提交创建了一个新分支。
- 当你的队友克隆它时,你的仓库没有指向 main/master 分支。当你克隆一个 repo 时,不仅所有的分支都会被克隆,
HEAD
的当前值也会被克隆。然后您的队友可能会在进行更改之前切换到 main/master 分支。
不久前,我的一位团队成员使用
克隆了我的代码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
身份登录到托管代码的服务器后,也会发生这种情况。这是一个裸仓库。但是,当在托管远程存储库的服务器上使用 /home/johndoe/app.git/
中的 git log -1
时,.git
不应该列出推送到 ssh://johndoe@www.example.com/home/johndoe/app.git
的最新代码吗?谢谢。
git log
默认显示 HEAD
的历史记录。所以 git log -1
只是向您展示 HEAD
ref 指向的提交。很可能您的团队成员的最新代码被推送到 HEAD
指向的分支以外的分支,或者由于某种原因,远程仓库中的 HEAD
未更新为指向他们推送的最新提交。
您可以在远程或您的远程克隆上使用以下命令验证这一点:
git log --graph --pretty=format:'%C(yellow)%h%Creset %Cgreen(%cd) %C(bold blue)<%an>%Creset %C(red)%d%Creset %s' --all
如果我的猜想是正确的,你会在历史图表中看到 HEAD
指向一个非常旧的提交(在历史图表的更下方),你会看到你的团队成员在不同的地方的较新提交分支。您会在该分支的最后一次提交旁边找到该分支的名称(如果您使用我上面的命令,则为红色)。
这是怎么发生的?有很多种可能,比如:
- 你的队友为他们的提交创建了一个新分支。
- 当你的队友克隆它时,你的仓库没有指向 main/master 分支。当你克隆一个 repo 时,不仅所有的分支都会被克隆,
HEAD
的当前值也会被克隆。然后您的队友可能会在进行更改之前切换到 main/master 分支。