Сбросить мастер в пустое состояние

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

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

  1. Удалите фиксацию из мастера в Github (удаленно), поэтому мастер ПУСТОЙ
  2. создайте новую ветку из master и добавьте предыдущую фиксацию, которая была в master, в эту новую ветку.
  3. отправить его на Github.

person Noname    schedule 03.06.2019    source источник
comment
Я бы предложил начать с нуля, удалив репозиторий git (это поможет вам убрать git из папки без потери файлов) stackoverflow.com/questions/4754152/) и начать новый.   -  person AJFaraday    schedule 03.06.2019


Ответы (3)


Удалите фиксацию из мастера в 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>

отправить его на Github.

# force the update of the new branch
git push <origin> master -f
person CodeWizard    schedule 03.06.2019

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

git checkout -b branch_name

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

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

person Krupa Suthar    schedule 03.06.2019

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

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

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

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

person Code_Ninja    schedule 05.06.2019