3 ответов:
Это почти сработает.
при нажатии на ветку не по умолчанию, вам нужно указать исходный ref и целевой ref:
git push origin branch1:branch2или
git push <remote> <branch with new changes>:<branch you are pushing to>
конечно, хотя это будет работать только если это быстрая перемотка вперед BRANCH2 или если вы заставите его. Правильный синтаксис для этого -
git push <remote> <source branch>:<dest branch>см. Описание "refspec" на git push man page для более подробной информации о том, как это работает. Также обратите внимание, что как принудительный толчок, так и сброс-это операции, которые "переписывают историю", и не должны предприниматься слабонервными, если вы абсолютно не уверены, что знаете, что делаете по отношению к любому удаленному репозитории и другие люди, у которых есть вилки/клоны одного и того же проекта.
в моем случае у меня был один локальный коммит, который не толкнул
origin\master, но перешел на мой местныйmasterфилиала. Эта локальная фиксация теперь должна быть перенесена в другую ветвь.С Git Extensions вы можете сделать что-то вроде этого:
- (создать, если не существует и) проверка новой ветви, где вы хотите нажать фиксацию.
- выберите фиксацию из истории, которая должна быть совершена и нажата на это отделение.
- щелкните правой кнопкой мыши и выберите Cherry pick commit.
- нажмите сливки кнопка после этого.
- выбранная фиксация get применяется к вашей извлеченной ветке. Теперь зафиксируйте и нажмите на нее.
- проверьте свою старую ветку, с неисправной фиксацией.
- жесткий сброс этой ветви до Второго последнего фиксации, где все было в порядке (имейте в виду, что вы здесь делаете!). Вы можете сделать это с помощью правой кнопки мыши вторая последняя фиксация и выберите сбросить текущую ветку сюда. Подтвердите угнетение, если вы знаете, что делаете.
вы также можете сделать это на командная строка GIT. Пример скопирован из Дэвид Кристенсен:
Я думаю, вы найдете
git cherry-pick+git resetзначительно более быстрый рабочий процесс:используя тот же сценарий, с "функцией", являющейся ветвью с этот самый верхний коммит неверен, было бы намного проще сделать это:
git checkout mastergit cherry-pick featuregit checkout featuregit reset --hard HEAD^сохраняет совсем немного работы, и это сценарий, который
git cherry-pickбыл разработан для обработки.Я также отмечу, что это будет работать, а если это не самый верхний commit; вам просто нужен commitish для аргумента, чтобы выбрать вишню, через:
git checkout mastergit cherry-pick $sha1git checkout featuregit rebase -i ... # whack the specific commit from the history
Comments