web-dev-qa-db-fra.com

Fichier non affiché dans git diff après un ajout de git. Comment savoir si cela sera commis?

J'avais un fichier non suivi qui n'apparaissait pas dans un diff git et lorsque je l'ai ajouté à la zone "modifications à valider", il n'apparaît toujours pas dans le diff git. Je montre avec un git status -v quand je fais un diff contre HEAD.

Je suis encore très nouveau sur git, alors est-ce que quelqu'un pourrait me dire si le fichier sera validé même s'il n'apparaît pas dans un diff ordinaire, car il a été ajouté à la zone de préparation?

31
Kitty1911

Si vous souhaitez voir les modifications staged dans un diff, vous pouvez toujours utiliser git diff, il vous suffit de passer le drapeau --staged:

david@pav:~/dummy_repo$ echo "Hello, world" > hello.txt
david@pav:~/dummy_repo$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   hello.txt
nothing added to commit but untracked files present
david@pav:~/dummy_repo$ git add hello.txt
david@pav:~/dummy_repo$ git diff
david@pav:~/dummy_repo$ git diff --staged
diff --git a/hello.txt b/hello.txt
new file mode 100644
index 0000000..76d5293
--- /dev/null
+++ b/hello.txt
@@ -0,0 +1 @@
+Hello, world

Si vous ne vous souciez que des fichiers mis en scène, vous pouvez bien sûr faire un git status, mais git diff --staged --name-only donnera chaque nom de fichier mis en scène sur sa propre ligne.

41
David Cain

Pour voir toutes les modifications dans l’arbre de travail depuis votre dernier commit, utilisez les nouveaux fichiers:

git diff HEAD

Voir plus d'exemples ici: git-diff

22
milkovsky

Comme tu l'as vu. il apparaît dans git status, alors oui, il sera validé lorsque vous git commit.

Vous pouvez trouver utile d’utiliser un outil visuel git tel que gitx (Mac) ou gitg (Linux), 

Il a de jolis panneaux pour vous montrer mis en scène, pas mis en scène, etc.

enter image description here

Ma capture d'écran semble épargnée car je n'ai actuellement aucun changement dans ce statut.

5
Michael Durrant

Si vous avez tapé "git add __", le fichier sera inclus dans votre prochain commit. Ce commit sera poussé sur le serveur lorsque vous exécuterez "git Push".

1
tom

J'aimerais ajouter à la réponse de David Cain la nuance suivante: la commande ... 

git diff --staged

... ne montre que les modifications effectuées par étapes (comme l'a souligné @rogerdpack). 

Maintenant, si vous ne faites que générer le diff d’un fichier, je n’ai rien à ajouter. Mais si vous voulez générer un fichier diff avec "toutes les modifications depuis le dernier HEAD", vous devriez probablement (1.) placer tous les fichiers avec des modifications, (2.) exécuter le diff, (3.) démonte tous les fichiers, comme suit:

git add -A
git diff --staged HEAD
git reset

Inutile de dire que ces commandes vont perturber tous vos fichiers précédemment stockés et non stockés. Vous devez donc faire preuve de prudence si vous avez beaucoup de fichiers temporaires. Voir la page de manuel de git diff pour plus d'informations.

0
Xavi