Возможно ли "git вытащить" только следующую фиксацию?

Я понимаю, что git pull обновит рабочую ветвь до конца удаленной ветки, которую она отслеживает. Итак, скажем, если я сделаю git pull, он потянет все последние изменения. В моем случае, он потянет за 5 изменений поверх моего дерева.

Есть ли способ git pull изменить только следующее изменение? то есть, если git pull будет помещать изменения 03, 04, 05, 06 и 07 поверх моего дерева, как мне сделать только изменение 03? Во время этой команды я не знаю идентификатор фиксации следующего изменения, которое он втянул.

Кончик моего дерева полностью не изменяется и не будет иметь никаких конфликтов слияния и т.д.

Ответ 1

Возможно, что-то вроде этого?

git fetch
git merge <commit to merge>

Чтобы найти идентификатор комманды, которую вы хотите объединить, найдите его в gitk после запуска выборки.

Ответ 2

Это должно быть возможно в теории. git status показывает, что нужно извлечь 8 коммитов, если скрипт может разобрать "8" и взять ввод (по умолчанию 1) для количества следующих коммитов, которое вы хотите. Вы можете запустить git-pull-next 2 и он может сделать это:

  1. Каким-то образом проверьте, сколько существует новых коммитов (работает git status)
  2. Установить в переменную newCommits
  3. Также установите переменную pullNextNCommits, равную pullNextNCommits, по умолчанию 1
  4. Запустите git pull
  5. Запустите git log
  6. Возьмите хеш коммита, который является newCommits ago, за исключением pullNextNCommits
  7. Сохранить переменную current_git_branch как результат git rev-parse --abbrev-ref HEAD
  8. Запустите git checkout <hash>
  9. удалить current_git_branch локально
  10. git checkout -b current_git_branch

TADA! Не возможно! Просто нужно написать этот скрипт...

Этот ответ - вики сообщества, не стесняйтесь более подробно изложить код psuedo.

Вероятно, есть лучший способ сделать это - так как слияние git pull может иметь проблемы, было бы лучше черпать вдохновение из первого ответа здесь. Но каким-то образом программно найти следующий хеш коммита.