В Git, как мне создать коммит перед самым старым коммитом? - PullRequest
4 голосов
/ 17 июня 2011

У меня есть Git-репозиторий, чей самый старый коммит - версия 6.8.2 (он помечен как v6.8.2).У меня есть версия 6.8.1 пакета, который я хотел бы зафиксировать в хранилище как родительский коммит самого старого коммита.Это возможно?Если да, то как?

1 Ответ

4 голосов
/ 17 июня 2011

Вы можете перебазировать вашу текущую ветку поверх самого старого коммита, который вы хотите (v6.8.1). Это переписает вашу историю, хотя, но это возможно.

Отредактировано, чтобы добавить больше

Предположим, ваш код находится в ветке master

Очистить существующий код и создать новую ветвь. Ваш старый код не потерян - он все еще существует в основной ветке.

git symbolic-ref HEAD refs/heads/newbase
rm .git/index
git clean -dxf

Теперь вы находитесь на ветке newbase, которая является пустой директорией. Добавьте сюда файлы, которые вы хотите использовать в качестве новой базы.

<add the files to the directory>
git add .
git commit -a -m "New base commit v6.8.1"

Новое, у вас есть две ветви master с вашим исходным кодом и newbase с вашей новой базой.

Теперь извлеките ветку master и перебазируйте ее на ветку newbase

git checkout master
git rebase newbase

И затем все, что вам нужно сделать, это исправить конфликты, и у вас есть новая ветка master, которая начинается с более раннего состояния кода.

Хотя все это немного беспорядок. Если вы просто хотите добавить код в хранилище, просто сделайте первый бит, который создаст новую ветвь. Пометьте его так, чтобы вы знали, что это такое, нет необходимости перебрасывать на него ветку master, потому что, если вы доберетесь до базы мастера и захотите пойти дальше во времени - вы можете просто увидеть, что находится в другая ветвь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...