Git нажать на неправильную ветку
Работая с git, после некоторых "commit" и нескольких "push", я понял, что использую неправильную ветку!
Теперь мне нужно каким-то образом удалить мои изменения в wrong_branch
и зафиксировать и нажать изменения в right_branch
Какой лучший (и простой) способ сделать это?
Благодарю вас
Ответы
Ответ 1
переключитесь на эту ветвь, проверьте, что теги git log
и git revert
совершают индивидуально. Как только вы это сделаете, вернитесь к нужной ветке, и затем вы можете использовать git cherry-pick
для выбора определенных коммитов из ссылок git и слить их в нужную ветку.
git checkout wrong_branch
git revert commitsha1
git revert commitsha2
git checkout right_branch
git cherry-pick commitsha1
git cherry-pick commitsha2
Если коммиты группируются вместе, и после ваших грязных коммитов не происходит коммитов, вы можете даже использовать git reset
, чтобы получить эту неправильную ветвь до состояния непосредственно перед вашими фиксациями, а затем повторить это с помощью git cherry-pick
, чтобы получить ваша фиксация в правильной ветке.
git checkout wrong_branch
git reset commitsha3 #commit just before commitsha2
git checkout right_branch
git cherry-pick commitsha1
git cherry-pick commitsha2
Ответ 2
Самый простой способ - использовать git rebase
. Предположим, что у вас есть этот параметр:
A -- B -- C -- C1 -- C2 # right branch
\
\-- D -- C3 -- C4 # wrong branch
Вы хотите переместить изменения C3, C4 в правую ветвь.
git checkout -b new_wrong_branch D
git checkout wrong_branch
git rebase D --onto right_branch
git checkout right_branch
git merge right_branch wrong_branch
git branch -d wrong_branch
git branch rename new_wrong_branch wrong_branch
Теперь настройка
A -- B -- C -- C1 -- C2 -- C3 -- C4 # right_branch
\
\ -- D # wrong_branch
Затем вам нужно принудительно нажимать свои результаты (если никто еще не синхронизировался с вашим удаленным репо):
git push -f remote:right_branch
Ответ 3
Немного добавления ярлыка к ответу Dhruva
git checkout wrong_branch
git revert commitsha1
git checkout right_branch
git push right_branch
git checkout wrong_branch
git reset commitsha2 #commit just before commitsha1
git push wrong_branch -f