2011-09-27 45 views
7

我周圍搜索,發現沒有回答這個問題。我有一個在Heroku上運行的應用程序。 從我的本地機器我通常實現公正:Git - 比較本地和遠程而不先獲取?

git add . 
git commit -m "whatever change, I know I can add and commit at the same time..." 
git push <the-heroku-repo> 

然後上升和Heroku的應用程序中的主分支被更新。到現在爲止還挺好。

現在。我想要另一臺機器,它會自動從Heroku倉庫中取出並更新它自己。

所以我這樣做有:

git clone <the-heroku-repo> 

這讓我的應用程序,我可以看到與此混帳配置:

core.repositoryformatversion=0 
core.filemode=true 
core.bare=false 
core.logallrefupdates=true 
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* 
[email protected]:theapp.git 
branch.master.remote=origin 
branch.master.merge=refs/heads/master 

要更新這個新的回購協議,我可以做只是一個拉:

git pull origin 

或者,我可以取回併合並:

git fetch origin 
git merge origin/master 

我的問題

上述期間取回併合並這樣做,我可以檢查哪些變化:

git log -p master..origin/master 

有沒有辦法找到當地主分支和最新之間的差異版本在遠程Heroku回購沒有提取之前?只需比較本地和遠程並查看更改。我無法找到正確的方法。

謝謝。

+0

沒有提取,你不會知道什麼從遠程repo更新 –

+0

我感興趣的問題是在'git log'前做'git fetch origin'? –

+0

也許問題在於我,根據fetch命令的定義:「git fetch從遠程存儲庫下載新的分支和數據」。想象一下,根據比較的某些輸出,我會決定我不想獲取併合並這些更改。爲什麼我會使用帶寬並使用不需要的東西來監控存儲庫。再次,也許問題是我。只要可能,通過了解現有的變化,就試圖保存一個電話或資源。 – Pod

回答

14

雖然可以獲取有關使用origin庫中的一些分支機構彙總信息:

git remote show origin 

...你需要從origin樹枝提取到你的倉庫在某種程度上,以對它們進行比較。這是git fetch所做的。當您運行git fetch origin時,默認情況下只會更新所謂的「遠程跟蹤分支」,如origin/master。這些只是存儲最後一次獲取的相應分支在origin處的位置。您所從事的所有當地分行都不受git fetch的影響。所以,它的安全做到:

git fetch origin 
git log -p master..origin/master 

...然後如果你高興,你可以從合併或重訂到origin/master


我會鼓勵你不要擔心參與git fetch origin命令的資源(無論是磁盤空間或帶寬)。 git只會有效發送完成正在更新的遠程跟蹤分支所需的對象,除非您的源代碼中存儲了異常大的文件,否則這應該沒有多大區別。此外,即使您不打算使用它們,也可以從其他存儲庫獲得完整的分支歷史記錄,這樣做通常很有用,例如,您可以檢查該開發歷史記錄。

+0

感謝您的快速評論和回答。所以它就是我:-) – Pod

+2

我正在使用PULL,它爲我提供了很好的服務,但後來我閱讀了十億次,希望獲取/合併它,所以我開始使用它。它工作正常,但我花了一段時間才意識到GIT獲取將所有遠程分支獲取到「臨時空間」,並且您是第一個稱其爲「遠程跟蹤分支」名稱的人。我真的不知道獲取數據的位置,因爲直到它合併到存儲庫中。謝謝 – luigi7up

相關問題