Git Cheat Sheet

From chriesibaum wiki
Jump to navigation Jump to search

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

source

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:

  1. On the command line, navigate to the repository that contains the commit you want to amend.
  2. Type git commit --amend and press Enter.
  3. In your text editor, edit the commit message and save the commit.
  4. Use the git push --force example-branch command to force push over the old commit.