Ça m'arrive souvent:
Je travaille sur un couple de modifications liées en même temps sur une journée ou deux, et quand vient le moment de commettre, je finis par oublier ce qui a changé dans un fichier spécifique. (Ceci est juste un dépôt personnel git, alors je suis d'accord pour avoir plus d'une mise à jour dans un commit.)
Existe-t-il un moyen de prévisualiser les modifications entre mon fichier local, sur le point d'être archivé, et le dernier commit pour ce fichier?
Quelque chose comme:
git diff --changed /myfile.txt
Et cela afficherait quelque chose comme:
line 23
(last commit): var = 2+2
(current): var = myfunction() + 2
line 149
(last commit): return var
(current): return var / 7
De cette façon, je pouvais voir rapidement ce que j'avais fait dans ce fichier depuis la dernière vérification.
Si vous voulez voir ce que vous n'avez pas encore git add
ed:
git diff myfile.txt
ou si vous voulez voir les modifications déjà ajoutées
git diff --cached myfile.txt
git diff HEAD file
vous montrera les modifications que vous avez ajoutées à votre arbre de travail depuis le dernier commit. Tous les changements (programmés ou non) seront affichés.
Avez-vous essayé l'option -v
(ou --verbose
) pour git commit
? Il ajoute le diff du commit dans l'éditeur de message.
Pour vérifier les différences locales:
git diff myfile.txt
ou vous pouvez utiliser un outil de diff (au cas où vous voudriez annuler certaines modifications):
git difftool myfile.txt
Pour utiliser git difftool
plus efficacement, installez et utilisez votre outil graphique préféré, tel que Meld, DiffMerge ou OpenDiff.
Remarque: Vous pouvez également utiliser .
(au lieu de nom de fichier) pour voir les modifications actuelles du répertoire.
Afin de vérifier les changements pour chaque ligne, utilisez: git blame
qui affichera quelle ligne a été validée dans quelle validation.
Pour afficher le fichier réel avant la validation (où master
est votre branche), exécutez:
git show master:path/my_file
Une autre technique à considérer si vous souhaitez comparer un fichier au dernier commit qui est plus pédant:
git diff master myfile.txt
L'avantage de cette technique est que vous pouvez également comparer l'avant-dernier commit avec:
git diff master^ myfile.txt
et celui avant ça:
git diff master^^ myfile.txt
Vous pouvez également remplacer "~" par le caractère "^" du curseur et "par votre nom de branche" par "maître" si vous ne vous trouvez pas dans la branche principale.
Je pense que c'est le cas d'utilisation parfait, garantissant une interface graphique. - Bien que je comprenne tout à fait que cela peut également être réalisé assez bien dans la ligne de commande.
Personnellement, chaque commit que je fais est du git-gui. Dans lequel je peux faire plusieurs commits atomiques avec des morceaux/lignes séparés s'il est logique de le faire.
Gut Gui permet de visualiser les diffs dans une interface colorée bien formatée, est plutôt léger. On dirait que c'est quelque chose que vous devriez commander aussi.
Sur macOS, accédez au répertoire racine de git et entrez git diff *
Le meilleur moyen que j’ai trouvé, mis à part l’utilisation d’une interface graphique de validation dédiée, est d’utiliser git difftool -d
- Ceci ouvre votre outil de diff en mode de comparaison de répertoires, en comparant HEAD avec le dossier sale en cours.
git difftool -d HEAD filename.txt
Ceci montre une comparaison en utilisant la fenêtre fendue du VI dans le terminal.