Github'da iki dal arasında tek bir dosya için nasıl fark oluşturabilirim


111

Aslında github'daki etiketler olan iki sürüm arasındaki farkları gösterecek tek bir dosya için bir fark oluşturmam gerekiyor. Daha sonra bu farklılığı birine e-posta yoluyla göndermek istiyorum, böylece fark için bir github URL'si ideal olacaktır. Github karşılaştırma görünümü, bunu değiştirilen tüm dosyalar için yapmama izin verecek, ancak depomda binlerce dosya olduğu için bu iyi değil.

Bunu komut satırında aşağıdaki gibi yapabilirim, ancak bu, diff'i birine e-posta yoluyla göndermem gerektiğinden yardımcı olmuyor:

git diff tag1 tag2 -- path/to/file

Burada tartışılan komut satırı sürümünü buldum: belirlenmiş bir dosyadaki yerel dal ile uzak dal arasındaki farklılıkları nasıl görebilirim?

Yanıtlar:


90

GitHub yalnızca iki işlem arasındaki farkı gösterme yolunu gösterir.

Bu etiketlerin aslında kaydetmeleri göstermesi koşuluyla, URL formatı şöyle bir şey olacaktır:

https://github.com/{user}/{repository}/compare/{from-tag}...{until-tag}

Örnek olarak, https://github.com/libgit2/libgit2sharp/compare/v0.9.0...v0.9.5 , LibGit2Sharp projesinin iki versiyonu arasındaki farkı gösterir. Bu fark, değiştirilen tüm dosyaları içerir.

Belirli bir dosyayı hedefleyen bir url'yi almak istiyorsanız:

  • Değiştirilen Dosyalar sekmesine geçin

değiştirilen sekme

  • Tıklayın Göster Diff İstatistikleri düğmesiyle (Bu bağlantı olarak değiştirilmiş dosyaların listesini görüntüler)

show-diff

  • Peşinde olduğunuz belirli dosyanın bağlantısını panoya kopyalayın ... ve Tada! Sen bittin.

Örneğin, fark yukarıdaki linke verilen https://github.com/libgit2/libgit2sharp/compare/v0.9.0...v0.9.5#diff-11 işaret eder LazyFixtures.csversiyon v0.9.0 arasında oluştu değişiklikleri v0.9.5.

Güncelleme

Farkınızın Web arayüzü üzerinden işlenemeyecek kadar büyük olduğunu belirten yorumunuzun ardından, eski güzel komut satırı araçlarına geri dönmeye ne dersiniz? Farkın çıktısını bir dosyaya yeniden yönlendirebilir ve ardından dosyayı bir e-posta eki olarak gönderebilirsiniz.

$ git diff v0.9.0 v0.9.5 -- LibGit2Sharp.Tests/LazyFixture.cs > /tmp/lazyfixture.diff

8
Merhaba, farkım çok büyük olduğu için bu benim için işe yaramayacak gibi görünüyor. "Bu fark büyük! Yalnızca ilk 2.500 dosya için durum bilgilerini gösteriyoruz." bu nedenle, #diff bağlantılarıyla bile tam farkları değil, yalnızca Fark İstatistiklerini alıyorum.
Plainflavour

1
ancak bence haklısın - bunu yapmanın yolu bu. Teşekkürler
Plainflavour

1
Dalları karşılaştırırken sözdizimi vurgusunu almak için bu Chrome uzantısını github.com/danielribeiro/github-diff-highlight-extension da kullanabilirsiniz .
Daniel Ribeiro

3
@plainflavour Bununla tekrar karşılaşmanız durumunda burada bir tane daha kullanışlı ipucu - @ nulltoken gibi bir karşılaştırma URL'sine sahip olduğunuzda, tam diff'i görmek için URL'nin sonuna bir .diff de ekleyebilirsiniz (düz metin olarak da olsa) ). Örn https://github.com/{user}/{repository}/compare/{from-tag}...{until-tag}.diff Kaynak
dmccabe

1
Fark İstatistiklerini Göster düğmesini görmüyorum . Gitti mi Yoksa ben görmüyor muyum?
dckc

7

Aşağıdaki sorun geçerli olduğunda benim geçici çözümüm.

Bu karşılaştırma büyük! Yalnızca en son 250 kaydetmeyi gösteriyoruz

Karşılaştırmak istediğiniz dosyanın ham görünümünü https://gist.github.com/ ile kopyalayın . Karşılaştırmak istediğiniz iki belirli taahhüt noktasını kullanın. Eski kaydetme ile başlayın.

https://gist.github.com/ , 'Düzeltmeler'i tıkladığınızda güzel bir yan yana farklılık görünümüne sahiptir.


3
Teşekkürler, bu tam olarak gist.github.com/ncoghlan/1067805fe673b3735ac854e195747493/… için ihtiyacım olan öneriydi ! :)
ncoghlan

3

Yanıt, yalnızca önceki giriş için GITHUB WEB Sayfasındaki bir dosyanın kod değişikliklerinin geçmişini / reviosionunu görmek (İndirmek değil) isteyen kişiler içindir.

Seçtikten sonra, github o dosyaya gidin TARİHİ . Bu, aşağıdaki gibi iade yorumlarının listesini içeren sayfayı açacaktır.

görüntü açıklamasını buraya girin Üzerine tıkladığınızda kod değişikliklerini gösterecektir. Geçmişe tıkladıktan sonra; paket düzeyindeki tüm dosyaların kontrollerini görmek için paketlere tıklayabilirsiniz.

Eclipse'de EGit eklentisini ve dosyadaki "Sağ tıklama -> Karşılaştır" ı kullanarak geçmişi karşılaştırabilirsiniz. Eclipse'de git'teki iki düzeltmeyi nasıl karşılaştırabilirim?


1
Daha açık olmak gerekirse, kaydetmenin 7 onaltılık "adını" tıklarsınız (üzerine geldiğinizde etiket veya araç ipucu yoktur, sağ tarafa yakın, "panoya kopyala" nın hemen yanındadır. icon) ve bu sizi bu commit'in sürümü ile önceki sürüm olduğunu varsaydığım arasındaki farkı gösteren bir sayfaya götürür.
JonathanZ MonicaC

@Jonathan Evet; bu doğru
Kanagavelu Sugumar

Hey, son baktığımda o ekran görüntüsünü görmedim. O zaman benim için yüklenmedi mi yoksa o zamandan beri mi eklediniz bilmiyorum, ama her iki durumda da cevabınız için teşekkürler; bu harika.
JonathanZ

5000 dosyalık bir kayıt için bu beni tek dosyalık farka götürmez. Gönderen bu tarihin , o dosyaya delta bulma deneyin taahhüt bu büyük .
Carl Walsh

0

Kullandığım nulltoken cevabınıKomut satırından GitHub'da iki işlem arasında bir fark oluşturmak için basit bir kullanışlı komut dosyası oluşturmak için .

Komut dosyasının tamamını ana başlıkta bulabilirsiniz , ancak işte iyi kısımlar:

# Parse the following patterns for repo urls to get the github repo url
# https://github.com/owner/repo-name.git
# git@github.com:owner/repo-name.git
BASE_URL="https://github.com/""$(git config --get remote.origin.url | sed 's/.*github\.com[/:]\(.*\).git/\1/')""/compare"

if [[ "$#" -eq 1 ]]; then
  if [[ "$1" =~ .*\.\..* ]]; then
    # Handle "git hubdiff fromcommit..tocommit"
    open "${BASE_URL}/$(git rev-parse "${1/\.\.*/}")...$(git rev-parse ${1/*\.\./})"
  else
    # Handle "git hubdiff fromcommit"
    open "${BASE_URL}/$(git rev-parse "$1")...$(git rev-parse HEAD)"
  fi
elif [[ "$#" -eq 2 ]]; then
  # Handle "git hubdiff fromcommit tocommit"
  open "${BASE_URL}/$(git rev-parse "$1")...$(git rev-parse "$2")"
fi

Argüman dalları, taahhütler ve çözülebilecek diğer her şeyi kabul eder git rev-parse. openWeb sayfalarını açmak için yalnızca macOS'ta çalışan kullandım , bu nedenle farklı bir ortamdaysanız, bunu değiştirmek isteyeceksiniz.

Nulltoken'ın cevabında olduğu gibi, farktaki tek bir dosyaya işaret etmek için, bağlantı dizesinin url çubuğunda görünmesini sağlamak için dosyanın başlığına tıklamanız gerekir, ardından kopyalayabilirsiniz.


Çok fazla sayıda olduğu için istenen dosyayı göstermeyen bir karşılaştırma için bağlantı dizesini almanın herhangi bir yolu var mı?
sgarg

@sgarg Çapa "diff- <md5 dosya adı>" - belgelenmemiş AFAIK - ama beni rahatsız etti ve tahmin ettim.
Ben Walding

0

Bu hala mümkün olmadığından, burada tarayıcı tabanlı bir fark aracı yöntemi var. Otomasyondan yararlanmaz, ancak yalnızca Chrome uzantılarını yükleme yeteneğini gerektirir:

  1. Chrome tarayıcıları için Diff Tools yükleyin: https://chrome.google.com/webstore/detail/diff-tools-text-pdf-doc-o/lkcdojpmjehlniamnglpjlldkoonlomb
  2. Diff Tools'u açın ( http://iblogbox.com/devtools/diff/ )
  3. GitHub'dan, commit, etiket veya dallanmadan ÖNCE'ye gidin, dosyayı açın ve ardından Raw ham dosya görünümünü elde etmek düğmeye tümünü seçin ve kopyalayın, ardından Diff Tools'da sol taraftaki metin kutusuna koyun
  4. 3. adımı tekrarlayın, ancak AFTER dosyası için ve Diff Tools'da sağ taraftaki kutuya yapıştırın
  5. Compare NowFarkı tıklayın ve geçici olarak gerçekleştirin
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.