如何正确使用git与本地远程

时间:2016-07-24 12:57:45

标签: git github version-control

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.

的消息

那么这里发生了什么?

提前谢谢你。 抱歉我的英语不好......

1 个答案:

答案 0 :(得分:1)

这里发生的是git status仅显示它实际知道的信息,这是您本地分支与跟踪实际远程分支的本地跟踪分支的比较。当您将提交推送到第二个克隆的本地存储时,Git不知道这一点,因为跟踪分支未同步。

要解决这个问题,你应该养成在git fetch之前做git status的习惯。因此,如果您从原始工作目录中执行了以下操作:

git fetch origin master
git status

然后我希望你会看到:

branch is behind of "local/master" by 1 commit