Git diff çıktısı okumak için nasıl`? | Netgez.com
SORU
27 Mart 2010, CUMARTESÄ°


Git diff çıktısı okumak için nasıl`?

git-diff man sayfasına göre oldukça uzun ve bir acemi için gerekli gibi görünmüyor olan çoğu şeyi açıklıyor. Örneğin:

git diff origin/master

CEVAP
27 Mart 2010, CUMARTESÄ°


Bir göz atalım örnek diff gıt tarihi ileri (commit 1088261f in git.git repository):

diff --git a/builtin-http-fetch.c b/http-fetch.c
similarity index 95%
rename from builtin-http-fetch.c
rename to http-fetch.c
index f3e63d7..e8f44ba 100644
--- a/builtin-http-fetch.c
    b/http-fetch.c
@@ -1,8  1,9 @@
 #include "cache.h"
 #include "walker.h"

-int cmd_http_fetch(int argc, const char **argv, const char *prefix)
 int main(int argc, const char **argv)
 {
        const char *prefix;
        struct walker *walker;
        int commits_on_stdin = 0;
        int commits;
@@ -18,6  19,8 @@ int cmd_http_fetch(int argc, const char **argv, const char *prefix)
        int get_verbosely = 0;
        int get_recover = 0;

        prefix = setup_git_directory();
 
        git_config(git_default_config, NULL);

        while (arg < argc && argv[arg][0] == '-') {

Sağlar çizgiyle bu yama satır analiz eder.

  • diff --git a/builtin-http-fetch.c b/http-fetch.c
    ilk satır "git diff" şeklinde başlık diff --git a/file1 b/file2. a/ b/ dosya yeniden adlandır/kopyala (bizim durumumuzda gibi) karışmadığı sürece aynıdır. --git diff "" diff biçimi. git demek.

  • Önümüzdeki bir veya daha fazla geniÅŸletilmiÅŸ baÅŸlık satırları. Ä°lk üç

    similarity index 95%
    rename from builtin-http-fetch.c
    rename to http-fetch.c
    dosya http-fetch.c 19 *yeniden adlandırıldı ve bu iki dosya • oranında aynı bu yeniden tespit etmek için kullanılan () olduÄŸunu söylerler.

    Son satır genişletilmiş diff başlığı olan
    index f3e63d7..e8f44ba 100644
    bahseder modu verilen dosya (100644 anlamına gelen sıradan bir dosya değil, örneğin sembolik ve yok çalıştırılabilir izni bit) ve kısaltılmış karma preimage (sürüm dosya önce verilen değişim) ve postimage (sürüm dosya değiştir). Bu hat git am --3way 3 yönlü patch uygulanamaz birleştirme kendisi yapmak için kullanılır.

  • Sonraki iki satırı unified diff BaÅŸlığı

    --- a/builtin-http-fetch.c
        b/http-fetch.c
    Göre diff -U neden yok-dosya-değiştirme-zamanı-dosya değişiklik zamanı sonra kaynak (preimage) ve hedef (postimage) dosya adları. Eğer dosya oluşturulmuşsa kaynağı /dev/null; eğer dosya silinmişse, hedef /dev/null.
    Eğer set diff.mnemonicPrefix yapılandırma değişkeni için doğru yer a/ b/ önekleri bu iki satır Başlığı alabilirsin yerine c/, i/, w/ ve o/ gibi önekler, sırasıyla ne karşılaştırmak; git-config(1)

  • Bir sonraki farkları bir veya daha yakışıklısı gelir; her hunk dosyaları farklı bir alan gösterir. BirleÅŸik biçim yakışıklısı 33**biçiminde

    @@ -1,8  1,9 @@
    @@ -18,6  19,8 @@ int cmd_http_fetch(int argc, const char **argv, ...
    gibi çizgi ile başlar. -Dosya-dizi biçimidir -<start line>,<number of lines> dosya aralığı <start line>,<number of lines>. Başlangıç satırı ve-sayısı çizgiler hem preimage ve postimage hunk konumu ve uzunluğu, sırasıyla bakın. Eğer numara--çizgiler gösterilmez ise 0 olduğu anlamına gelir.

    İsteğe bağlı üstbilgi gösterir C fonksiyonu her değişiklik, eğer bir C dosyası (-p seçeneği GNU diff) veya eşdeğeri için diğer türdeki dosyaları.

  • Gelecek dosyaları farklı yerde açıklaması. Çizgiler her iki dosya için de ortak bir boÅŸluk karakteri ile baÅŸlar. Aslında iki dosya arasındaki farklı satırları sol baskı sütununda aÅŸağıdaki gösterge karakterlerden biri

    • '' -- Bir çizgi burada ilk dosyasına eklendi.
    • '-' -- Bir çizgi burada ilk dosyadan çıkarıldı.


    Bu yüzden, örneğin, ilk parça

     #include "cache.h"
     #include "walker.h"
    
    -int cmd_http_fetch(int argc, const char **argv, const char *prefix)
     int main(int argc, const char **argv)
     {
            const char *prefix;
            struct walker *walker;
            int commits_on_stdin = 0;
            int commits;
    

    const char *prefix; satırı eklendi cmd_http_fetch main tarafından değiştirildi anlamına gelir.

    Değişiklik, daha sonra 'yerleşik-http-yakala.uygun parça diğer bir deyişle, önce c' baktım bu dosya tipi:

    #include "cache.h"
    #include "walker.h"
    
    int cmd_http_fetch(int argc, const char **argv, const char *prefix)
    {
           struct walker *walker;
           int commits_on_stdin = 0;
           int commits;
    

    Değişiklikten sonra artık bu parça 'http getir.c' bu gibi görünüyor bunun yerine dosya:

    #include "cache.h"
    #include "walker.h"
    
    int main(int argc, const char **argv)
    {
           const char *prefix;
           struct walker *walker;
           int commits_on_stdin = 0;
           int commits;
    
  • \ No newline at end of file
    satır (örneğin diff değil) olabilir.

Donal Fellows said olarak en iyi sen değiştin biliyorum nerede gerçek yaşam örnekleri üzerinde okuma farklar uygulama.

Referanslar:

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • jat4011

    jat4011

    16 EKÄ°M 2010
  • Nick Pitera

    Nick Pitera

    8 NÄ°SAN 2006
  • Professor Messer

    Professor Me

    27 NÄ°SAN 2007