如何检查远程存储库是否已更改,我需要拉?
现在我使用这个简单的脚本:
git pull --dry-run | grep -q -v 'Already up-to-date.' && changed=1
Run Code Online (Sandbox Code Playgroud)
但它相当沉重.
有没有更好的办法?理想的解决方案是检查所有远程分支,并返回已更改分支的名称和每个分支的新提交数.
在使用pull之前,我想检查一下我的local和github master之间是否有任何差异.
我该怎么做?
我做了一个git status,它说
Your branch is up-to-date with 'origin/master'.
但我还是做了一个git pull,突然它说
14 files changed, ...
而且我觉得我被骗了。我怀疑 git 没有坏。这一定意味着我不明白一些事情。
我在这里和这里做了一些阅读,并学习了两种非破坏性的方式来询问我是否是最新的
git status -uno
git fetch --dry-run
由于fetch是pull我的一部分,我认为这两个会以与前两个相同的方式不同意。
从根本上让我感到困惑的是,我认为“最新”的意思是:“嘿,我们比较了这个存储库(主分支)的两个副本,它们是相同的”
好的,但是如果我可以用两种不同的方式提出问题并得到两种不同的答案,那么当每个问题都是关于比较两个不同的副本时,这是否意味着存储库必须至少有三个副本?
如:
A == B != C
我知道有 master 的远程副本
我知道有 master 的本地副本
这第三件事是什么鬼?
当我键入时git status 有消息说
It took 2.39 seconds to enumerate untracked files. 'status -uno'
may speed it up, but you have to be careful not to forget to add
new files yourself (see 'git help status').
nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)
我输入git help status并阅读但不了解如何获得相同的git status结果
目前我正在获取最新的,然后运行git status并解析输出,Your branch is up to date with 'origin/master'但这感觉就像一个黑客。
我已经研究过使用,git status --porcelain但这仅包括在系统上所做的文件更改,而不是在远程所做的更改。我不在乎实际进行了哪些更改,我只想知道是否存在任何更改(本地或远程)。
我将如何干净地实现这一目标?