Est-ce même possible?
Fondamentalement, il existe un référentiel distant à partir duquel je tire en utilisant simplement:
git pull
Maintenant, je voudrais prévisualiser ce que cette traction changerait (un diff) sans rien toucher de mon côté. La raison en est que ce que je tire n'est peut-être pas "bon" et je veux que quelqu'un d'autre le répare avant de rendre mon dépôt "sale".
git
version-control
Milan Babuškov
la source
la source
Réponses:
Après avoir fait un
git fetch
, faites ungit log HEAD..origin/master
pour afficher les entrées de journal entre votre dernier commit commun et la branche principale d'origine. Pour afficher les diff, utilisez soitgit log -p HEAD..origin/master
pour afficher chaque patch, soitgit diff HEAD...origin/master
(trois points et non deux) pour afficher un seul diff.Il n'est normalement pas nécessaire d'annuler une extraction, car effectuer une extraction ne met à jour que les branches distantes et aucune de vos branches. Si vous n'êtes pas prêt à effectuer un pull and merge dans toutes les validations à distance, vous pouvez utiliser
git cherry-pick
pour accepter uniquement les validations à distance spécifiques que vous souhaitez. Plus tard, lorsque vous êtes prêt à tout obtenir, unegit pull
volonté fusionnera dans le reste des validations.Mise à jour: je ne sais pas vraiment pourquoi vous voulez éviter l'utilisation de git fetch. Tout ce que git fetch fait est de mettre à jour votre copie locale des branches distantes. Cette copie locale n'a rien à voir avec aucune de vos succursales et n'a rien à voir avec les modifications locales non validées. J'ai entendu parler de gens qui exécutent git fetch dans un travail cron parce que c'est tellement sûr. (Je ne recommanderais pas normalement de faire cela, cependant.)
la source
git diff ...@{u}
est le même quegit diff HEAD...origin/master
si origine / maître est la branche amontJe pense que git fetch est ce que vous cherchez.
Il tirera les modifications et les objets sans les valider dans l'index de votre dépôt local.
Ils peuvent être fusionnés plus tard avec git merge .
Page de manuel
Edit: Explication supplémentaire
Directement de l' accident Git- SVN Cours lien
La lecture de la page de manuel va honnêtement vous donner la meilleure compréhension des options et comment l'utiliser.
J'essaie simplement de le faire par des exemples et de la mémoire, je n'ai pas actuellement de boîte à tester. Vous devriez regarder:
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.
la source
git reset --soft
ou--mixed
? Consultez la page de manuel.Vous pouvez récupérer à partir d'un référentiel distant, voir les différences, puis extraire ou fusionner.
Voici un exemple pour un référentiel distant appelé
origin
et une branche appeléemaster
suivi de la branche distanteorigin/master
:la source
J'ai créé un alias git personnalisé pour le faire pour moi:
avec cela, vous pouvez le faire:
Cela vous donnera un moyen agréable et facile de prévisualiser les modifications avant de faire un
merge
.la source
J'utilise ces deux commandes et je peux voir les fichiers à modifier.
En exécutant d'abord git fetch , il donne une sortie comme celle-ci (une partie de la sortie):
Cette opération nous donne deux ID de validation, le premier est l'ancien et le second sera le nouveau.
Comparez ensuite ces deux validations à l'aide de git diff
Cette commande listera les fichiers qui seront mis à jour:
Par exemple, app / controller / xxxx.php et app / view / yyyy.php seront mis à jour.
La comparaison de deux validations à l'aide de git diff affiche tous les fichiers mis à jour avec des lignes modifiées, mais avec grep, il recherche et obtient uniquement les lignes contenant diff --git à partir de la sortie.
la source
Je suis peut-être en retard à la fête, mais c'est quelque chose qui m'a dérangé trop longtemps. D'après mon expérience, je préférerais voir quelles modifications sont en attente plutôt que de mettre à jour ma copie de travail et de gérer ces modifications.
Cela va dans le
~/.gitconfig
fichier:Il récupère la branche actuelle, puis fait une différence entre la copie de travail et cette branche extraite. Vous ne devriez donc voir que les changements qui en découleraient
git pull
.la source
HEAD..@{u}
? C'est plus simple et n'exige pas que la télécommande soit nommée "origine" ou que votre branche soit nommée de la même manière que sur la télécommande.git pull
si vous n'aimez pas ce qu'elle fait ... donc je ne sais pas quel est le cas d'utilisation pour cela.git pull
après. Je pense aussi que c'était la question de l'op.Si vous ne voulez pas que git-fetch mette à jour votre .git local, copiez simplement votre dépôt local dans un répertoire temporaire et faites-y un pull. Voici une petite main:
Ex.:
la source
Qu'en est-il du clonage du dépôt ailleurs, et de faire git log à la fois sur la vraie caisse et sur le nouveau clone pour voir si vous avez la même chose.
la source