Сброс мастера в пустое состояние - PullRequest
1 голос
/ 03 июня 2019

Я создал новое приложение Rails и отправил код на Github напрямую из master (первый коммит в хранилище).Однако я сделал ошибку, я не хотел фиксировать это новое приложение Rails напрямую от master, но вместо этого создал новую ветку из master и вытолкнул новое приложение Rails из этой новой ветви.

Поэтому я бы хотел:

  1. Удалить коммит из master в Github (удаленный), чтобы master был EMPTY
  2. создать новую ветвь из masterи добавьте предыдущий коммит, который был в master, в эту новую ветку.
  3. нажмите его на Github.

Ответы [ 3 ]

2 голосов
/ 04 июня 2019

Удалите фиксацию из мастера в Github (удаленно), так что мастером будет ПУСТОЙ

Вы можете создать сиротскую ветвь - сиротская ветвь - это ветвь без истории

# Create "clean" branch
git checkout --orphan <name>

# remove all existing content if you wish
git clean -Xdf && git clean -xdf

создайте новую ветку из master и добавьте в эту новую ветку предыдущий коммит, который был в master.

несколько параметров:

# Option 1 - Start your branch from the last desired commit
git checkout -b <name> <SHA-1> 

# Option 2 - Set your branch to the desired commit 
git reset <SHA-1> --hard

# Add the required commit on top of your branch
git cherry-pick <SHA-1>

подтолкни его к Гитхубу.

# force the update of the new branch
git push <origin> master -f
1 голос
/ 05 июня 2019

Вы также можете попробовать следующие шаги с вашим хранилищем:

  1. git checkout master: убедитесь, что вы в мастере.
  2. git checkout -b my-fancy-new-branch: создайте новую ветвь функций.
  3. git checkout master: переключиться обратно на мастер
  4. git reset --hard rootcommit: сброс мастера в состояние до того, как ваши собственные коммиты.
  5. необязательно, и если у вас есть пульт дистанционного управления, с которого вы извлекаете: git pull --ff (если это не удастся из-за того, что вы не выполняете ускоренную перемотку вперед, вам придется пересмотреть rootcommit. В нем содержится часть вашей работы)

Я пытался сделать это в моем тестовом репозитории, похоже, он работает.

Я взял ссылку из этого ответа , которая также может помочь в поиске других подходов.

1 голос
/ 03 июня 2019

Пожалуйста, создайте новую ветку от мастера с помощью следующей команды,

git checkout -b branch_name

После этого извлеките в свою новую ветку и отправьте ее на Github.

Теперь перейдите в ветку мастераи удалите последний коммит и отправьте его на Github

...