apakah mungkin hanya `git status` file yang dimodifikasi?

173

Apakah mungkin git statusdan hanya menampilkan file yang dimodifikasi?

Masalahnya adalah saya memiliki terlalu banyak file bertahap yang tidak ingin saya komit atau gitignore saat ini dan saya tidak dapat menggulir ke atas. Saya memiliki batas scrollback yang ditetapkan pada Ubuntu.

chrisjlee
sumber
1
Bagaimana Anda memiliki batas gulir? Secara default, git statusakan memanggil pager.
Lily Ballard
Batas scrollback maaf diatur ke 512 baris pada mesin saya. Saya kira saya bisa mengubahnya; tetapi akan lebih suka perintah satu baris untuk melihat file yang dimodifikasi hanya dalam status karena GD / imagecache akan menghasilkan lebih banyak file pada akhirnya.
chrisjlee
1
Benar ... maksud saya pager tidak menggunakan scrollback terminal Anda.
Lily Ballard
Adakah yang salah dengan hanya mencari sesuatu yang menurut Anda menarik? Gunakan --shortatau --porcelainuntuk mendapatkan versi satu-baris dari status.
torek
2
Satu hal lagi, berdasarkan saran untuk menggunakan git ls-files -m: modifikasi mana yang Anda pedulikan, panggung, tidak panggung, atau keduanya?
torek

Jawaban:

268

Anda tidak dapat melakukan ini dengan git status, tetapi Anda bisa menggunakan git ls-files -muntuk menampilkan semua file yang dimodifikasi.

Lily Ballard
sumber
6
Asal tahu saja, ini hanya akan menampilkan file yang telah dimodifikasi tanpa dipentaskan.
Gerry
11
Meskipun ini adalah jawaban yang diterima, itu memiliki informasi yang tidak akurat. Anda dapat "'git status' hanya file yang dimodifikasi" dengan git status | grep modifiedseperti yang ditunjukkan oleh user23186 dalam jawaban mereka.
K. Alan Bates
9
Bagi saya, git ls-files -mtidak menunjukkan apa-apa tetapi git status | grep modifiedberfungsi.
Sandeepan Nath
1
Seperti yang telah ditunjukkan orang lain, ini hanya menampilkan file yang tidak dipentaskan. Jika Anda ingin menampilkan kedua file DAN stage yang tidak dipentaskan, ini adalah jawaban terbaik yang pernah saya lihat: stackoverflow.com/a/39994894/452587
thdoan
1
@thdoan Ada sejumlah opsi untuk menampilkan file yang dipentaskan, meskipun pertanyaan khusus ini sepertinya ingin secara eksplisit mengecualikan file yang dipentaskan. git diff --name-only --diff-filter=M HEADakan menunjukkan hanya file yang dimodifikasi untuk dipentaskan dan tidak dipentaskan, meskipun Anda harus memeriksa dokumen --diff-filteruntuk melihat jenis filter apa yang ingin Anda tambahkan.
Lily Ballard
57

Sepertinya hanya git status -unoakan memperlihatkan file-file yang dilacak git, tanpa menunjukkan apa pun di direktori. Tidak persis apa yang Anda minta, tetapi mungkin mencapai hal yang sama (mendapatkan daftar panjang file yang dapat dibaca git track).

TomNysetvold
sumber
1
git status -u notidak menunjukkan (1) file yang dilacak yang dimodifikasi, atau (2) file yang dilacak yang dipentaskan. Saya telah memverifikasi ini dengan versi git 1.8.5.2 dan 1.9.4.
mxxk
2
@ TomNysetvold, Anda mungkin benar-benar berarti git status -uno( stackoverflow.com/questions/7008546/… )
mxxk
29
git status -s | awk '{if ($1 == "M") print $2}'
Carl Bäckström
sumber
3
Atauawk '$1 == "M" { print $2 }'
Calpau
29

Untuk file yang dimodifikasi:

git status | grep modified:
Tombak
sumber
1
Sangat berguna saya telah membuat alias untuk ini:git config --global alias.modified '!git status | grep modified:'
Richard Parnaby-King
15

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

ZeroGraviti
sumber
2
Saya merekomendasikan filter-filter itu: git diff --cached --name-only --diff-filter=ACMRyang menambahkan, menyalin, memodifikasi dan mengganti nama file.
qwertzguy
7

git diff --name-only bekerja juga.

mpelzsherman
sumber
3

Saya sedang mencari info yang sama dan menemukan berikut ini memberikan file yang dimodifikasi:

git status -uno
Tectrendz
sumber
2
git status -uno --porcelainmenambahkan output yang bagus untuk skrip parsing
pprzemek
3

Kamu bisa memakai

$ git status -uno 

untuk daftar hanya file yang dimodifikasi.

Karthik
sumber
3

Masalahnya adalah saya memiliki terlalu banyak file bertahap yang tidak ingin saya komit atau gitignore saat ini dan saya tidak dapat menggulir ke atas.

Meskipun ini mungkin tidak secara langsung menjawab pertanyaan tentang hanya mendaftarkan file yang diubah, ini dapat membantu membatasi jumlah file yang terdaftar.

Anda dapat melewati jalur untuk git statusmembatasi output ke folder tertentu di repo.

Sebagai contoh:

git status app
git status spec
git status src/components
BillFienberg
sumber
2

Untuk membuat daftar file yang dimodifikasi, gunakan:

git ls-files -m

Jika Anda hanya menginginkan nama bas (tidak ada jalur) maka Anda dapat menyalurkan setiap hasil ke perintah nama bas menggunakan xargs, baris demi baris:

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

Saya menggunakan perintah ini:

$ git status -uno -sb

Dan hasilnya terlihat seperti ini:

## master...origin/master
 M GNUmakefile
 M include/mp4v2/project.h
SebMa
sumber
0

Saya menggunakan git cola. Ini adalah klien UI yang sederhana dan elegan yang akan menunjukkan kepada Anda file yang dimodifikasi dan memberi Anda suntikan berbeda dari perubahan yang Anda buat.

git colamemberi Anda GUI di mana Anda dapat memvisualisasikan file mana yang Anda modifikasi, yang Anda tampilkan, dan bahkan yang tidak Anda lacak. Pertanyaan Anda adalah menggunakan status git saja, saya percaya, tapi saya pikir git cola dapat membantu saat itu dan hal-hal lain juga. Periksa halaman web ini dari info lebih lanjut: git-cola.github.com/screenshots.html

n_x_l
sumber
1
Bisakah Anda memberikan bagaimana hubungannya dengan jawaban saya mengingat saya tidak terbiasa dengan git cola ini. mis. tangkapan layar, atau lebih detail?
chrisjlee
apakah itu mengapa diturunkan? :) Pokoknya, git cola memberi Anda GUI di mana Anda dapat memvisualisasikan file mana yang Anda modifikasi, yang Anda tampilkan, dan bahkan yang tidak Anda lacak. Pertanyaan Anda adalah menggunakan status git saja, saya percaya, tapi saya pikir git cola dapat membantu saat itu dan hal-hal lain juga. Periksa halaman web ini dari info lebih lanjut: git-cola.github.com/screenshots.html
n_x_l
Bagaimana cara mengubah bahasa antarmuka cola?
ziyuang
0

Jika Anda ingin membuat daftar file yang dimodifikasi, Anda dapat melakukan ini:

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

David Hernandez
sumber
0

Untuk membuat daftar semua file yang dimodifikasi, gunakan:

git show --stat --oneline HEAD
Fayaz
sumber
0

Semua jawaban bagus; hanya FEI, "git checkout" (beralih ke atau di cabang yang sama) tampaknya hanya menampilkan file yang dimodifikasi.

pengguna1172173
sumber
0

OS: windows

Perintah berikut akan menampilkan semua baris yang mengandung "modified:" , "rename:" atau "file baru:"

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

Jika Anda ingin menentukan jenis file: (misalnya *.py *.ini)

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

Jika menurut Anda terlalu banyak kesulitan mengetik:

  1. buat file batch (misalnya st.bat:)

  2. tulis konten sebagai berikut:

    @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. tambahkan path lingkungan yang berisi file batch Anda. ( st.bat)

  4. pemakaian

    st.bat "*.py *.ini"
    

    (catatan: jika ketik> 1 maka harus menambahkan titik koma)

OS: LINUX

seperti @ Lance bilang kamu bisa mencoba

git status | grep modified:

Carson
sumber