В принципе, у меня есть запрос 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
)