мерзавец вишня выбрать из той же ветви - PullRequest
0 голосов
/ 24 июня 2019

Я использовал git около двух лет в колледже, и если я был полностью честен, у меня все еще нет понятия, что я делаю. Я не уверен, что мой заголовок точно описывает проблему, с которой я столкнулся, но в основном я сделал несколько коммитов в ветке master при разработке конкретной функции. Теперь, когда я заканчиваю разработку этой функции, я вспоминаю, что это была ужасная идея, поскольку теперь мне нужно зафиксировать и развернуть только последние пару коммитов. Поскольку эти более ранние коммиты все еще проверяются и ожидают одобрения, я не могу просто перенести все на свой сервер разработки. Я наткнулся на git cherry-pick, пытаясь выяснить это, но, по-видимому, это используется для извлечения определенных коммитов из другой ветви ... Я думаю ... Мой вопрос в том, что теперь я в этой привязке, Есть ли способ получить только последние 2 или 3 коммитов из главной ветки, не получая все изменения, которые я пока не хочу включать? Я читал некоторые другие посты на SO, однако я не уверен, что я понимаю ответы о том, как правильно собирать вишню, чтобы попробовать их, или если это будет уместно в этом случае.

Ответы [ 2 ]

2 голосов
/ 24 июня 2019

Похоже, у вас есть ветка с коммитами, которые вам не нужны, и позже коммиты, которые вы делаете, но не хотите удалять ветку:

master branch
A - B - C - D - E - F - G -H - I - J - K
             \                /     \ /
              Unwanted commits     Good commits

Вам нужна новая ветка.

git checkout -b new-branch

и вам нужно сбросить его до работы, которую вы не хотите.

git reset --hard <hash-of-commit-C> 

Теперь вы можете выбирать нужные коммиты с master.

git cherry-pick <hash-of-commit-J>
git cherry-pick <hash-of-commit-K>
1 голос
/ 24 июня 2019

Вы можете просто сделать это так:

git checkout new-branch origin/master # or use whatever branch/revision you think it's ok to start from
git cherry-pick old-branch~2..old-branch # cherry pick the last two revisions of old-branch

Если вам понравился результат, вы можете заменить свою ветку этим

git branch -f old-branch # set old-branch where I am right now
git checkout old-branch

И все готово.

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