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

cma*_*han 0 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上)

原点/主消息的前面消失了.

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

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

Lil*_*ard 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将获取原始repo的主分支并将其存储在FETCH_HEAD中而不更新远程跟踪分支.您可以通过键入来自行验证git fetch origin master(假设您没有远程提交).获取的最终结果应该是一行

 * branch            master     -> FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)

这告诉您已获取远程分支"master"并将其存储在FETCH_HEAD中.另一方面,如果您只是键入,git fetch origin您应该看到更像的东西

 * branch            master     -> origin/master
Run Code Online (Sandbox Code Playgroud)

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