Git Cheat Sheet
Init new GIT Repo on the git server
Setup a repo folder on the server
cd to the git repo location, log in as git and create a folder for the new git project repository
cd /srv/git
su git
mkdir <project>.git
Init the repo on the server
cd into the <project>.git folder
cd <project>.git
git init --bare
Setup the repo on your dev box
cd to a place of your choice and clone your new project repo:
cd <project repo location>
git clone <user>@<git server>:/srv/git/<project>.git
Checkout the desird branch:
git checkout main
Local GIT Repos
Github
Create pull requests
Signing commits using GPG
How do I squash my last N commits together?
Reset the current branch to the commit just before the last 3:
git reset --hard HEAD~3
HEAD@{1} is where the branch was just before the previous command. This command sets the state of the index to be as it would just after a merge from that commit:
git merge --squash HEAD@{1}
Commit those squashed changes. The commit message will be helpfully prepopulated with the commit messages of all the squashed commits:
git commit
Finnaly, push the changes upstream:
git push
or if you squashed remote commits
git push origin HEAD --force
git push <branch> HEAD --force
How to delete commits from remote
If the commits you want to remove are placed at the top of your commit history, use the git reset --hard command with the HEAD object and the number of commits you want to remove.
git reset --hard HEAD~3
To delete commits from remote, you will need to push your local changes to the remote using the git push command.
git push origin HEAD --force
How do I update a GitHub forked repository?
Add the remote, call it "upstream":
git remote add upstream https://github.com/whoever/whatever.git
Fetch all the branches of that remote into remote-tracking branches
git fetch upstream
Make sure that you're on your master branch:
git checkout master
Rewrite your master branch so that any commits of yours that aren't already in upstream/master are replayed on top of that other branch:
git rebase upstream/master
If you don't want to rewrite the history of your master branch, (for example because other people may have cloned it) then you should replace the last command with git merge upstream/master. However, for making further pull requests that are as clean as possible, it's probably better to rebase.
If you've rebased your branch onto upstream/master you may need to force the push in order to push it to your own forked repository on GitHub. You'd do that with:
git push -f origin master
tweaks
how to change commit message
GitHub's instructions for doing this:
- On the command line, navigate to the repository that contains the commit you want to amend.
- Type
git commit --amendand press Enter. - In your text editor, edit the commit message and save the commit.
- Use the
git push --force example-branchcommand to force push over the old commit.