git klonlanmış ve orijinal uzak depo arasında fark var


170

Bir github deposunu klonladım ve yerel olarak hiçbir değişiklik yapmadım. Github deposu aynı dalda taahhütlerle ilerledi.

  1. Yerel veri havuzum ile orijinal github veri havuzum arasındaki farkı nasıl bulabilirim?
  2. Çalışma kopyam ile orijinal github deposu arasında nasıl bir fark bulabilirim?
  3. Yerel veri havuzum ile aynı projenin başka bir github veri havuzu arasındaki farkı nasıl bulabilirim?


1
@CiroSantilli 新疆 改造 中心 六四 事件 法轮功: Bence yeterince farklı: diğer soru herhangi bir jenerik uzak dal hakkında soruyor, oysa bu GitHub'a atıfta, artı üç farklı başlangıç ​​noktası soruyor. Kesinlikle benzerler, bu yüzden bağlantınız kesinlikle yararlı.
jvriesem

Yanıtlar:


161

1) Karşılaştırmak istediğiniz uzak depoları ekleyin:

git remote add foobar git://github.com/user/foobar.git

2) Uzaktan kumandanın yerel kopyasını güncelleyin:

git fetch foobar

Getirme, çalışma kopyanızı değiştirmez.

3) Yerel deponuzdaki herhangi bir dalı eklediğiniz uzaktan kumandayla karşılaştırın:

git diff master foobar/master

Fark önce git getirmeye ihtiyacım olacak mı? Sanırım onsuz fark etmenin bir yolu yok.
Oleg Proudnikov

Bu aslında sadece 3. soruya bir cevaptır (başka bir github repo ile fark)
Ruslan Kabalin

5
"Orijinal github deposunu" başka hiçbir uzak depodan ayıracak hiçbir şey yoktur. Yoksa bir şeyi yanlış mı anlıyorum?
dbyrne

Git 2.7.4 ile denediğimde "git diff master foobar / master" farklılıklar göstermedi. Bana yerel argümanımı ("master") 1. argüman ("master") olarak verilen repo ile karşılaştırıyor gibi görünüyor ve orada sadece "yol / dosya" "foobar / master" diffs. Ama "diff foobar / master" komutu benim için çalıştı, yerel ustam ile foobar / master'ı karşılaştırdı.
user2081279

fetch(Nr. 2) yerine : git remote update- uzak olanları izlemek için ayarlanan tüm dallarınızı güncelleyecek , ancak herhangi bir değişikliği birleştirmeyecektir; veyagit pull
Timo

49

Sorularınıza başka bir yanıt daha (usta olduğunuzda ve uzaktan değişiklikleri bildirmek için zaten "git fetch origin" yaptığınızı varsayarak):

1) Yerel şubenin oluşturulmasından bu yana uzak şubede görev yapar:

git diff HEAD...origin/master

2) "Çalışma kopyası" ile yerel şubenizin, henüz uzaktan kumandada olmayan bazı yerel taahhütleri kastettiğini varsayıyorum. Yerel şubenizde olan ancak uzak şube çalıştırmasında bulunmayanların farklılıklarını görmek için:

git diff origin/master...HEAD

3) dbyrne tarafından verilen cevaba bakınız.


HEAD..origin/masterSözdizimi için teşekkürler ! Orijin / HEAD mevcut değilken hatalar alıyoruz ve bu çözüldü.
Dan Bechard

@ruslan: Değişiklik yapma yetkim git diff HEAD...origin/masterolan uzak bir dizini klonladıysam hiçbir şey döndürmediğinde ne anlama geliyor ?
Mona Jalal

Windows GUI kullanarak klonlarken bir hata oldu, bu yüzden klonun tamamen geçip geçmediğini merak ediyorum. Klasörlerimin dizinimde olduğunu görüyorum, ancak uzaktan kumandayla aynı olduğundan emin olmak istiyorum. Ancak git kabuğunda git diff hiçbir şey döndürmez. Klonum başarılı olursa ya da başarısız olduysa kafam karıştı mı?
Mona Jalal

@MonaJalal, klonladığınızdan bu yana yukarı yönlü değişiklik olmadığı anlamına gelir.
Ruslan Kabalin

21

Bu örnek birisine yardımcı olabilir:

Not " origin" uzaktan kumanda için takma adım " Github'da nedir"
Not " mybranch"
dalım için takma adım "yerel olan" github ile senkronize ediyorum - şube adınız "master" ise, oluşturmadıysanız bir. Ancak, mybranchşube adı parametresinin kullanıldığı yeri göstermek için farklı bir ad kullanıyorum .


Github'daki uzak depolarım tam olarak nedir?

$ git remote -v
origin  https://github.com/flipmcf/Playground.git (fetch)
origin  https://github.com/flipmcf/Playground.git (push)

"Aynı kodun diğer github deposu" nu ekleyin - buna çatal diyoruz:

$ git remote add someOtherRepo https://github.com/otherUser/Playground.git

$git remote -v
origin  https://github.com/flipmcf/Playground.git (fetch)
origin  https://github.com/flipmcf/Playground.git (push)
someOtherRepo https://github.com/otherUser/Playground.git (push)
someOtherRepo https://github.com/otherUser/Playground.git (fetch)

yerel repo'muzun güncel olduğundan emin olun:

$ git fetch

Bazı şeyleri yerel olarak değiştirin. diyelim dosya ./foo/bar.py

$ git status
# On branch mybranch
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   foo/bar.py

Taahhüt edilmeyen değişiklikleri gözden geçir

$ git diff mybranch
diff --git a/playground/foo/bar.py b/playground/foo/bar.py
index b4fb1be..516323b 100655
--- a/playground/foo/bar.py
+++ b/playground/foo/bar.py
@@ -1,27 +1,29 @@
- This line is wrong
+ This line is fixed now - yea!
+ And I added this line too.

Yerel olarak taahhüt edin.

$ git commit foo/bar.py -m"I changed stuff"
[myfork 9f31ff7] I changed stuff
1 files changed, 2 insertions(+), 1 deletions(-)

Şimdi, uzaktan kumandamdan farklıyım (github'da)

$ git status
# On branch mybranch
# Your branch is ahead of 'origin/mybranch' by 1 commit.
#
nothing to commit (working directory clean)

Bunu uzaktan kumanda ile difüze edin - çatalınız: (bu sıklıkla yapılır git diff master origin)

$ git diff mybranch origin
diff --git a/playground/foo/bar.py b/playground/foo/bar.py
index 516323b..b4fb1be 100655
--- a/playground/foo/bar.py
+++ b/playground/foo/bar.py
@@ -1,27 +1,29 @@
- This line is wrong
+ This line is fixed now - yea!
+ And I added this line too.

(bunları uzaktan kumandaya uygulamak için git push)

Uzak dalımın uzak ana daldan farkı nedir?

$ git diff origin/mybranch origin/master

Yerel öğelerimin uzak ana daldan farkı nedir?

$ git diff origin/master

Eşyalarımın başkasının çatalından, aynı repodaki usta dalından farkı nedir?

$git diff mybranch someOtherRepo/master

5
Bir 'git diff' yapmadan önce, uzaktan kumandanın yerel kopyasının güncel olduğundan emin olmak için bir 'git fetch' yapmak gerektiğini düşünüyorum.
Don

1
Uzak ve yerel karşılaştırmak için belki 20 yazı okudum ben sadece kendim anladım: git fetch ilk GEREKLİDİR. git gerçekten RCS'nin montaj kodudur. isa. Onayladığınız için teşekkürler, Don!
Terence Parr

git fetchbu cevaba ekledim .
FlipMcF

1
Hummm ... Şube adım olarak 'myfork'u nasıl kullandığımı sevmiyorum. Bu birinin kafasını karıştırabilir (Benim gibi, bu cevap için geri gelen)
FlipMcF

Düzenlendi - netlik ve 'çatal farkı' sorusu # 3
FlipMcF
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.