Фон:
У меня есть ветвь признаков A, которая является одной фиксацией впереди моей ветки разработки:
3 (develop, origin/develop)
| 2 (A, origin/A) some feature branch commit
|/
1 some commit
Затем я переустанавливаю A на develop (git checkout A
, git rebase develop
), поэтому я получаю:
2' (A) some feature branch commit
|
3 (develop, origin/develop)
| 2 (origin/A) some feature branch commit
|/
1 some commit
Теперь я больше не могу нажимать A
на origin
, так как Git отклонит непродолжительное форвардное коммит. Он говорит мне, что сначала удаляю удаленные изменения.
Когда я это сделаю, а затем нажмите, я получаю следующую историю:
4 (A, origin/A) merged origin/A into A
|\
2'| some feature branch commit
| |
3 | (develop, origin/develop)
| 2 (origin/A) some feature branch commit
|/
1 some commit
Я заканчиваю историю, содержащую бит 2
дважды - технически разные коммиты, хотя они делают то же самое.
Вопросы
- Как я могу предотвратить это? Как я могу зеркалировать свою локальную операцию переадресации на удаленном репо?
- Как я могу исправить эту ситуацию? Какой будет самый элегантный способ очистить историю и показать только одну фиксацию?