Рассмотрим следующие шаги:разъяснения по мерзавца вернуться и перебазироваться
git init
touch foo.txt
git add .
git commit -m 'initial commit'
Теперь мы создадим новую ветку и добавить файл с именем foo2.txt:
git checkout -b new_branch
touch foo2.txt
git add .
git commit -m 'added foo2.txt'
Теперь мы вернитесь к главной ветке и верните начальную фиксацию, которую мы сделали (обратите внимание: вы можете узнать хеш фиксации «initial commit» с помощью команды git log).
git checkout master
git revert <commit hash of initial commit>
На данный момент у нас нет ни foo.txt, ни foo2.txt в главной ветке. Теперь, давайте объединить new_branch освоить
git merge new_branch
На данный момент, foo2.txt теперь объединены в мастера, но foo.txt не существует.
Итак, вопрос в том, как мне вернуть foo.txt в мастер? Я пробовал сделать это:
git rebase new_branch
Но это не возвращает его. Итак, в общем случае, если мы вернем фиксацию на master, тогда нам нужно объединить другую ветку назад к master, как бы мы вынудили ее перенести все «отсутствующие» файлы (foo.txt в этом примере)?
Единственным обходным решением, которое я нашел, было довольно радикально, было удаление мастера и переименование new_branch для освоения.
Можете ли вы прояснить, как это сделать: «так что вам нужно сбросить мастер на этот новый HEAD», может быть, с примером? – dcp
@ dcp 'git branch -D master, git branch master' или записать текущий SHAD1 HEAD и' git checkout master, git reset --hard'. –
ElpieKay
Благодарим вас за полезную информацию и показываем различные способы сделать это в git, действительно хороший ответ. – dcp