Git, отредактируйте root commit для всех веток - PullRequest
2 голосов
/ 20 августа 2009

Мне нужно переписать историю моего хранилища, потому что оно содержит некоторые учетные данные. Поскольку я должен изменить корневой коммит, я следовал инструкциям Git Faq :

git rebase -i позволяет вам удобно редактировать любые предыдущие коммиты, кроме корневого. Следующие команды показывают, как это сделать вручную.

# tag the old root
git tag root `git rev-list HEAD | tail -1`
git checkout -b new-root root
# edit...
git commit --amend

# check out the previous branch
git checkout @{-1}
# replace old root with amended version
git rebase --onto new-root root

# cleanup
git branch -d new-root
git tag -d root

Моя проблема в том, что у меня есть две ветви и несколько тегов в репозитории, и я бы хотел, чтобы моя история переписывалась так же. Репо еще не публично, так что это не будет проблемой. Я задавал подобный вопрос ранее, но в этом случае команда git rebase не использовалась. Вот базовый график моего репо:

+  master branch
|
|   + topic branch
|   |
|   |
+---+
|
|
|
+  TAG
|
+  Initial commit, the commit I'd like to amend for all branches

Это вообще возможно?

1 Ответ

6 голосов
/ 20 августа 2009

Используйте " git filter-branch " вместо git-rebase.

Если вы действительно, действительно чувствуете, что rebase лучше, с современным git вы можете использовать опцию --root для git-rebase. Или вишневый выбор корневого коммита, а затем перебазируйте его поверх него, если у вас более старый git, у которого нет этой опции.

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