Comment prévisualiser git-pull sans faire de recherche?

Est-ce que c’est même possible?

Fondamentalement, il y a un repository distant à partir duquel je tire en utilisant uniquement:

git pull 

Maintenant, j’aimerais avoir un aperçu de ce que cette traction changerait (un diff) sans rien toucher de mon côté. La raison en est que cette chose que je tire peut ne pas être “bonne” et je veux que quelqu’un d’autre le répare avant de rendre mon repository “sale”.

Après avoir effectué une git fetch , faites un git log HEAD..origin pour afficher les entrées de journal entre votre dernier commit commun et la twig d’origine. Pour afficher les diffs, utilisez soit git log -p HEAD..origin pour afficher chaque patch, soit git diff HEAD...origin (trois points pas deux) pour afficher un seul diff.

Il n’y a normalement pas besoin d’annuler une extraction, car faire une récupération ne met à jour que la twig distante et aucune de vos twigs. Si vous n’êtes pas prêt à tirer et à fusionner tous les commits distants, vous pouvez utiliser git cherry-pick pour accepter uniquement les commits distants que vous souhaitez. Plus tard, lorsque vous serez prêt à tout obtenir, un tirage au sort fusionnera dans le rest des commits.

Mise à jour: Je ne suis pas tout à fait sûr de savoir pourquoi vous voulez éviter l’utilisation de git fetch. Tout ce que git fetch fait est de mettre à jour votre copie locale d’une twig distante. Cette copie locale n’a rien à voir avec aucune de vos twigs, et n’a rien à voir avec les modifications locales non validées. J’ai entendu parler de gens qui git fetch dans un job cron parce que c’est tellement sûr.

Je pense que Git Fetch est ce que vous cherchez.

Il va tirer les modifications et les objects sans les engager dans l’index de votre repo local.

Ils peuvent être fusionnés plus tard avec git merge .

Man Page

Edit: Exploration supplémentaire

Directement à partir du lien Git- SVN Crash Course

Maintenant, comment obtenez-vous de nouvelles modifications à partir d’un référentiel distant? Vous les chercher:

 git fetch http://host.xz/path/to/repo.git/ 

À ce stade, ils sont dans votre référentiel et vous pouvez les examiner en utilisant:

 git log origin 

Vous pouvez également modifier les modifications. Vous pouvez également utiliser git log HEAD..origin pour voir uniquement les modifications que vous n’avez pas dans votre twig. Alors, si vous souhaitez les fusionner – faites simplement:

 git merge origin 

Notez que si vous ne spécifiez pas de twig à extraire, il est préférable d’utiliser la distance de suivi par défaut.

La lecture de la page de manuel va honnêtement vous donner la meilleure compréhension des options et de leur utilisation.

J’essaie juste de faire cela par des exemples et de la mémoire, je n’ai actuellement pas de boîte pour tester. Vous devriez regarder:

 git log -p //log with diff 

Une récupération peut être annulée avec git reset –hard ( lien ), mais toutes les modifications non validées dans votre arborescence seront perdues, ainsi que les modifications que vous avez récupérées.

Vous pouvez aller chercher un repo à distance, voir les différences et ensuite tirer ou fusionner.

Voici un exemple de repo distant appelé origin et une twig appelée master suit l’ origin/master twig distante:

 git checkout master git fetch git diff origin/master git pull --rebase origin master 

J’ai créé un alias git personnalisé pour le faire pour moi:

 alias.changes=!git log --name-status HEAD.. 

avec ça tu peux faire ça:

 $git fetch $git changes origin 

Cela vous permettra de prévisualiser les modifications avant de procéder à une merge .

J’utilise ces deux commandes et je peux voir les fichiers à modifier.

  1. Tout d’abord, en exécutant git fetch , cela donne une sortie comme ceci (partie de la sortie):

      ...
     72f8433..c8af041 developper -> origine / developper
     ... 

Cette opération nous donne deux identifiants de validation, le premier est l’ancien et le second sera le nouveau.

  1. Puis comparez ces deux commits en utilisant git diff

      git diff 72f8433..c8af041 |  grep "diff --git" 

Cette commande listera les fichiers qui seront mis à jour:

 diff --git a/app/controller/xxxx.php b/app/controller/xxxx.php diff --git a/app/view/yyyy.php b/app/view/yyyy.php 

Par exemple, app / controller / xxxx.php et app / view / yyyy.php seront mis à jour.

La comparaison de deux commits à l’aide de git diff permet d’ imprimer tous les fichiers mis à jour avec des lignes modifiées, mais avec grep, elle recherche et obtient uniquement les lignes contenant diff –git de la sortie.

Il se peut que je sois en retard à la fête, mais c’est quelque chose qui m’a trop longtemps ennuyé. D’après mon expérience, je préférerais plutôt voir quelles modifications sont en attente, mettre à jour ma copie de travail et gérer ces modifications …

cela va au fichier ~/.gitconfig :

 [alias] diffpull=!git fetch && git diff HEAD..origin/`git rev-parse --abbrev-ref HEAD` 

il récupère la twig actuelle – fait un diff entre la copie de travail et cette twig extraite. donc vous ne devriez voir que les changements qui viendraient avec git pull .

Que diriez-vous de cloner le repository ailleurs, et de vous connecter à la fois à la caisse réelle et au nouveau clone pour voir si vous avez la même chose?