web-dev-qa-db-fra.com

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 de gâcher 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 de 'git-pull' qui s'y rapporte.

Pour clarifier, j'en ai juste besoin dans un script Ant pour le déploiement afin de voir s'il existe des conflits lors de l'exécution de git pull, puis retirez-vous de la construction, échouez dans le déploiement et laissez cette arborescence de répertoires identique à celle d'avant git pull.

65
Danila Ladner

J'ai toujours compté sur les capacités inhérentes de Git pour me récupérer si une fusion échouait.

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 déroulées comme prévu, examinez votre reflog et revenez à 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}
52
rynmrtn

Vous devrez d'abord chercher pour mettre à jour votre origine/maître local

git fetch Origin

Ensuite, vous pouvez faire:

git diff --name-only Origin/master

Dresse la liste des fichiers qui ont changé.

git diff Origin/master directory_foo/file_bar.m

Répertorie ligne par ligne le diff du fichier directory_foo/file_bar.m.

28
GayleDDS

Vous pouvez obtenir l’effet souhaité en créant une nouvelle branche jetable à partir de votre branche actuelle et en effectuant la git pull Là. Si vous n'êtes pas satisfait des résultats, la branche d'origine est intacte.

17
gcbenison
# 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
8
warden

Puisque tirer implique de fusionner, je ferais avec courir git merge --abort si votre script détecte des conflits et que la fusion échoue.

3
kostix

Voir ma réponse dans cette question similaire:

Comment prévisualiser git-pull sans faire chercher?

cela va au ~/.gitconfig fichier:

[alias]
        diffpull=!git fetch && git diff HEAD..@{u}
0
Andy P