Нажимаем коммитов в другую ветку



можно ли commit и push изменения из одной ветки в другую.



предположим, что я совершил изменения в branch1, равная и хочу подтолкнуть их к BRANCH2.



С branch1, равная, это действительно сделать:



git push origin **BRANCH2**


и затем сбросить branch1, равная?

370   3  
git

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 master
git cherry-pick feature
git checkout feature
git reset --hard HEAD^

сохраняет совсем немного работы, и это сценарий, который git cherry-pick был разработан для обработки.

Я также отмечу, что это будет работать, а если это не самый верхний commit; вам просто нужен commitish для аргумента, чтобы выбрать вишню, через:

git checkout master
git cherry-pick $sha1
git checkout feature
git rebase -i ... # whack the specific commit from the history

Comments

    Ничего не найдено.