Pendant sa marque, je crée des champs de chaîne que j'ai intégrés dans la sortie liée. Très utile.
Autre qu'un complexe sed
/grep
analyse du git status
Commande, comment puis-je déterminer facilement si les fichiers de l'espace de travail ont été modifiés selon git
?
Si vous voulez juste une plaine "Y a-t-il des différences de la tête?":
git diff-index --quiet HEAD
Si le code de sortie est 0, il n'y avait pas de différence.
Si vous voulez "quels fichiers ont changé de tête?":
git diff-index --name-only HEAD
Si vous voulez "quels fichiers ont changé de tête et de quelle manière ont-ils changé (ajouté, supprimé, modifié)?":
git diff-index --name-status HEAD
Ajouter -M
(et -C
) Si vous voulez une détection de renommée (et copie).
Ces commandes vérifieront à la fois le contenu mis en scène (ce qui est dans l'index) et les fichiers de l'arbre de travail. Alternatives comme git ls-files -m
Vérifiera uniquement l'arbre de travail contre l'indice (c'est-à-dire qu'ils ignoreront tout contenu mis en scène (mais non engagé) qui est également dans l'arbre de travail).
git ls-files -m
Pour trouver cela, vous auriez pu parcourir git help -a
.
git status --porcelain
semble donner une belle production d'aptable.
Pour les crochets Git, j'ai trouvé cette commande utile
git diff-index --exit-code --ignore-submodules HEAD
Par exemple
//run some static analysis check that can change the code
something_changed=`git diff-index --exit-code --ignore-submodules HEAD`
if [ -n "$something_changed" ]
then
echo >&2 "Something changed in $local_ref, not pushing"
exit 1
fi
git diff --name-only
fait la même chose (pourrait être plus intuitive ...)