2012-11-19 23 views
17

Bir Visual Studio projesini 2008'den 2010'a kadar, önceki değişiklikleri daha önce denetlemeden yapma konusunda hata yaptım. Bundan dolayı, her 4. satıra sahip büyük bir sistem oluşturmuş dosyam var (10k + satırları).Git değişikliğinde sonraki değiştirilen dosyaya geç?

Ben genellikle sık sık malzeme kontrol konusunda oldukça iyiyimdir, bu yüzden genellikle sadece benim değişiklikleri arasında gezinmek için aşağı tuşunu kullanacaksınız. Bu durumda, sistem tarafından oluşturulan dosyadaki değişiklikler arasında gezinmek birkaç yaşam sürecektir.

her dosya üzerinde her değişiklik ilerlemek zorunda kalmamak için bir git diff yaptıktan sonra bir sonraki modifiye dosyaya atlamak için bir yolu var mı? Varsayılan olarak

+0

sadece 'diff fileName' kullanabilirsiniz. – zbrunson

+0

Değiştirilmiş tüm dosyaları görmek istiyorum, sadece dev bir tane atlayın ... –

cevap

31

, git diff boruları less aracılığıyla çıktı. Böylece, sonraki üstbilgiyi aramak için less komutlarını kullanabilirsiniz. /^diff yazın ve tuşlarına basın. Sonraki dosyaya geçmek için girin.

+1

Önce benim akım farklılığımdan çıkmam gerekiyor mu? Bunu benim mevcut farkımın içinden yapmaya çalıştım ve 'Desen bulunamadı' dedi –

+1

'/' komutu baktığınız konumdan arama yapıyor. Bu mesajı alırsanız, çıktıda "diff" ile başlayan başka satır yoktur. –

+0

Aslında, gerçekten * yapmak istediğiniz gibi geliyor, bu (kaydedilmemiş) değişiklikleri iki ayrı işe ayırmak. 'Git add not large.file.name' ve' git commit' yazın, sonra kalan tüm değişiklikler, * büyük olan * olmayan diğer dosyalar olacaktır. –

0

Diğer bir seçenek update-index komutu çağırır ve dev bir dosya değişmedi gibi davranmaya bunu söylemek. Daha eksiksiz bir örnek var here.

1

tig'u kullanmanızı öneririm. git için bir lanet arabirimi ve çok iyi bir tane.

tig status ile dizin durumunu görebilir ve dosyalarına basarak herhangi bir dosyada girin, fark olduğunu görürsünüz. h yardım menüsünü gösterir, ancak kısayol tabanlı bir arabirimdir.

herhangi debian-tabanlı dağıtım düşünmek sadece apt-get install elinden veya bağlantılı sitesinden yapabilirsiniz.

+2

Varsayılan olarak "tig", dosyalar arasında hızlı bir şekilde atlamanıza izin vermez, ancak bunu aşağıdaki ciltleme ile yapabilirsiniz: 'diff diff: F:/^ \ + \ + \ +' – VitalyB

+1

@VitalyB bunun için teşekkürler - Ben bunun için varsayılan bir bağlayıcı olmadığına şaşırdım. Gelecekte olanlar için, yukarıdaki 'shift + f 'ile sonraki dosya için arama yapacaktır. Arama olmadığı için 'n' sonraki dosyaya geçecek ve' shift + n' önceki dosyaya geçecektir. – Samaursa

+0

"aramanın bir _now_ beri" da, 'bağlamak diff' benim için çalışmayı durdurdu demek istedim.Neden olduğundan emin değilsiniz, ancak bu çalışır: 'F:/^ \ + \ + \ +' – Samaursa

3

Diğer yararlı komutlar için, yardım için h yazın (git diff, less içinde olan). Özellikle

: Eğer küçük bir değişiklik kümesi varsa

      JUMPING 

    g < ESC-<  * Go to first line in file (or line N). 
    G > ESC->  * Go to last line in file (or line N). 
    p %    * Go to beginning of file (or N percent into file). 
    t     * Go to the (N-th) next tag. 
    T     * Go to the (N-th) previous tag. 
    { ( [   * Find close bracket }) ]. 
    } ) ]   * Find open bracket { ([. 
    ESC-^F <c1> <c2> * Find close bracket <c2>. 
    ESC-^B <c1> <c2> * Find open bracket <c1> 
İlgili konular