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
.
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}
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.
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.
# 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 une fusion, je dirais git merge --abort
si votre script détecte des conflits et une fusion ratée.
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`