Squashing фиксирует один коммит для запроса вытягивания битбакета
Я пытаюсь работать над версией git-потока, которую можно использовать для небольшой группы разработчиков для управления процессом разработки, большинство сотрудников - новички в git и bitbucket. У меня больше опыта с обоими, но я ни в коем случае не эксперт. Нам нужна единая фиксация для запросов извлечения для разработки в апстриме, и процесс, который я до сих пор разрабатывал, заключается в следующем:
Предполагая существующий форк репозитория из апстрима. Также обратите внимание, что я знаю, что некоторые из этих команд можно комбинировать, но я также сначала пытаюсь научить основам. Вот как это задокументировано (более или менее, я даже более многословен в реальной документации).
# checkout
$ git checkout develop
# update
$ git pull --rebase upstream develop
# Create topic branch
$ git branch <topic branch name>
# Checkout topic branch
$ git checkout <topic branch name>
Работай
# Add changes to index
$ git add --all .
# Commit changes
$ git commit # and provide commit comment
Подготовьтесь к запросу на извлечение, эта ветка создана, чтобы мы могли сохранить наши коммиты до того, как они были раздавлены, на случай, если запрос на отклонение отклонен или по какой-либо причине.
# Branch the topic branch for a pull request
$ git branch <topic branch>-pr
# Checkout the topic branch
$ git checkout <topic branch>-pr
# Rebase to squash commits
$ git rebase -i # Rebase and provide a commit message
# for all of the commits that are squashed
# Something like the following is shown
pick 1fc6c95 do something
pick 6b2481b do something else
pick dd1475d changed some things
pick c619268 fixing typos
# Change the word pick to squash for all but the first line, for example:
pick 1fc6c95 do something
squash 6b2481b do something else
squash dd1475d changed some things
squash c619268 fixing typos
-> Это в тот момент, когда у меня есть проблемы. Кажется, я не могу перейти к одному коммиту. В этой ветке всегда есть как минимум два коммита, я видел возможность использовать --root, но когда я делаю это, битбакет жалуется, что моя ветвь pull-запроса и ветвь восходящего потока не связаны, и я не могу выдать pull-запрос.
# Push branch to origin
$ git push origin <topic-branch>-pr
Я чувствую, что я так близок к рабочему процессу, поэтому любая помощь будет принята с благодарностью.
2 ответа
Вы делаете это правильно, оформить заказ: https://github.com/ginatrapani/todo.txt-android/wiki/Squash-All-Commits-Related-to-a-Single-Issue-into-a-Single-Commit
Чтобы раздавить до одного коммита - git rebase -i HEAD~4
чтобы перебазировать последние 4 коммита.
Кроме того, вы должны выполнить git-fetch или git-pull до извлечения, если это новая ветка. Нет никакой причины тянуть с ребазом до того, как какая-либо работа сделана, вы бы сделали ребаз только после того, как работа началась и были сделаны коммиты.
Это недавно стало доступно как функция "укажи и щелкни" в Bitbucket. Пока это доступно только в качестве подписки лаборатории. После его включения при объединении PR вы можете выбрать "Сквош" в качестве "Стратегии слияния".
Источник: https://bitbucket.org/repo/LboRq/images/2271370725-squash-merge.png