Skip to content

Instantly share code, notes, and snippets.

@kunik
Last active June 27, 2018 15:16
Show Gist options
  • Save kunik/22bac342dec37c99fc64 to your computer and use it in GitHub Desktop.
Save kunik/22bac342dec37c99fc64 to your computer and use it in GitHub Desktop.
Як ми сквошимо коміти в один?

Переходимо в master і витягуємо останні зміни

git checkout master
git pull

На основі master створюємо новий тимчасовий бранч

git checkout -b temp_branch

Мерджимо в нього зміни з feature branch

git merge --squash <feature branch name>

--squash бере всі зміни з бранча і готує до коміту, але не комітить

Можна перевірити, чи всі зміни пішли туди куди потрібно :)

git status
git diff --cached

Потім комітимо зміни. Пишемо нормальний коміт месидж

git commit 

Тепер потрібно переписати зміни в feature branch. Ми переходимо в нього і підміняємо коміти з тимчасового бранча

git checkout <feature branch name>
git reset --hard temp_branch

Тепер пушаємо бранч з опцією force для того щоб перетерти зміни на сервері. Це небезпечна штука, вона перетирає історію, тому перш ніж виконувати її бажано перевірити що буде пушатися

git push -n

В результаті має бути щось типу

To [email protected]:xmarket/xmarket-provisioning.git
 ! [rejected]        feature_branch -> feature_branch (non-fast-forward)
error: failed to push some refs to '[email protected]:xmarket/xmarket-provisioning.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Бачимо, що пушається тільки feature_branch, тому можемо продовжувати

git push -f 

І видаляємо тимчасовий бранч

git branch -d temp_branch
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment