Сквош фиксирует весь путь до начальных листьев 2 коммитов - PullRequest
1 голос
/ 21 мая 2019

Я учу мерзавца и пробую сквош. Я бы хотел раздавить все коммиты на мастере и остаться только с начальным. Например, моя история коммитов выглядит так:

2c825e339b60702b7b48c2ea022e473341d89a7d (HEAD -> master) another edit
f676a10db6a0cfe3cebb8f84aad971b481483181 second file
dc55b957a94bc4a3d6c1b6d8c134407aa4c8316c initial

После этого я побежал git rebase -i dc55b957a94bc4a3d6c1b6d8c134407aa4c8316c

Обычный способ, описанный во всей сети, состоит в замене каждого pick на squash, но первый. После этого я получаю эту историю коммитов:

2067070140c38f8ecf5f70894e6267bfee614d85 (HEAD -> master) second file dc55b957a94bc4a3d6c1b6d8c134407aa4c8316c initial

Почему squash не работал до первоначального коммита?

Более того, если я снова запускаю ту же команду сквоша, в интерактивном окне будет только 1 pick statement. Изменение на squash вызывает ошибку, а оставление на pick ничего не делает. Я нашел

git reset --soft HEAD~1
git commit -m "1.0.0"

чтобы быть эффективным способом подавления только 2 коммитов. Как именно я могу использовать git rebase --squash для достижения того же результата?

Ответы [ 2 ]

1 голос
/ 22 мая 2019

Вы должны были сделать git reset --soft HEAD~2, а затем сделать git commit --amend -m 1.0.0

1 голос
/ 21 мая 2019

Коммит, указанный вами в команде rebase, является parent первого коммита, который вы хотите изменить или переместить.Это сложно для первого коммита хранилища, так как у него нет родителей.Вместо этого вы можете использовать опцию --root:

git rebase -i --root

Это даст вам все коммиты.

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