TLDR: 我设置了一个本地遥控器,但它似乎适用于推拉,但不太适合同步..
以下是详细信息。
我学习了一些关于使用遥控器的知识。
所以我想在本地使用git作为我的工作目录,也作为我的远程仓库(代替像Github这样的服务)。
为此,我首先初始化了我的第一个(工作)项目回购:
#[~/project/project_ABC] → git init
经过一些工作后,我添加并提交了我的所有工作,所以我最终得到了一个干净的工作目录仓库。
但是我没有在Web远程服务(如Github)上推动这项工作,而是希望在本地实际托管远程服务。
所以我裸在专用文件夹上初始化一个repo(注意用.git后缀命名):
#[~/repos/project_ABC.git] → git init --bare
然后,回到我的工作目录,在将其添加到我的远程仓库列表后,我将我的工作推送到这个“远程”仓库:
#[~/project/project_ABC] → git remote add local ~/repos/project_ABC.git
#[~/project/project_ABC] → git push local master
此时我git status -uno
我觉得一切都很好......
为了测试这个“远程”repo实际上是否正常工作,我在工作目录中对我的工作进行了一些更改并提交它们(在工作目录中)。
所以,此时如果我git status -uno
我得到了branch is ahead of 'local/master' by 1 commit.
是的..推送到那个回购似乎工作..
所以我git push
我的工作,一切都很好。
但我也想尝试从这个回购中汲取工作......
所以我从这个本地“远程” repo git克隆到另一个工作目录并进行了一些更改(在这种情况下,远程名称为origin
,应该是:
#[~/test] → git clone ~/repos/project_ABC
... made some changes, committing and then pushing to remote
#[~/test/project_ABC] → git push origin master
这是奇特的部分!
回到我原来的工作目录,我希望当我git status -uno
收到我branch is behind of "local/master" by 1 commit.
但是不!
我收到了branch is up-to-date with local/master.
那么这里发生了什么?
提前谢谢你。 抱歉我的英语不好......
答案 0 :(得分:1)
这里发生的是git status
仅显示它实际知道的信息,这是您本地分支与跟踪实际远程分支的本地跟踪分支的比较。当您将提交推送到第二个克隆的本地存储时,Git不知道这一点,因为跟踪分支未同步。
要解决这个问题,你应该养成在git fetch
之前做git status
的习惯。因此,如果您从原始工作目录中执行了以下操作:
git fetch origin master
git status
然后我希望你会看到:
branch is behind of "local/master" by 1 commit