Existe-t-il une fonctionnalité dans git où je pourrais comparer mes fichiers locaux à un contrôle de source git avant de valider les modifications?
Bien sûr, vous pouvez le faire.
Utiliser la commande git diff
Sans aucun argument: comparera chaque fichier modifié de votre système de fichiers avec les fichiers de la balise (ou) de la branche extraite actuelle.
En utilisant git diff <tag(or)branch name>
: comparera chaque fichier modifié dans votre système de fichiers avec les fichiers dans la balise de branche (ou) spécifiée.
En utilisant git diff <path/to/file_name (or) path/to/folder>
: comparera le ou les fichiers spécifiés dans le dossier de votre système de fichiers avec la balise de branche (ou) extraite actuelle.
En utilisant git diff <tag1(or)branch1 name> <tag2(or)branch2 name>
: comparera tous les fichiers modifiés entre deux branches/balises.
Il existe de nombreuses options, vous pouvez passer à la commande 'git diff' pour formater votre sortie. Ici, j'en ai énuméré quelques-uns:
git diff --name-only
: Affiche uniquement les noms des fichiers modifiés, pas le contenu.git diff --name-status
: Affiche uniquement les noms et l'état des fichiers modifiés.git diff --cached (or --staged)
: compare uniquement les fichiers qui sont organisés/indexés.pour plus d'informations: exécutez git diff --help
dans votre git bash.
FYI: git diff
Générera une sortie en ligne de commande. Si vous souhaitez voir la sortie dans certains outils visuels, utilisez git difftool
.
En utilisant git difftool
: vous pouvez configurer git pour utiliser l'outil diff/merge pour comparer les fichiers. Découvrez ce lien: tilisez Winmerge à l'intérieur de Git pour diff fichier
Vous pouvez également passer tous les arguments et options de git diff
À git difftool
.
J'aime utiliser
git status
Il vous montrera quels fichiers ont changé et ce que vous suivez. Vous pouvez ensuite utiliser
git diff
ou le plus convivial GUI
gitk
Pour voir le diff.
Je préfère utiliser cette méthode.
Un script pour comparer
#!/bin/sh
( # execute in a subshell so you can continue
# working in the current Shell
set -o xtrace # bash setting that echos each command before it's executed
> /tmp/auto_bcompare_log # truncate existing log file
BCOMP_PATH=/usr/bin/bcompare
BRANCH="$1" # get branch argument from command line
TEMPDIR=`mktemp -d` # get a temp directory
CWD=`pwd` # remember the current directory
git clone $CWD $TEMPDIR
cd $TEMPDIR
git checkout $BRANCH
cd $CWD
$BCOMP_PATH $CWD $TEMPDIR
rm -rf $TEMPDIR
) >> /tmp/auto_bcompare_log 2>&1 < /dev/null & # background and redirect
# stdout/stderr/stdin
Le script ci-dessus est certainement _pas_ écrit par moi. Je l'ai pris sur le net, mais pas sûr des sources. Enregistrez-le dans votre référentiel sous compare.sh. Assurez-vous de donner le chemin correct pour le fichier bcompare.
Pour comparer avant de valider.
./compare.sh <branch_you_want_to_compare>
Ce que fait essentiellement ce script, c'est qu'il extrait la branche que vous donnez comme paramètre à un répertoire temporaire et s'ouvre pour une comparaison avec votre pwd. Avec cela, vous pouvez revoir vos modifications avant de vous engager. J'espère que c'est ce que tu veux.