Можно ли зафиксировать и перенести изменения из одной ветви в другую.
Предположим, я зафиксировал изменения в BRANCH1 и хочу перенести их в BRANCH2 .
С BRANCH1 , действительно ли это сделать:
git push origin **BRANCH2**
А потом сбросить BRANCH1?
git
git-branch
jviotti
источник
источник
branch1
и другоеbranch2
на пульте? Что если вы хотите перейти с локальногоbranch1
на удаленныйorigin branch2
?<remote>/<branch>
git push origin :branch2
виду, что любой соблазн (как и я) запускается, думая, что он просто подтолкнет текущую локальную ветвь к удаленномуbranch2
, а вместо этого удалит удаленныйbranch2
! Правильный путь естьgit push origin HEAD:branch2
.Конечно, хотя это будет работать только в том случае, если это быстрый переход BRANCH2 или если вы форсируете его. Правильный синтаксис для такой вещи
Смотрите описание "refspec" на странице руководства git push для более подробной информации о том, как это работает. Также обратите внимание, что принудительное нажатие и сброс являются операциями, которые «переписывают историю», и их не следует делать слабым сердцем, если вы не абсолютно уверены, что знаете, что делаете в отношении любых удаленных репозиториев и других люди, у которых есть вилки / клоны одного и того же проекта.
источник
git push --force remote local-branch:remote-branch
.Это очень просто Предположим, что вы внесли изменения в свой филиал A, который находится как в локальном, так и в удаленном месте, но вы хотите перенести эти изменения в филиал B, который нигде не существует.
Шаг-01: создать и переключиться на новую ветку B
Шаг 02: добавьте изменения в новую локальную ветку
Шаг 03: зафиксируйте изменения
Шаг 04: Нажмите изменения в новой ветви B . Приведенная ниже команда создаст новую ветку B, а также удаленно
Теперь вы можете проверить из BitBucket , что ветвь B будет иметь один более чем совершать ветви А . И когда вы извлекаете филиальную А эти изменения не будут там , как они были вытеснены в ветви B .
Примечание. Если вы зафиксировали свои изменения в ветви A и после этого хотите перенести эти изменения в новую ветку B, вам придется сначала сбросить эти изменения. #HappyLearning
источник
В моем случае у меня был один локальный коммит, который не был передан
origin\master
, но передан в мой локальныйmaster
филиал. Этот локальный коммит теперь должен быть перенесен в другую ветку.С Git Extensions вы можете сделать что-то вроде этого:
Вы также можете сделать это в командной строке GIT . Пример скопирован с Дэвида Кристенсена :
источник
Я получил плохой результат с
git push origin branch1:branch2
командой:В моем случае
branch2
удаляется иbranch1
был обновлен с некоторыми новыми изменениями.Следовательно, если вы хотите, чтобы изменения были только
branch2
отbranch1
, попробуйте следующие процедуры:branch1
:git add .
branch1
:git commit -m 'comments'
На
branch1
:git push origin branch1
На
branch2
:git pull origin branch1
On
branch1
: вернуться к предыдущему коммиту.источник
ты можешь сделать это легко
источник
источник
Вы взяли на себя обязательство BRANCH1 и хотите избавиться от этого коммита, не теряя изменений? Git Reset - это то, что вам нужно. Делать:
если вы хотите, чтобы BRANCH2 была новой веткой. Вы также можете объединить это в конце с другой веткой, если хотите. Если BRANCH2 уже существует, оставьте этот шаг.
Затем сделайте:
если вы хотите сбросить коммит на ветке, которую вы зафиксировали. Это принимает изменения последних трех коммитов.
Затем выполните следующие действия, чтобы перенести сброшенные коммиты в BRANCH2.
Этот источник был полезен: https://git-scm.com/docs/git-reset#git-reset-Undoacommitmakingitatopicbranch
источник