Ça m'arrive souvent:
Je travaille sur quelques changements liés en même temps au cours d'une journée ou deux, et quand il est temps de s'engager, je finis par oublier ce qui a changé dans un fichier spécifique. (Ce n'est qu'un dépôt git personnel, donc je suis d'accord avec plus d'une mise à jour dans un commit.)
Existe-t-il un moyen de prévisualiser les modifications entre mon fichier local, qui est sur le point d'être archivé, et le dernier commit pour ce fichier?
Quelque chose comme:
git diff --changed /myfile.txt
Et cela imprimerait 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 rapidement voir ce que j'avais fait dans ce fichier depuis son dernier enregistrement.
git add -p
. Passez en revue chaque modification, approuvez sélectivement les modifications apportées à la scène, annulez à tout moment si vous changez d'avis, et même modifiez en ligne un morceau. Je ne m'en suis jamaisgit add
privé.q
git config --global diff.noprefix true
.vous montrera les modifications que vous avez ajoutées à votre arbre de travail depuis le dernier commit. Toutes les modifications (par étapes ou non par étapes) seront affichées.
la source
Pour vérifier les différences locales:
ou vous pouvez utiliser un outil de comparaison (au cas où vous souhaiteriez annuler certaines modifications):
Pour utiliser
git difftool
plus efficacement, installez et utilisez votre outil GUI préféré tel que Meld, DiffMerge ou OpenDiff.Remarque: Vous pouvez également utiliser
.
(au lieu du 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 quel commit.Pour afficher le fichier réel avant la validation (où se
master
trouve votre branche), exécutez:la source
Avez-vous essayé l' option
-v
(ou--verbose
) pourgit commit
? Il ajoute le diff du commit dans l'éditeur de messages.la source
Changes not staged for commit:
qui peut rendre l'éditeur de commit plus propre.Une autre technique à considérer si vous souhaitez comparer un fichier au dernier commit qui est plus pédant:
L'avantage de cette technique est que vous pouvez également comparer à l'avant-dernier commit avec:
Et celui avant ça:
Vous pouvez également remplacer «~» pour le caractère caret «^» et «votre nom de branche» par «maître» si vous n'êtes pas sur la branche principale.
la source
Je pense que c'est le cas d'utilisation parfait justifiant une interface graphique. - Bien que je comprenne parfaitement que cela peut également être réalisé assez bien dans la ligne de commande.
Personnellement, chacun de mes engagements, je le fais depuis le 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 aussi vérifier.
la source
git bisect
celle-ci qui ne sont pas vraiment accessibles.tig
«interface en mode texte pour Git» mérite d'être vérifiée.Sur macOS, accédez au répertoire racine git et entrez
git diff *
la source
La meilleure façon que j'ai trouvée, en plus d'utiliser une interface graphique de validation dédiée, est d'utiliser
git difftool -d
- Cela ouvre votre outil de comparaison en mode de comparaison de répertoires, en comparant HEAD avec le dossier sale actuel.la source
Ceci montre une comparaison utilisant la fenêtre de fente de VI dans le terminal.
la source