Y a-t-il une option" git pull-dry " dans Git?

est-ce qu'il y a une chose comme git pull --dry-run pour voir comment les choses vont être fusionnées avant qu'elles ne détruisent mon arbre de travail?

en ce moment je fais:

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

Je n'ai rien vu dans la page de manuel pour 'git-pull' lié à elle.

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 build, fail deployment et quitter ce répertoire l'arbre le même qu'il était avant git pull .

55
demandé sur Peter Mortensen 2013-06-20 23:42:59

6 réponses

j'ai toujours compté sur les capacités inhérentes de Git pour me récupérer 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 revenez à l'état désiré:

$ 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}
43
répondu rynmrtn 2017-12-31 19:39:57

vous aurez besoin de chercher d'abord pour mettre à jour votre origine locale / maître

git fetch origin

alors vous pouvez faire:

git diff --name-only origin/master

liste les fichiers qui ont changé.

git diff origin/master directory_foo/file_bar.m

listera la ligne par diff de file directory_foo/file_bar.M.

24
répondu GayleDDS 2013-06-20 20:07:22

vous pouvez obtenir l'effet que vous voulez en créant une nouvelle branche jeter à partir de votre actuelle et de faire le git pull là. Si vous n'êtes pas satisfait des résultats, la branche originale est intacte.

15
répondu gcbenison 2013-06-20 19:50:51
# 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
3
répondu warden 2016-12-08 12:54:13

puisque tirer implique une fusion, je dirais git merge --abort si votre script détecte des conflits et une fusion ratée.

2
répondu kostix 2013-06-21 08:44:19

voir ma réponse dans cette question similaire:

comment prévisualiser git-pull sans faire fetch?

cela va au fichier ~/.gitconfig :

[alias]
        diffpull=!git fetch && git diff HEAD..origin/`git rev-parse --abbrev-ref HEAD`
0
répondu Andy P 2018-09-05 11:02:16