LINUX.ORG.RU

Новый коммит в github попал в старый pull

 


0

2

Я создал в github первый pull на основе коммитов. Он еще не утвержден. Потом хотел создать новый pull, отправил новый commit. Он попал в старый pull. Как мне отменить последний коммит из первого pull, чтобы создать на его основе второй pull?

Потом хотел создать новый pull, отправил новый commit. Он попал в старый pull.

Pull не является чем-то статичным и указывает на HEAD ветки.

Как мне отменить последний коммит из первого pull, чтобы создать на его основе второй pull?

Создать другой branch для другого pull'a, а первый бранч откатить.

iVS ★★★★★
()
Ответ на: комментарий от iVS

Спасибо! То есть мне нужно для каждого отдельного пула создавать новую ветку сначала? Как откатить первый бранч?

alexan0308
() автор топика
Ответ на: комментарий от alexan0308
git branch new_feature
# в бранче master
git reset --hard HEAD^
git push -f
iVS ★★★★★
()
Последнее исправление: iVS (всего исправлений: 1)
Ответ на: комментарий от alexan0308

А новую ветку создавать в git или githab?

Создавать новую ветку в git, сделать push на github, а потом при создании pull request указать ветку на github

iVS ★★★★★
()

На будущее: никогда не делай pull request с мастера (создавай отдельные ветки для каждого pull). Можешь посмотреть workflow популярных проектов, например rails, docker (обрати внимание на названия веток).

Если за время рассмотрения твоего pull код в upstream изменялся (следовательно, невозможен fast-forward merge), тебе нужно делать rebase относительно нового upstream/master (чтобы это не пришлось делать мейнтейнеру). Вот здесь более деталей.

mtk
()
Ответ на: комментарий от iVS

В новой ветке видны все коммиты

Я благополучно создал новую ветку, отправил новые коммиты. Зашел на github. Начал делать pull в новой ветке. Теперь кнопка create pull request доступна. Но там внизу видны все коммиты, в том числе старые, которые я отправил в первый pull. Я боюсь, что они все полезут во второй pull. Как мне отправить в pull только нужные коммиты? Или я что-то сделал не так, объединил может коммиты?

alexan0308
() автор топика
Ответ на: В новой ветке видны все коммиты от alexan0308

Нужно делать git rebase, поскольку опыта у тебя нет, то советую переключиться в новую ветку и потренироваться на ней

git checkout -b tmp
# <upstream> - это хеш последнего коммита в апстриме
# (т.е. в проекте, куда делаешь pull request)
git rebase --interactive <upstream>

Появится в твоем $EDITOR строчки с коммитами, которые будут применяться к дереву сверху вниз, емнип. из них удаляешь те коммиты, что относятся к первому pull request. Сохраняешь этот файл и в идеальном случае git сделает правильный rebase. Но чтобы изменения сохранились, их надо сохранить в новом бранче

git checkout -b new_tmp

iVS ★★★★★
()
Последнее исправление: iVS (всего исправлений: 1)
Ответ на: комментарий от iVS

Огромное спасибо! Не стал рисковать, удалил ранние коммиты из ветки: git branch new_feature # в бранче master git reset --hard HEAD^^ git reset --hard HEAD^^^ git reset --hard HEAD^^^^ git push -f

alexan0308
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.