Git: нажмите один фиксатор

Скажем, я сделал несколько коммитов и хочу, чтобы вишня выбрала те, которые я нажимаю на удаленный репозиторий. Как я могу это сделать (в ascii: C1- > C2- > C3- > C4, и я хочу нажать C2 и C4). Будет ли переупорядочиваться с перезагрузкой, сбросом, нажатием, а затем сбросом? (C1- > C2- > C3- > C4 = > C2- > C4- > C1- > C3 = > reset C4 = > push = > reset C3). Есть ли лучший способ?

Ответ 1

Если у вас есть ваши фиксации в частном филиале, вы можете перебирать коммиты из частного ветки и применять их к официальному филиалу. На этом этапе вы можете теперь нажимать все свои фиксации на официальной ветке (которая является подмножеством, выбранным вами ранее).

Ответ 2

Что вы ищете:

  git push origin commit-id: master
Код>

Кредит: http://blog.dennisrobinson. название/нажимной только один фиксации, с-мерзавец/

Пояснительные примечания:

  • Нажатие фиксации передает все коммиты перед ним (как сказал Амбер). ключ состоит в том, чтобы сначала изменить порядок ваших коммитов ( git rebase -i), чтобы они были в том порядке, в котором вы хотите нажать их.
  • Предлагаемый метод ветвления + вишня-выбор (предложенный midtiby) также работает, но зачем создавать откидные ветки, когда вам это не нужно.
  • commit-id не обязательно должен быть sha1. Чтобы подтолкнуть все до последний N совершает, используйте "HEAD ~ N" вместо commit-id.

Если нажатие на ветку, которая еще не существует в удаленном репозитории, префикс удаленной ветки с помощью refs/heads/, например:

  git push origin HEAD ~ 1: refs/heads/полностью новая ветвь
Код>

(Если нет, git будет наказать вас это безнадежное сообщение об ошибке).

Ответ 3

$ git push <remote name> <commit hash>:<remote branch name>

# Example:
$ git push origin 2dc2b7e393e6b712ef103eaac81050b9693395a4:master

Ответ 4

IIRC, из-за того, что git считает, что совершает работу, C4 по своей сути включает C3, поэтому концепция "нажатия C4, но не C3" не имеет смысла для git (а также C2 относительно C1). (См. Ответ на этот предыдущий вопрос.)