Есть ли опция "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.

680   6  

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 без выполнения выборки?

в этом ~/.gitconfig file:

[alias]
        diffpull=!git fetch && git diff HEAD..origin/`git rev-parse --abbrev-ref HEAD`

Comments

    Ничего не найдено.