git переписать историю (перебазировать старую ветку?)
Я пытаюсь переписать свою историю в git-хранилище с небольшим успехом. Я пытался использовать перебазирование, чтобы избавиться от огромного файла в каждом коммите, и я, должно быть, сделал что-то не так, потому что я закончил с этой странной историей формы.
* 0758bb3 - (HEAD -> master, origin/master, origin/HEAD)
|\
| * 1ff4a51
| * f33555f
(... a bunch of commits in the right-hand-size branch only)
| * af4b7bf
| * a9bf8d0
| * f22fae8
* | 68bd9eb
* | 2e29133
|/
* fbef4bf
Я хотел бы преобразовать это в:
* 0758bb3 - (HEAD -> master, origin/master, origin/HEAD)
* 1ff4a51
* f33555f
(...)
* af4b7bf
* a9bf8d0
* f22fae8
* 68bd9eb
* 2e29133
* fbef4bf
Я думаю, что способ сделать это должен выглядеть примерно так
git checkout f22fae8
git rebase 68bd9eb
???
git push --force origin master
Но учитывая то, как мало я понимаю о "перебазировании" прямо сейчас, я не смог понять существующую информацию, чтобы сделать именно это. Я извиняюсь, если где-то уже был дан ответ на вопрос, я не нашел его (вероятно, потому что я не вижу, какие слова следует использовать для описания этого сценария:/). Большое спасибо всем, кто мог бы помочь мне с этим:)
1 ответ
Я понятия не имею, что вы пытаетесь сделать выше. если вы объединяете ветку и она выглядит так, как указано выше, то у вас уже есть то, что вы ищете. Но если вы хотите, чтобы с помощью rebase он выглядел по-другому, то у вас будут совершенно другие коммиты. Если вы делаете ребазинг, то вы в основном создаете новые коммиты, которые идентичны коммитам, которые существовали ранее. Тогда история коммитов не будет выглядеть одинаково. Вот пример, который преобразует вышеуказанную структуру в то, что вы ищете, но с новыми коммитами.
// First set up another branch where you can safely rebase
git checkout fbef4bf
git checkout -b rebase-point
// now switch to the place you want to rebase from:
git checkout master
git rebase rebase-point
// if satisfied, set the master branch to point to the 0758bb3 commit equivalent (remember we are rebasing so it won't be the same commit).
git reset --hard rebase-point