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
.
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}
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.
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.
# 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
Puisque tirer implique de fusionner, je ferais avec courir git merge --abort
si votre script détecte des conflits et que la fusion échoue.
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}