git - перемещает конкретные коммиты из разработки в ветку Feature - PullRequest
0 голосов
/ 07 июня 2018

Итак, в нашем git-репозитории были сделаны некоторые коммиты (не самые последние коммиты сейчас) в нашей ветке разработки, которая должна была быть в ветке функций.Ветвь, которой они должны быть, была сделана дальше по линии.В конечном итоге коммиты были предназначены для функциональности, которая еще не завершена, поэтому теперь нам действительно нужно убрать их из ветви разработки, чтобы мы могли вернуться к действующей ветви разработки.

Есть ли способчто я могу переместить конкретные коммиты из ветки Develop в начало ветки Feature?Не на 100% знаком с git, поэтому, если вам нужна дополнительная информация, пожалуйста, спросите.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Во-первых, обычный отказ от ответственности: то, что вы хотите сделать (т.е. удалить коммиты из ветки), означает переписывание истории , поэтому будьте осторожны.

Предположим, что ваша история выглядит примерно так:

A--B--C--D--E develop
         \
          F--G feature

И вы хотите "переместить" 1 коммиты B и C из develop в feature, вы можете сделать это с помощью rebase --onto команда:

git checkout develop
git rebase --onto feature A C
# This will apply commits B and C on top of the commit referenced by "feature"

Теперь ваша история будет выглядеть так:

A--B--C--D--E develop
         \
          F--G--B'--C' feature

Обратите внимание, что B' и C' (читается " Bпростые"и" C простые") являются новыми коммитами , которые содержат те же изменения, что и B и C, но имеют разные идентификаторы фиксации, поскольку у них разные родители.

В этот момент вы можете удалить B и C из ветви develop, сказав:

git rebase --onto A C
# This means rebase the current branch on top of commit A instead of C

, что приведет к фиксации B и C noбольше достижимости в develop:

A--D'--E' develop
A--B--C--D
         \
          F--G--B'--C' feature

Однако у вас все еще есть feature, основанный на старом коммите D, который теперь переписывается как D'.Чтобы решить эту проблему, вам нужно еще раз перебросить feature поверх нового D':

git checkout feature
git rebase --onto D' D

Наконец получится:

A--D'--E' develop
    \
     F--G--B'--C' feature

, что, вероятно, то, что выwanted.


1) См. @ WilliamPursell s комментарий о том, что означает "перемещать" коммиты в Git.

0 голосов
/ 07 июня 2018

Попробуйте вишневый кирку.С помощью cherry pick вы можете получить выбранные коммиты другой ветви в текущую ветку.

https://git -scm.com / docs / git-cherry-pick

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...