在两台不同的机器和github之间使用git

时间:2011-02-08 21:34:37

标签: git github

最近,如果我这样做:
 1. git push origin master(在我的笔记本电脑上)
 2. git pull origin master(在我的Mac上)
 3. git status(在我的Mac上)

我看到'你的分支超过'origin / master'由6次提交'。由于我没有在Mac上做过任何提交,这似乎是一个错误;或者我不太了解的东西。

如果我这样做:
4. git push origin master(在我的Mac上)

原点/主信息的消失消失。

请注意,在上述步骤中,我没有在Mac上进行任何提交/修改,在步骤1和步骤1之间。 2。

此刻一直在发生 - 我应该担心,还是有合理的解释?

2 个答案:

答案 0 :(得分:8)

停止输入git pull origin master。这指示git将原始repo上的master分支的内容拉入本地分支,完全绕过远程跟踪分支。相反,您应该只输入git pull。这将从远程仓库中拉出branch.master.merge中的分支集(假设“master”已签出)并使用它来更新远程跟踪分支,然后它将该远程跟踪分支合并到您的本地分支中

为了阐明它是如何工作的,git pull <args>运行git fetch <args>然后使用git-merge将获取的分支合并到当前分支中。如果指定git fetch,git将获取默认远程并更新远程跟踪分支,此时git-pull将合并到正确的分支中。但是如果指定git fetch origin master,git将获取原始仓库的主分支并将其存储在FETCH_HEAD中,而不更新远程跟踪分支。您可以通过键入git fetch origin master来自行验证(假设您没有远程提交)。获取的最终结果应该是

之类的行
 * branch            master     -> FETCH_HEAD

这告诉您已获取远程分支“master”并将其存储在FETCH_HEAD中。另一方面,如果您只是输入git fetch origin,您应该会看到更像

的内容
 * branch            master     -> origin/master

这告诉您已获取远程分支“master”并将其存储在本地远程跟踪分支“origin / master”中。

答案 1 :(得分:0)

只需使用 git push ,但在配置之前

  

git config - 全局push.default匹配/上游