git status - c'è un modo per mostrare i cambiamenti solo in una directory specifica?
Domanda
Mi piacerebbe vedere un elenco dei file modificati dall'ultimo commit, come dimostra git status
, ma mi preoccupano solo file che si trovano in una singola directory. C'è un modo per fare questo? Ho provato git status <directory>
, ma sembra che questo non fa qualcosa di completamente diverso (elenca tutti i file modificati, come lo sarebbero se ho scritto git add <directory>
prima).
La documentazione per git-status non dice molto, a parte il fatto che accetta le stesse opzioni che git-commettono fa (ma di scopo git-commit è di non mostrare gli elenchi dei file modificati).
Soluzione
Da all'interno della directory:
git status .
È possibile utilizzare qualsiasi percorso davvero, utilizzare questa sintassi:
git status <directoryPath>
Per esempio per la directory con il percorso "il mio / freddo / path / qui"
git status my/cool/path/here
Altri suggerimenti
La ragione per cui git status
le stesse opzioni come git commit
è che lo scopo della git status
è quello di mostrare che cosa accadrebbe se avete commesso con le stesse opzioni come avete passato a git status
. A questo proposito è davvero git status
git commit --preview
.
Per ottenere ciò che si vuole, si potrebbe fare questo che gli spettacoli in scena modifiche:
git diff --stat --cached -- <directory_of_interest>
e questo, che mostra i cambiamenti unstaged:
git diff --stat -- <directory_of_interest>
o del presente, che mostra sia:
git diff --stat HEAD -- <directory_of_interest>
soluzione più semplice:
- Vai alla directory
-
git status | grep -v '\.\.\/'
Naturalmente questo scarta i colori.
Come nota, se si semplifica per controllare le statistiche git senza andare a git directory;
### create file sudo nano /usr/local/bin/gitstat ### put this in #!/usr/bin/env bash dir=$1 if [[ $dir == "" ]]; then echo "Directory is required!" exit fi echo "Git stat for '$dir'." git --git-dir=$dir/.git --work-tree=$dir diff --stat ### give exec perm sudo chmod +x /usr/local/bin/gitstat
E chiama così semplice script: gitstat /path/to/foo-project
. È anche possibile usarlo mentre in foo-project
solo facendo gitstat .
e così supponiamo più breve di git status -s
, git diff --stat
o git diff --stat HEAD
se la stanno usando sempre di console invece di GUI.
Credits: