From 60b62e370ee566010f88e65df3981125dc17be2d Mon Sep 17 00:00:00 2001 From: Spartan322 Date: Thu, 7 Sep 2023 16:06:30 -0400 Subject: Simplify README.md Add system-requirements.md Add using-git-bisect.md Add run-build-export.md Add cloning.md Add debugging.md Add rebasing.md Includes PR squashing Simplify .vscode/launch.json --- docs/contribution/rebasing.md | 66 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 docs/contribution/rebasing.md (limited to 'docs/contribution/rebasing.md') diff --git a/docs/contribution/rebasing.md b/docs/contribution/rebasing.md new file mode 100644 index 0000000..31d53bb --- /dev/null +++ b/docs/contribution/rebasing.md @@ -0,0 +1,66 @@ +# Rebasing + +If you have haven't read the quick intro to Git see [Cloning](cloning.md) first. + +Sometimes our workflow will request of you to rebase/squash commits in your PRs to keep the history clean. This will be a simple intro to what we mean by rebasing/squashing. + +First we will start with rebasing to the master branch: +```sh +git fetch origin +git rebase origin master +``` +There may be conflicts, if you use VSCode, it has extensions to assist with dealing with conflicts. If you need more help resolving merge conflicts you can always ask more senior developers. This should however be uncommon if you keep your branch up to date. + +## PR Squashing + +On your PR you will see a Commits tab: + +TODO: input Commits tab image + +In here you will see a list of commits you've made to your PR branch, count the amount of PR commits that are not merge commits. (if you have merge commits please contact senior developers as things can get messy if you continue here) Make sure you are on your branch, you can use `git checkout `. The number of regular commits in your repo you can then perform a rebase, so say you have 6 commits in your PR, you can squash them down to one by doing: +```sh +git rebase -i HEAD~6 +``` + +Now this will collect all commits from the HEAD (the current commit you're on) back 6 commits (including the HEAD) and rebase them into whatever you tell the dialogue. Now if you do this you might something like this in a text document or in your terminal: +```sh +pick 24a0751 Update README.md for Archlinux users +pick 0e408c8 Add Window Override + +# Rebase 5c739f1..0e408c8 onto 5c739f1 (2 commands) +# +# Commands: +# p, pick = use commit +# r, reword = use commit, but edit the commit message +# e, edit = use commit, but stop for amending +# s, squash = use commit, but meld into previous commit +# f, fixup [-C | -c] = like "squash" but keep only the previous +# commit's log message, unless -C is used, in which case +# keep only this commit's message; -c is same as -C but +# opens the editor +# x, exec = run command (the rest of the line) using shell +# b, break = stop here (continue rebase later with 'git rebase --continue') +# d, drop = remove commit +# l, label