Git 1.9.1:origin / master是否代表原始分支主数据的本地副本?

时间:2017-02-10 08:46:59

标签: git github version-control rebase git-pull

我已经完成了一些Q& A

In Git, what is the difference between origin/master vs origin master?

Git branching: master vs. origin/master vs. remotes/origin/master

我知道了

  

origin / master是一个远程分支(它是分支的本地副本   在名为“origin”的遥控器上命名为“master”)

     

remotes / origin / master是一个名为master的分支,名为remote   原点。

现在我想知道

  • 如果origin/master是本地副本,那么为什么git branch不会显示此分支。
  • 可以像origin/master一样对待任何其他普通分支 本地?

如果没有,那我就麻烦了。这就是我所做的:

我克隆了一个存储库。我添加了一个遥控器让我们说remoteA(在另一个repo中使用相同的projet)和rebase并在remoteA上与dev分支合并master。我使用下面的命令(当前分支是主):

git pull --rebase remoteA/dev

然后使用origin / master

来修改master
git rebase origin/master

然后我从master创建了另一个分支,将其推入远程并成功合并(无法推送master分支,因为它受到保护)。

现在,如果我运行git status,则说

  

你的分支和'origin / master'有分歧,(使用“git pull”来   将远程分支合并到您的分支中)

当我git pull origin master显示我在rebase期间解决的所有冲突时。我不想再解决它们了。我想要的只是新的副本大师而不再克隆它。我在这个过程中做错了什么?如何纠正? 请解释一下。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

  

如果origin / master是本地副本,那么为什么git branch不会显示此分支。

使用git branch 显示本地跟踪分支,如果您按照以下方式运行:

git branch -a

普通香草git branch默认情况下不显示跟踪分支的原因是因为通常您不会直接操作这些分支。这是你第二个问题的一个很好的细分。

  

可以将origin / master视为本地的任何其他普通分支吗?

据我所知,您可以像使用任何其他分支一样使用此分支。但是,这不建议或非常典型。本地跟踪分支充当远程存储库(例如Bitbucket,GitHub)中存在的真正远程分支的本地代理。我建议不要直接与跟踪分支机构合作,除非有充分的理由这样做。

对于所有意图和目的,您可以将本地跟踪分支视为实际的远程分支。当然,有一点需要注意,跟踪分支本身可能位于遥控器上的实际位置。

答案 1 :(得分:0)

origin/master只需在远程仓库中标记主分支的位置即可。 git branch仅显示分支存在于本地。如果您想找到origin/master的位置,可以使用git log --oneline --decorate --graph --all

不,它不能被视为本地分支。即使您也可以检查origin/master历史记录(git log origin/master),或者您可以将差异与本地分支(git diff master origin/master)等进行比较。但它仍然具有本地分支的一些不同功能。例如,您可以删除/创建本地分支,但不能为origin/master执行此操作。

纠正origin/master分歧的情况:

如果您不想更改本地主分支,可以使用:

git checkout <another local branch>
git branch -D master
git checkout master

如果您希望更改本地主分支,并使用origin / master 解决冲突,可以使用:

git checkout master
git pull -X theirs origin master
git push origin master