89 votes

Existe-t-il une option "git pull --dry-run" dans Git ?

Existe-t-il une chose telle que git pull --dry-run pour voir comment les choses seront fusionnées avant que cela ne gâche mon arbre de travail ?

En ce moment, je le fais :

git fetch origin && git merge --no-commit --no-ff

Je n'ai rien vu dans la page de manuel de "git-pull" à ce sujet.

Pour clarifier, j'en ai juste besoin dans un script Ant pour le déploiement pour voir s'il y a des conflits en faisant git pull puis revenir en arrière, sortir de la construction, échouer le déploiement et laisser l'arborescence du répertoire telle qu'elle était auparavant. git pull .

72voto

rynmrtn Points 1091

J'ai toujours compté sur les capacités inhérentes de Git pour me ramener en arrière si une fusion échoue.

Pour estimer comment la fusion pourrait se produire, vous pouvez commencer comme vous l'avez fait avec :

$ git fetch origin branch  # Fetch changes, but don't merge
$ git diff HEAD..origin/branch # Diff your current head to the fetched commit

... personal judgement of potential merge conflicts ...

$ git merge origin/branch # merge with the fetched commit

Si les choses ne se sont pas passées comme prévu, regardez votre reflog et revenir à l'état souhaité :

$ git reflog
...
abc987  HEAD@{0}: merge activity
b58aae8 HEAD@{1}: fetch origin/branch
8f3a362 HEAD@{2}: activity before the fetch
...
$ git reset --hard HEAD{2}

40voto

GayleDDS Points 1958

Vous devrez d'abord récupérer les données pour mettre à jour votre origine/maître local.

git fetch origin

Alors vous pouvez le faire :

git diff --name-only origin/master

Listera les fichiers qui ont été modifiés.

git diff origin/master directory_foo/file_bar.m

Listera les différences ligne par ligne du fichier directory_foo/file_bar.m.

21voto

gcbenison Points 4253

Vous pouvez obtenir l'effet que vous souhaitez en créant une nouvelle branche jetable à partir de votre branche actuelle et en effectuant la procédure suivante git pull là. Si vous n'êtes pas satisfait du résultat, la branche d'origine est intacte.

15voto

radeka Points 100
# fetch new commits from origin
$ git fetch

# check what are the differences and judge if safe to apply
$ git diff origin/master

# actually merge the fetched commits 
$ git pull

9voto

Omlett Points 26

Depuis la version 2.27.0, il y a une drapeau de marche à sec

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X