最近,如果我这样做:
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。
此刻一直在发生 - 我应该担心,还是有合理的解释?
答案 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匹配/上游