durumu değiştir sadece dosyaları değiştirmek mümkün mü?


173

git statusYalnızca değiştirilmiş dosyaları göstermek ve göstermek mümkün müdür ?

Sorun şu anda taahhüt veya gitignore şu anda istemiyorum çok fazla aşamalı dosyaları var ve yukarı kaydırılamıyor. Ubuntu'da bir geri kaydırma limiti var.


1
Kaydırma sınırınız nasıl? Varsayılan olarak, git statusçağrı cihazını çağırır.
Lily Ballard

Üzgünüz, geri kaydırma sınırı makinemde 512 satıra ayarlandı. Sanırım değiştirebilirim; ancak GD / imagecache sonunda daha da fazla dosya üreteceğinden, durumdaki yalnızca değiştirilmiş dosyaları görüntülemek için tek satırlık bir komut tercih eder.
chrisjlee

1
Doğru ... Demek istediğim, çağrı cihazı terminalinizin geri kaydırma özelliğini kullanmıyor.
Lily Ballard

İlginç bulduğunuz her şeyi selamlamakla ilgili yanlış bir şey mi var? Durumun tek satırlık sürümlerini almak için --shortveya tuşlarını kullanın --porcelain.
torek

2
Kullanım önerisine dayanarak bir nokta daha git ls-files -m: hangi modifikasyon (lar) ı önemsiyorsunuz, aşamalandırıyorsunuz, damgalamıyorsunuz veya her ikisini de önemsiyorsunuz?
torek

Yanıtlar:


268

Bunu ile yapamazsınız git status, ancak git ls-files -mdeğiştirilen tüm dosyaları göstermek için kullanabilirsiniz .


6
Diğerlerinin bildiği gibi, bu yalnızca sahnelenmeden değiştirilen dosyaları gösterir.
Gerry

11
Bu kabul edilen cevap olsa da, yanlış bilgilere sahiptir. Kullanıcı23186'nın git status | grep modifiedyanıtlarında belirttiği gibi "git durumu" yalnızca değiştirilen dosyaları " kullanabilirsiniz.
K. Alan Bates

9
Benim için git ls-files -mhiçbir şey göstermiyor ama git status | grep modifiedçalışıyor.
Sandeepan Nath

1
Diğerlerinin de belirttiği gibi, bu yalnızca işaretlenmemiş dosyaları gösterir. Hem etiketlenmemiş hem de aşamalı dosyaları göstermek istiyorsanız, gördüğüm en iyi yanıt budur: stackoverflow.com/a/39994894/452587
thdoan

1
@thdoan Aşamalı dosyaları göstermek için bir dizi seçenek vardır, ancak bu özel soru aşamalı dosyaları açıkça hariç tutmak istiyor gibi görünmektedir. git diff --name-only --diff-filter=M HEADhem aşamalı hem de yerleştirilmemiş için yalnızca değiştirilmiş dosyaları gösterir, ancak --diff-filtereklemek istediğiniz diğer filtre türlerini görmek için dokümanları kontrol etmelisiniz .
Lily Ballard

58

Görünüşe göre git status -uno, sadece git'in izlediği dosyaları, dizinde başka bir şey göstermeden gösterecektir. Tam olarak ne istediğini değil, ama belki de aynı şeyi başarıyor (git izlerinin okunabilir uzunlukta bir listesini almak).


1
git status -u nodeğiştirilen (1) izlenen dosyaları veya (2) aşamalı izlenen dosyaları göstermez. Bunu git 1.8.5.2 ve 1.9.4 sürümleriyle doğruladım.
mxxk

2
@TomNysetvold, aslında demek isteyebilirsiniz git status -uno( stackoverflow.com/questions/7008546/… )
mxxk


29

Değiştirilmiş dosyalar için:

git status | grep modified:

1
Bunun için bir takma ad oluşturdum:git config --global alias.modified '!git status | grep modified:'
Richard Parnaby-King

15

git diff --name-only --diff-filter=M


2
Şu filtreleri öneririm: git diff --cached --name-only --diff-filter=ACMREklenen, Kopyalanan, Değiştirilen ve Yeniden Adlandırılan dosyalar.
qwertzguy


3

Ben aynı bilgi arıyordum ve aşağıdaki değiştirilmiş dosyaları verir bulundu:

git status -uno

2
git status -uno --porcelainkomut dosyası ayrıştırma için güzel çıktı ekler
pprzemek

3

Kullanabilirsiniz

$ git status -uno 

yalnızca değiştirilmiş dosyaları listelemek için.


3

Sorun şu anda taahhüt veya gitignore şu anda istemiyorum çok fazla aşamalı dosyaları var ve yukarı kaydırılamıyor.

Bu yalnızca değiştirilen dosyaların listelenmesi sorusuna doğrudan cevap vermese de, listelenen dosya sayısını sınırlamaya yardımcı olabilir.

git statusÇıktıyı repodaki belirli bir klasörle sınırlamak için bir yol iletebilirsiniz .

Örneğin:

git status app
git status spec
git status src/components

2

Değiştirilen dosyaları listelemek için şunu kullanın:

git ls-files -m

Sadece basename (yol yok) istiyorsanız, her sonucu xargs kullanarak satır satır basename komutuna aktarabilirsiniz:

git ls-files -m | xargs -L 1 basename

1

Bu komutu kullanıyorum:

$ git status -uno -sb

Ve çıktı şöyle görünür:

## master...origin/master
 M GNUmakefile
 M include/mp4v2/project.h

0

Ben kullanıyorum git cola. Değiştirilmiş dosyaları gösterecek ve yaptığınız değişikliklerin farkını gösterecek basit ve zarif bir UI istemcisi.

git colahangi dosyaları değiştirdiğinizi, hangi aşamaları hazırladığınızı ve hatta izlemediklerinizi görselleştirebileceğiniz bir GUI sağlar. Sorunuz git inancını sadece inandığım kullanmaktı, ama git cola'nın bu ve diğer şeyler için de yardımcı olabileceğini düşündüm. Daha fazla bilgi için bu web sayfasını kontrol edin: git-cola.github.com/screenshots.html


1
Ben bu git kola aşina değilim verilen bu benim cevap ile nasıl ilgili sağlayabilir. örneğin ekran görüntüleri veya daha fazla ayrıntı?
chrisjlee

bu yüzden neden indirildi? :) Her neyse, git cola, hangi dosyaları değiştirdiğinizi, hangi aşamaları hazırladığınızı ve hatta izlemediklerinizi görselleştirebileceğiniz bir GUI sağlar. Sorunuz git inancını sadece inandığım kullanmaktı, ama git cola'nın bu ve diğer şeyler için de yardımcı olabileceğini düşündüm. Daha fazla bilgi için bu web sayfasını kontrol edin: git-cola.github.com/screenshots.html
n_x_l

Cola'nın arayüz dili nasıl değiştirilir?
ziyuang

0

Değiştirilen dosyaları listelemek isterseniz bunu yapabilirsiniz:

git log -n1 --oneline --name-status | grep '^M'


0

Değiştirilen tüm dosyaları listelemek için şunu kullanın:

git show --stat --oneline HEAD

0

Tüm harika cevaplar; sadece FEI, "git checkout" (aynı dalda veya dalda geçiş) yalnızca değiştirilmiş dosyaları gösterir.


0

İşletim Sistemi: windows

Aşağıdaki komut "değiştirildi:" , "yeniden adlandırıldı:" veya "yeni dosya " içeren tüm satırları görüntüler :

git status | findstr "modified: renamed: new file:"

Dosya türünü belirtmek istiyorsanız: (örneğin *.py *.ini)

git status *.py *.ini | findstr "modified: renamed: new file:"

Yazmanın çok fazla sorun olduğunu düşünüyorsanız:

  1. Bir toplu iş dosyası oluşturmak (örneğin: st.bat)

  2. içeriği aşağıdaki gibi yazın:

    @echo off
    :: st.bat  (this line doesn't necessarily. ( just let you know the scripts name.))
    git status %~1 | findstr "modified: renamed: new file:"
    
  3. toplu iş dosyanızı içeren ortam yolu ekleyin. ( st.bat)

  4. kullanım

    st.bat "*.py *.ini"
    

    (not:> 1 yazıyorsa noktalı virgül eklemeniz gerekir)

İşletim Sistemi: LINUX

@Lance'ın dediği gibi deneyebilirsiniz

git status | grep modified:

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.