Вот мой сценарий. Я работаю против ветви A. Я объединил ветвь признаков локально из ветки B в ветвь A. После этого я сделал несколько изменений на ветке A и сделал фиксацию Y. Я заметил, что слияние вызвало проблемы, и мне нужно отмените это слияние и оставьте только фиксацию Y. Я не перешел из локальной в удаленную ветку. Все изменения находятся на исходящих записях. Как я могу это сделать, не потеряв работу, выполняемую при совершении Y, а просто нажав на нее? благодаряИзбавиться от конкретных локальных коммитов с git
BTW: Я использую Source Tree (я знаю, что, возможно, это будет командная строка, но если кто-нибудь знает, как сделать это с помощью дерева исходного кода, который был бы удивительным)
Это правильный ответ (используйте 'git rebase -i'), но вам не нужно явно удалять комманду слияния, потому что' git rebase -i' сделает это за вас: по умолчанию для rebase следует отказаться сливается. Использование 'git rebase -p' пытается сохранить слияния (на самом деле нужно * воссоздать * их, что имеет некоторые незначительные опасности), но вообще неразумно сочетать это с' git rebase -i' в любом случае. – torek
Я поместил это как отдельный комментарий, потому что это отдельная идея: вместо того, чтобы нажимать на другой репозиторий, если вы немного нервничаете, проще создать новое название ветки, чтобы сохранить текущую цепочку фиксации. Просто запустите 'git branch saveme' перед запуском' git rebase -i'. Когда ваша rebase закончится, ветка 'saveme' будет иметь ваши оригинальные (pre-rebase) коммиты, и ваша текущая ветка будет иметь ваши новые (после rebase) копии. Если все хорошо, вы можете «git branch -D saveme» перебросить сохраненные оригиналы. (Фактически, rebase сохраняет ваши оригиналы для вас под специальным именем 'ORIG_HEAD'.) – torek