我正在尝试将我的'master'副本与它跟踪的远程存储库上的副本进行比较。我认为以下命令可行,而且通常似乎也是如此。但是,有时它什么都不产生,但我知道远程分支有很多变化,我可以通过拉动来确认。
git log master..origin/master
任何人都可以解释这种行为并告诉我应该用什么命令来确定本地和远程之间的变化?
[另一条数据:我发现'git log master..origin / master'什么也没产生。然后我拉了一下。拉动失败,因为我有一些文件的工作副本。在此之后,'git log master..origin / master'确实告诉我差异。看来拉动已经更新了一些本地日志?如果是这样,我怎么能在不做(或试图)拉动的情况下实现这一目标?]
答案 0 :(得分:3)
这是因为origin/master
是您的存储库中的远程分支。它表示origin的主分支是您最后一次“查看”(获取,这是拉动和远程更新的一部分)的位置。
拉动时,会执行提取,origin/master
会更新。然后拉取调用merge,这可能会也可能不会失败,但这对您的远程分支没有任何影响。
您还可以使用git fetch --all
或git fetch origin
来获取这些更新。
答案 1 :(得分:1)
pull
是fetch
和merge
。 Fetch从远程服务器下载其日志。我认为这就是你在这里观察到的。
http://www.kernel.org/pub/software/scm/git/docs/git-pull.html
答案 2 :(得分:1)
如果您确实从原点获取了某些内容(对于本地仓库中的原始本地引用),它只会显示一些差异。
这就是为什么即使失败的git pull
:
,但这足以让git log
提取您需要的信息,因为它们位于您的本地仓库(fetch
部分之后)