GIT - изменение кода в более раннем коммите, чтобы он отражался в коммитах после - PullRequest
2 голосов
/ 12 ноября 2011

Итак, я сейчас создаю сайт с HTML5, и я вполне понимаю, что я забыл вставить сброс HTML5 в мой файл CSS.

В настоящее время яоколо 10 коммитов, и я хотел бы добавить код сброса в файл css в мой самый первый коммит и представить его в остальных коммитах после.

Я немного перечитали я думаю, что git rebase - это то, что нужно, но я не совсем уверен, как правильно его использовать.

Этот вопрос SO , кажется, близок к тому, что я хочу сделать, но я нехорошо разбираюсь в Git, пока не адаптирую это.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 12 ноября 2011

Оформить заказ git rebase -i, где -i означает "интерактивный".Там вы можете «сквош» коммитов вместе.

1 голос
/ 12 ноября 2011

Попробуйте это:

1) Проверьте прошлый коммит, который вы хотите изменить с помощью git checkout.

2) Пометить этот последний коммит, используя git tag PastCommit.

3) Используйте git checkout -b FixBranch для создания новой ветви с именем FixBranch.

4) Добавьте новый файл и сделайте новый коммит на FixBranch.

5) Переключитесь на основную ветку, используя git checkout master.

6) Пометьте тегом git tag BACKUP на случай, если вы что-то напортачили - просто чтобы быть в безопасности перед ребазом:)

7) Использовать git rebase --onto FixBranch PastCommit - это переместит материал между PastCommit и головой мастера на FixBranch.

8) Уберите, используя git tag -d PastCommit, git tag -d BACKUP и git branch -d FixBranch.

9) Используйте git gc, чтобы собрать мусор и избавиться от любых висячих коммитов.

Обратите внимание, что вы можете (и должны!) Визуализировать все это в gitk, чтобы вы могли видеть, что вы делаете (и быть уверенным, что я ничего не пропустил - это немного выше моей головы) ).

Приложение: Я только что попробовал это на тестовом репозитории, и он отлично работает.

...