git merge master和origin / master之间的区别?

时间:2015-12-28 16:08:02

标签: git

命令git merge origin/master的结果:

javanoob@DELL:~/workspace/PROJECT_One$ git merge origin/master 
Updating d83ef9c..dd520ea
error: The following untracked working tree files would be overwritten by merge:
    sample.txt
Please move or remove them before you can merge.
Aborting

命令git merge master的结果:

javanoob@DELL:~/workspace/PROJECT_One$ git merge master
Already up-to-date.

当我执行命令时git merge origin/master它显示有一些文件将被覆盖,但如果我执行相同的命令而没有前缀origin/,则表示所有内容都已更新。

此设置有什么问题?

我不知道是否重要但在运行这些命令之前,我确实运行了命令git fetch origin

3 个答案:

答案 0 :(得分:21)

git fetch获取有关远程分支的信息,但不会对您的本地master分支进行任何更改。因此,masterorigin/master仍然存在分歧。您必须使用git pull合并它们。

进行提交时,您的本地master分支会超前origin/master,直到您推送这些更改为止。这种情况恰恰相反,origin/master分支位于本地master分支之前。这就是为什么你会得到不同的结果。

阅读https://stackoverflow.com/a/7104747/2961170了解详情。

答案 1 :(得分:3)

master是您的本地分支,origin/master是远程分支(它最后的状态fetch

您输出的结果显示,在远程进行提交,将覆盖sample.txt但尚未pull进入您的本地master

根据经验,在进行任何合并/变基等之前,最好有一个干净的工作树和最新的分支。

所以 - 提交你的工作,检查git状态,然后git pull --rebase(' oh-my-zsh'别名为gup),然后继续合并。

答案 2 :(得分:-1)

使用git merge origin/master是指服务器上的主分支。 git merge master指的是您当地的主分支机构。

使用git pull,如果它们分歧,您可以将它们合并。