git status - c'è un modo per mostrare i cambiamenti solo in una directory specifica?

StackOverflow https://stackoverflow.com/questions/715321

  •  23-08-2019
  •  | 
  •  

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).

È stato utile?

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:

  1. Vai alla directory
  2. 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:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top