Dosyanın geçerli çalışma kopyasını başka bir dalın taahhütlü kopyayla dağıtma


158

fooAna dalda dosya bulunan bir repo var . Çubuk dalına geçtim ve bazı değişiklikler yaptım foo. Şimdi git diffbu kopya (henüz işlenmemiş) ile ana dalın kopyası arasında nasıl çalıştırabilirim ?

Yanıtlar:


151

Aşağıdakiler benim için çalışıyor:

git diff master:foo foo

Geçmişte şunlar olabilirdi:

git diff foo master:foo


9
Seninle ilgili git diffher cevabını gördüğümde, hep stackoverflow.com/questions/5256249/git-diff-doesnt-show-enough/…
— VonC

@VonC: teşekkürler, bunları çizmeye değer olduğunu bilmek güzel :) Bu arada, cevabımı güncellediğim garipliği anladın mı?
— Mark Longair

2
--Parametreleri yol bağımsız değişkenlerinden ayırmak için a ile denediniz mi? git diff -- master:foo foo
— VonC

1
1.8'de git diff -- master:foo fooişe yaramıyor - arg'e master:foo, daldaki bir dosya yerine var olmayan bir dosya adı gibi davranıyor (ve yok sayar). Son 2 argümanı değiştirmeyi deneyin - eğer işe yaradıysa, fark karşılaştırması tersine çevrilmelidir, ancak çıktı değişmez.
— Kelvin

9
Benim için tam tersi - yapabilirim git diff master:foo fooama tam tersi değil. Ben de anlamıyorum. Git 1.7.9.5 / Ubuntu 12.04 ile en azından git diff -R master:foo fooistediğim farkı elde etmek için yapabilirim. Bunu msysgit 1.9.4 / Windows 7 x64 ile denediğimde elde ederim fatal: unable to read 0000000000000000000000000000000000000000. Olmadan -Rgit 1.7.9.5 ile aynı hata mesajını alıyorum, ama 1.9.4 ile alıyorum fatal: master:foo: no such path in the working tree.
— JMM

100

Çalışma ağacınızı belirli bir dal adıyla karşılaştırmaya çalışıyorsunuz, bu yüzden şunu istiyorsunuz:

git diff master -- foo

Bu git-diff formundan (git-diff man sayfasına bakınız)

   git diff [--options] <commit> [--] [<path>...]
       This form is to view the changes you have in your working tree
       relative to the named <commit>. You can use HEAD to compare it with
       the latest commit, or a branch name to compare with the tip of a
       different branch.

Bilginize, çalışma ağacınızdaki her şeyden ziyade, hazırladığınız şeyin farkını görüntülemek için --cached(aka --staged) bir seçenek de vardır :

   git diff [--options] --cached [<commit>] [--] [<path>...]
       This form is to view the changes you staged for the next commit
       relative to the named <commit>.
       ...
       --staged is a synonym of --cached.

2
Teşekkürler. Neden olduğu hakkında bir fikrim yok ama Linux'ta git 1.8.1 ile sadece bu cevap benim için çalıştı.
— srking

Harika teşekürler. Diff komutuna şu anki şubemin adını eklemek istemiştim, ama bunun gerekli olmadığını görüyorum.
— yoyo

Bu benim için birkaç ay önce çalıştı, ama şimdi öyle görünmüyor. Şu anda git sürüm 2.7.4 (Apple Git-66); Daha önce ne olduğumu bilmiyorum.
— hBrent

@hBrent bu benim için OSX 10.11 üzerinde git 2.7.3 ile çalışıyor. Yararlıysa
— Jordan Brough

Teşekkürler @JordanBrough.
— hBrent

14

Ayrıca: git diff master..feature foo

Çünkü git diff foo master:foobenim için dizinler üzerinde çalışmıyor.


Ben de değil. Windows bir şey mi?
— Scott Stafford

@ScottStafford Ubuntu'dayım, bu yüzden hayır, sadece Windows bir şey gibi görünmüyor.
— ArtBIT

Açıkça her iki şube adını (windows) vermek sürece benim için çalışıyor git diff branch1:foo master:foo
— Meep

13
git difftool tag/branch filename

Bu, bir dosyanın yerel çalışan bir kopyası ile uzak bir depodaki dosya sürümü ("köken" değil) arasında karşılaştırma yapmak için benim için çalışan tek yanıttır. Teşekkürler, Adir ve Baz
— Fare

git difftoolgit-scm.com/docs/git-difftool adresine-v göre seçeneği yoktur . Bunu mu demek istediniz ? -y
— ks1322

10
git diff mybranch master -- file

ayrıca çalışmalı


4
Bu yalnızca mybranch'a bağlı dosyalar için çalışır, dosyanın geçerli çalışan kopyası için geçerli değildir.
— yoyo

"-" ne anlama geliyor
— Pushparaj

Bu, her iki yönde karşılaştırmaya izin verir: git diff deployment master -- fileve herhangi bir 2 daldagit diff master deployment -- file beklendiği gibi çalışır .
— viktorkho

0

Yerel değişiklikleri görmek için mevcut şubenize kıyasla

git diff .

Yerel değişimleri görmek için mevcut diğer şubelere kıyasla

git diff <branch-name> .

Belirli bir dosyanın değişikliklerini görmek için

git diff <branch-name> -- <file-path>

git fetchBaşlangıçta koştuğunuzdan emin olun .

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.