我的本地计算机上有一个从远程服务器克隆的 Git 存储库。我克隆的 Git 存储库是一个裸存储库。
仍然让我困惑的一件事是,当原产地发生变化时,我确实git pull origin master
更新我的本地存储库,git status
然后告诉我,我比原点提前了 X 次提交,其中 X 是我刚刚拉取的提交数量。
尽管提交日志已经相同,但还是如此。
所以我总是做一个git push origin master
之后,但我只是想知道是否有人可以解释为什么这是必要的,以及我是否可能这样做不正确。
在我看来,如果我只是从源中提取更改,那么两个存储库应该是相同的。那么为什么我会被告知我领先于原点呢?这是否与它是一个裸存储库有关?
为了清楚起见,以下是更详细的情况:
我在远程服务器上有一个裸露的 git 存储库(集线器)。该存储库有两个克隆:我的本地计算机上的“dev”和与原始服务器位于同一服务器上的“staging”。
当我对开发进行更改时,我然后git push origin master
他们到裸露的“hub”仓库。然后我登录到远程服务器,cd
到“staging”仓库并执行git pull origin master
从“hub”更新“staging”。
完成此操作后,如果我使用以下命令比较集线器和暂存提交日志git log --pretty=oneline
我可以看到它们是相同的。
但是,如果我这样做git status
在“staging”目录中我得到以下内容:
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
所以我通常会这样做git push origin master
从那里,我被告知:
$ git push origin master
Everything up-to-date
一切正常,但我脑子里一直有一个挥之不去的问题,我在设置存储库时是否没有犯错误,或者这是否正常......