2015-10-12 3 views
0

Мой проект имеет одну ветвь master. Допустим, я выполнил четыре коммитов: A, B, C и D. Теперь я только понял, что D - это нечто слишком экспериментальное, поэтому его не должно быть на master (пока), а на отдельной отдельной ветви, скажем experimental.Удалите фиксацию из ветки и поместите ее на отдельную ветвь

Как я:

  • Положите D на ветви своей собственной?
  • Вернитесь к C как master и выполните новые коммиты на этой ветке?

(Примечание: Я не хочу, чтобы просто отменить обязательство)

+0

Я не уверен, если вы можете переместите фиксацию, но вы можете просто [отменить фиксацию] (http://stackoverflow.com/questions/927358/how-do-you-undo-the-last-commit), переключить ветви и снова зафиксировать. – GolezTrol

ответ

1

Во-первых, вам нужно branch в experimental ветвь от master:

[email protected] ~/src/git/myproject [master] $ git branch experimental 

Затем вы можете reset в master ветвь один совершить за:

[email protected] ~/src/git/myproject [master] $ git reset HEAD~ --hard 
1

Во-первых, создать experimental ветвь на D фиксации. На данный момент это будет то же самое, что и master.

Сделайте git checkout master.

Сделайте git reset --hard HEAD~1. (Это приведет вас к фиксации C)
Теперь сделайте a push -f (от главной ветки, это будет толкать C как последний фиксатор на master).

Это должно решить проблему.

Смежные вопросы