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

Другие вопросы по тегам