В принципе, у меня есть запрос на открытый pull, который я хочу исправить, и в то же время я хочу сделать 1 фиксацию, которая содержит 2 функции в 2 отдельных фиксации.Как переместить новую (переписанную) историю в удаленный репозиторий
Github репозиторий теперь выглядит следующим образом, где затруднительное новая отрасль:
master c-c-c
\
fix c-c-c-c
Я создал запрос тянуть из затруднительного.
Я хотел изменить последнее коммят в исправлении в 2 фиксаций в моем локальном хранилище следующим образом:
master c-c-c
\
fix c-c-c-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'
Я видел другие сообщения предлагают тянуть мои изменения от происхождения, прежде чем отодвигая еще раз, но не то, что в основном сбросить мои 2 комманды обратно в один?
В идеале, мне бы хотелось назначить один и тот же идентификатор фиксации последнему фиксации, чтобы он мог заменить текущий. Есть ли способ сделать это? (Обратите внимание, что я не бежал git reset
с --hard
)
Это работало как шарм. В случае, если кто-то читает это и задается вопросом, что случилось с моим запросом на тягу, он просто заменил 1 фиксацию на 2. Я добавил комментарий в Github владельцу проекта, чтобы сообщить ему, чтобы он получил его, если он уже это сделал. – NightOwl888
Итак, чтобы уточнить: правильно ли, если владелец проекта уже слился в запрос на растяжение, после чего я делаю «git push -force fix fix», тогда «git fetch» с конца проекта будет тянуть исправить? – PonyEars
Владелец проекта должен выполнить сброс, если изменения уже были вытащены, поскольку фиксация все еще будет существовать в его ветке. 'git fetch origin', затем' git reset --hard origin/master'. См. Http://stackoverflow.com/questions/1628088/how-to-reset-my-local-repository-to-be-just-like-the-remote-repository-head – NightOwl888