2013-04-29 55 views
1

我试图找出如果我的分支是最新与远程主分支而无需实际运行git pull,我看其他地方我如何检查,如果主已经合并到当前分支

git branch -r --no-merged | grep master 

应该告诉你。但是,如果我运行它,我不会在输出中得到远程主机(但是我的输出从--merged得到它)。

所以我试着做一个抓取(而不是拉),并运行它。在这一点上,它决定在事实上,我确实需要一个合并,

git branch -r --no-merged HEAD | grep master 

remotes/origin/HEAD -> origin/master 
    remotes/origin/master 

但有趣的是,如果我做-a,本地主不出来列表。但它确实出现在--merged列表中。

我发现了一种解决方法,如果我需要做一个抓取,但这些工作的方式让我有些困惑。我想知道我错过了什么。

是否git branch -r实际上没有去远程存储库?或者我错过了什么让它这样做?或者是我真正需要做的事情?

回答

1

fetchpull之外的所有(正常)git命令只会查看本地状态。所以他们只会在最后一次提取时告诉你有关遥控器状态的信息。如果你真的想知道你是否应该拉,先做一个抓取。

如果由于某种原因你不想做一个抓取(我想不出一个好的),看看git ls-remote

+1

我会补充说,做拉是与fetch + merge相同,你需要获取并拉动以便能够比较远程和本地分支。我还会用'git branch -r'加上你没有移除回购站但是一个分店 – iberbeu 2013-04-29 21:01:31

+0

谢谢。我已经在使用ls-remote来检查抓取是否已经完成,因为我正在为'git branch'行为感到头疼。在任何情况下,这个检查都需要非常轻。感谢您的解释 – 2013-04-30 07:54:04

+0

@iberbeu'git branch -r'不会删除任何东西 – 2013-04-30 07:54:32

相关问题