Есть ли опция "git pull -- dry-run" в Git?
есть такая вещь как git pull --dry-run чтобы увидеть, как материал будет объединен, прежде чем он испортит мое рабочее дерево?
сейчас я делаю:
git fetch origin && git merge --no-commit --no-ff
Я не видел ничего в man-странице для "git-pull", связанного с ним.
чтобы уточнить, мне просто нужно это в сценарии Ant для развертывания, чтобы увидеть, есть ли конфликты при выполнении git pull, затем отступите выход из сборки, не выполняйте развертывание и оставьте это дерево каталогов таким же, каким оно было раньше git pull.
6 ответов:
Я всегда полагался на врожденные способности Git, чтобы вернуть меня, если слияние не удастся.
чтобы оценить, как слияние может произойти, вы можете начать, как вы сделали с:
$ 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Если все пошло не так, как планировалось, посмотрите на ваш
reflogи сбросить обратно в нужное состояние:$ 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}
вам нужно будет сначала загрузить, чтобы обновить локальный источник / master
git fetch originзатем вы можете сделать:
git diff --name-only origin/masterпоявится список файлов, которые изменились.
git diff origin/master directory_foo/file_bar.mбудет перечислять строку за строкой diff файла directory_foo / file_bar.м.
вы можете получить эффект, который вы хотите, создав новую ветку выброса из вашего текущего и сделав
git pullтам. Если вы недовольны результатами, ветки нетронутыми.
# 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
поскольку вытягивание подразумевает слияние, я бы пошел с running
git merge --abortЕсли ваш скрипт обнаруживает, что были какие-либо конфликты и слияние не удалось.
смотрите мой ответ на этот же вопрос:
как просмотреть git-pull без выполнения выборки?
в этом
~/.gitconfigfile:[alias] diffpull=!git fetch && git diff HEAD..origin/`git rev-parse --abbrev-ref HEAD`
Comments