web-dev-qa-db-fra.com

Git Compare les fichiers avant de les valider

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?

25
mallows98

Bien sûr, vous pouvez le faire.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

52
Karthik Bose

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.

11
Frank Sposaro

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.

1
positron