Подтвердить что ты не робот

Как переносить новую (переписанную) историю в удаленный репозиторий

В принципе, у меня есть запрос open pull, который я хочу исправить, и в то же время я хочу сделать 1 commit, который содержит 2 функции, в 2 отдельных фиксации.

Репозиторий Github теперь выглядит так, где fix - новая ветка:

master c-c-c
            \
     fix c-c-c-c

Я создал запрос на извлечение из исправления.

Я хотел изменить последнее фиксацию в fix на 2 коммита в моем локальном репозитории следующим образом:

master c-c-c
            \
     fix c-c-c-n-n

где n-n - мои 2 новые коммиты.

Чтобы добраться до этой точки локально, я сделал следующее:

1. git rebase -i HEAD~2
2. Changed my last commit line to "edit", saved and closed the file
3. git reset HEAD^
4. git stash save
5. Removed the changes I don't want in the first commit
6. git commit -m "commit a" -a
7. git stash apply
8. git commit -m "commit b"

Итак, теперь у меня есть 2 коммита, как я хочу. Проблема в том, что я обнаружил ошибку, которая попала в запрос pull. Поскольку я уже нажал на удаленный репозиторий, он не примет мои новые коммиты (поскольку исходный текст отсутствует).

Я запускаю:

git push origin fix --dry-run

и я получаю сообщение:

To [email protected]:<UserName>/<Repository>.git
! [rejected]        fix -> fix (non-fast-forward)
error: failed to push some refs to '[email protected]:<UserName>/<Repository>.git'

Я видел, что другие сообщения предполагают вытащить мои изменения из источника, прежде чем снова вернуться, но не будет ли это в основном reset мой 2 задерживается в одном?

В идеале то, что я хотел бы сделать, это назначить один и тот же идентификатор фиксации последнему фиксации, чтобы он мог заменить текущий, как есть. Есть ли способ сделать это? (Обратите внимание, что я не запускал git reset с --hard)

4b9b3361

Ответ 1

Когда мы столкнулись с этой проблемой, для меня работал сильный толчок:

git push --force origin fix