[{TableOfContents}]

This is for keeping your branch up to date and always having a PR / MR with only one commit.  It is helpful if you use Oh-My-Zsh.

!!! Squashing Your Branch

!! Checkout your branch

{{{
omz> gco $branch_name
zsh> git checkout $branch_name
}}}

!! Rebase your branch from HEAD

{{$number_of_commits}} is displayed in GitLab at the top, where it says 

Overview: X, Commits: Y, Pipelines: Z, ...

The number you want is Y.

{{{
omz> grbi HEAD~5
zsh> git rebase -i HEAD~$number_of_commits
}}}

!! Force push your branch

{{{
omz> ggfl
zsh> git push --force-with-lease origin $current_branch
}}}

!!! Update From Master

Time passes, commits get merged to master. You need to update your branch.

!! Checkout master 

{{{
omz> gcm
zsh> git checkout master
}}}

!! Pull

{{{
omz> gl
zsh> git pull
}}}

!! Checkout branch 

{{{
omz> gco $branch_name
zsh> git checkout $branch_name
}}}

!! Rebase from master 

{{{
omz> grbm
zsh> git rebase master
}}}

Handle conflicts, test, etc.

!! Force push

Force push {{$current_branch}} to remote.

{{{
omz> ggfl
zsh> git push --force-with-lease origin $current_branch
}}}

!!! Push to Master

Checkout master, merge feature branch into master, push master

!! Checkout master

{{{
omz> gcm
zsh> git checkout master
}}}

!! Merge feature branch into master

{{{
omz> gm $feature_branch
zsh> git merge $feature_branch
}}}

!! Push master

{{{
omz> ggp
zsh> git push origin master
}}}

----
[CategoryComputing.SCM.Git]