Status Git - apakah ada cara untuk menampilkan perubahan hanya di direktori tertentu?


141

Saya ingin melihat daftar file yang diubah sejak komit terakhir, seperti yang git statusditunjukkan, tetapi saya hanya peduli tentang file yang terletak dalam satu direktori. Apakah ada cara untuk melakukan ini? Saya mencoba git status <directory>, tetapi tampaknya ini melakukan sesuatu yang sama sekali berbeda (mencantumkan semua file yang diubah, seperti yang akan saya tulis git add <directory>terlebih dahulu).

Dokumentasi untuk git-status tidak banyak menjelaskan, selain fakta bahwa ia menerima opsi yang sama dengan yang dilakukan git-commit (tetapi tujuan git-commit bukanlah untuk menampilkan daftar file yang diubah).

Jawaban:


206

Dari dalam direktori:

git status .

Anda benar-benar dapat menggunakan jalur apa pun, gunakan sintaks ini:

git status <directoryPath>

Misalnya untuk direktori dengan path "my / cool / path / here"

git status my/cool/path/here

4
Terima kasih! Juga, 'status git <directory>' sepertinya melakukan apa yang saya harapkan - sejujurnya saya tidak ingat masalah apa yang saya hadapi sebelumnya ... mungkin ini masalah versi git yang berbeda, tidak tahu.
Kuba Suder

Tidak masalah, dan mungkin - versi git yang lebih baru tampaknya membuat segalanya lebih mudah.
Sam Doidge

4
Ya, perilaku pasti berubah dari 1,6 menjadi 1,7. Ini memenuhi persyaratan OP di 1.7 tetapi 1.6 berlanjut di seluruh repo.
colgur

saya mencari perintah ini bahkan setelah terbiasa dengan perintah yang paling rumit seperti stash dan rebase karena saya tidak ingin melihat file terlacak dalam status merah. git rm juga tidak berguna karena dihapus dari indeks saat komit, tetapi perintah ini sebenarnya sangat dibutuhkan ketika hanya perlu bekerja dengan sedikit. Solusi sederhana selalu merupakan solusi yang tidak terlihat di mana pun.
Shashank Bhatt

32

Alasan yang git statusmengambil opsi yang sama git commitadalah bahwa tujuannya git statusadalah untuk menunjukkan apa yang akan terjadi jika Anda berkomitmen dengan opsi yang sama seperti yang Anda berikan git status. Dalam hal git statusini benar-benar git commit --preview.

Untuk mendapatkan apa yang Anda inginkan, Anda dapat melakukan ini yang menunjukkan perubahan bertahap:

git diff --stat --cached -- <directory_of_interest>

dan ini, yang menunjukkan perubahan tidak bertahap:

git diff --stat -- <directory_of_interest>

atau ini yang menunjukkan keduanya:

git diff --stat HEAD -- <directory_of_interest>

3
Ini berfungsi sebagian, meskipun tidak menampilkan file yang baru dibuat (tidak terlacak), seperti yang dilakukan git-status ...
Kuba Suder

Oke, saya tidak yakin laporan apa yang Anda butuhkan. Jika Anda perlu memeriksa file yang tidak bertingkat, coba git ls-files --others <directory_in_question>atau ls-files -o.
CB Bailey

git ls-files -omenampilkan file dalam direktori yang tidak dipentaskan secara rekursif, sedangkan git statushanya menampilkan direktori level teratas. Dan seseorang harus membuat git diff, git ls-filesmengeluarkan dan membuat ulang semua kode warna dll. Yang git statusmenyediakan jika itu akan menjadi penggantinya git status. Saya juga sangat ingin melihat solusi untuk ini!
Peter V. Mørch

14

Solusi paling sederhana:

  1. Masuk ke direktori
  2. git status | grep -v '\.\.\/'

Tentu saja ini membuang warna.


Jika perlu, Anda dapat menambahkan beberapa modifikasi agar warnanya kembali. contoh 1 contoh 2
Carson

2

Sebagai catatan, jika Anda menyederhanakan untuk memeriksa statistik git tanpa membuka direktori git;

### buat file
sudo nano / usr / local / bin / gitstat

### masukkan ini

#! / usr / bin / env bash

dir = $ 1

jika [[$ dir == ""]]; kemudian
    echo "Diperlukan direktori!"
    keluar
fi

echo "Git stat untuk '$ dir'."

git --git-dir = $ dir / .git --work-tree = $ dir diff --stat

### berikan perm eksekutif
sudo chmod + x / usr / local / bin / gitstat

Dan menyebut bahwa script sederhana: gitstat /path/to/foo-project. Anda juga dapat menggunakannya saat sedang foo-projectmengerjakan gitstat .dan jadi anggaplah lebih pendek dari git status -s, git diff --statatau git diff --stat HEADjika Anda selalu menggunakan konsol daripada gui.

Kredit:

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.