2011-09-27 26 views
7

Bu soruyu cevaplandırdım ve bu soruya cevap bulunamadı.Git - İlk önce getirmeden yerel ve uzak karşılaştır?

Heroku'da çalışan bir uygulamam var. benim yerel makinede itibaren genellikle uygulamak ve sadece:

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

Sonra yukarı gider ve Heroku uygulamasında ana dal güncellenir. Çok uzak çok iyi.

Şimdi. Heroku repo'undan otomatik olarak çekecek ve kendini güncelleyecek başka bir makineye sahip olmak istiyorum.

Yani ben yapmak ile:

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 

Ben sadece bir çekme yapabilir bu yeni repo güncellemek için: Uygulamayı bana alır ve bu ile git yapılandırma görebilirsiniz

git clone <the-heroku-repo> 

:

git pull origin 

Ya alıp birleştirebilir:

Yerel ana dal ve en son arasındaki farkları bulmak için bir yol var mı

git log -p master..origin/master 

: Yukarıdaki Arasında

git fetch origin 
git merge origin/master 

MY SORU

alıp yaparak ben değişimler nelerdir kontrol edebilirsiniz birleştirme Daha önce getirmeden uzak Heroku repo sürümü? Sadece yerel ve uzak karşılaştırın ve değişiklikleri görmek. Ben sadece uygun yolu bulamıyorum.

Teşekkürler.

+0

getirilmeden, uzaktan repodan bir şey bilmeyeceksin –

+0

Sorunun 'git log'undan önce' git fetch origin' işlevini yapmakla ne ilgisi var? –

+0

Belki de getirme komutunun tanımına dayanarak sorun şu ki: "git getir yeni bir şubeden ve uzaktaki bir depodan veri indirme". Karşılaştırmanın bazı çıktılarına dayanarak, bu değişiklikleri almak ve birleştirmek istemediğime karar verdiğimi hayal edin. Neden bant genişliği kullanmalıyım ve depoyu ihtiyaç duyulmayan bir şeyle polistireyim. Yine, belki sorun benim. Sadece mevcut değişiklikleri önceden bilerek bir çağrı veya kaynakları kaydetmeye çalışıyorsanız. – Pod

cevap

14

kullanmakta origin depoda şubeleri hakkında bazı özet bilgi almak rağmen:

git remote show origin 

... Eğer bir şekilde karşılaştırmak için lütfen depoya origin gelen dalları getirmesi gerekiyor. Bu, git fetch'un yaptığı şeydir. git fetch origin çalıştırdığınızda, varsayılan olarak yalnızca "uzak izleme dallarını" origin/master gibi güncelleştirin. Bunlar, en son getirdiğiniz zaman, ilgili şubenin origin numaralı telefonunda bulunduğunu saklar. Üzerinde çalıştığınız tüm yerel şubeleriniz git fetch tarafından etkilenmez.

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

... ve bununla mutluysan o zaman, aralarından birleştirmek veya origin/master üzerine rebase: Yani, bunu yapmak güvenlidir.


ben git fetch origin komuta karışan kaynaklar (disk alanı veya bant genişliği ya) endişelenmemeni teşvik edecek. git, yalnızca güncelleştirilmekte olan uzaktan izleme dallarını tamamlamak için gerekli olan nesneleri etkin bir şekilde gönderir ve kaynak kodunuzda saklanan olağandışı büyük dosyalarınız olmadıkça, bu bir fark yaratmamalıdır.Buna ek olarak, bunları kullanmayı planlamıyor olsanız bile, diğer depodan şubelerin tam tarihçesine sahip olmak genellikle yararlıdır; örneğin, geliştirme tarihini inceleyebilirsiniz.

+0

Bu hızlı yorumlar ve cevap için teşekkürler. Bu yüzden ben :-) – Pod

+2

Bana çok iyi hizmet veren PULL kullanıyordum, ama daha sonra onu kullanmaya başladığım için getirmeyi/birleştirmeyi tercih etmek için bir milyar kez okudum. İyi çalışıyor, ama GIT getirmenin tüm uzak şubeleri bir "geçici alan" haline getirdiğini ve ismini "uzaktan takip eden şubeleri" söyleyen ilk kişi olduğunuzu farketmem biraz zaman aldı. Getirilen verilerin nereye gittiğini anlamıyorum, çünkü burası, deponuzun içinde bir araya gelene kadar değil. Teşekkürler – luigi7up

İlgili konular