2010-03-25 185 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 
相關問題