2010-03-25 126 views
182

问题如何检查远程(原始)Git存储库上的更改?

什么是Git命令来执行以下工作流程?

方案

我从仓库克隆,并做了一些我自己的提交到我的本地库。同时,我的同事向远程存储库提交了提交。现在,我想:

  1. 检查是否有来自其他人的任何新 提交的 远程仓库,即origin

  2. 说有上 远程仓库3次新的提交,自从我上次 拉,我想diff的的 远程仓库的提交,即 HEAD~3HEAD~2HEAD~2HEAD~1HEAD~1HEAD

  3. 知道什么改变了, 我想从其他人那里得到最新的提交 。

我的发现至今

对于第2步:我知道插入符符号HEAD^HEAD^^等,以及波浪符号HEAD~2HEAD~3

第3步:这是,我想,只是一个git pull

+3

的可能的复制[检查拉需要的Git ](http://stackoverflow.com/questions/3258243/check-if-pull-needed-in-git) – 2016-03-14 12:36:57

+0

@Daniele回答你的链接是非常棒的,甚至带有一个可定制的bash脚本。 +1 – gorbysbm 2016-06-18 03:43:08

回答

196

您可以git fetch origin更新存储库中的远程分支以指向最新版本。针对远程的差异:

git diff origin/master 

是的,您也可以使用脱字符号表示法。

如果您想要接受远程变化:

git merge origin/master 
+26

差异看起来相反。我发现使用'git diff HEAD origin/master'会更容易,所以diff会显示如果我接受远程更改将应用​​的内容。 – cbliard 2013-07-30 07:41:26

+2

“git fetch origin”和“git show-branch * master”对我很有用。 – 2017-05-16 17:31:49

33

一个好方法有什么事情的“原产地”的合成的观点是:

git remote show origin 
+7

但是这个命令并没有告诉我自从我上次拉动起“源”上有多少次提交,是吗?我理解它的方式“git remote show origin”是一个本地操作,不会通过网络获取信息。 – Lernkurve 2010-03-25 12:05:49

11

一个潜在的解决方案

感谢Alan Haggai Alavi's solution我想出了以下潜在的工作流程:

步骤1:

git fetch origin 

步骤2:

git checkout -b localTempOfOriginMaster origin/master 
git difftool HEAD~3 HEAD~2 
git difftool HEAD~2 HEAD~1 
git difftool HEAD~1 HEAD~0 

步骤3:

git checkout master 
git branch -D localTempOfOriginMaster 
git merge origin/master 
+13

为什么您需要在远程的修订版本之间创建一个临时分支?你可以'git diff origing/master^origing/master ^^' – 2011-12-13 17:07:44

+0

@ PabloMarin-Garcia:谢谢。那时我不知道。 – Lernkurve 2013-04-08 12:06:05

126
git remote update && git status 

找到这对answerCheck if pull needed in Git

git remote update将您的遥控器更新为最新状态。然后,你可以做 几件事情,比如一个:

  1. git status -uno会告诉你,你所跟踪的分支是否领先,落后或已发散。如果它什么都没说,本地和 遥控器是一样的。

  2. git show-branch *master将向您显示所有名称以主站(例如主站和起点/主站)结尾的分支的提交。

如果使用-vgit remote update你可以看到哪些分支 得到了更新,所以你并不真正需要的任何进一步的命令。

+12

这应该是公认的答案 – mork 2015-04-28 12:11:08

+0

最好的方法来做到这一点! – mrt 2016-04-11 09:36:30

+0

还不够。在我需要推送时,我必须尽快完成'git pull ',因为我的本地分支的尖端位于远程对手的后面。 – Overdrivr 2016-09-05 07:02:06

4

我的常规问题是“什么新东西或更改回购”所以whatchanged来得心应手。发现它here

git whatchanged origin/master -n 1 
+0

'whatchanged'似乎不推荐使用:http://stackoverflow.com/a/18585297/33311 – Lernkurve 2016-09-07 16:07:32

8

我只是用

git remote update 
git status 

后者则报道背后我的地方很多提交如何。 (如果有的话)

然后

git pull origin master 

带给我的本地最新:)

0

git status并不总是显示即使经过取主产地和/主之间的差异。 如果你想组合git fetch origin && git status工作,你需要指定本地分支,起源之间的跟踪信息:

# git branch --set-upstream-to=origin/<branch> <branch> 

对于主分支:

git branch --set-upstream-to=origin/master master 
相关问题