Table of Contents

Git cribsheet

This is a personal cribsheet intended for my own use. If it's useful to you, great, but it doesn't cover the subject exhaustively.

Resources for beginners

Undo

Unstage file

Discard local change to file

Discard all local changes

This is a specific form of git reset --hard <commit> which resets your current branch to <commit>. origin/<branch> here refers to the HEAD commit of that branch at origin.

Revert

Git revert undoes a single specified commit, making the changes necessary to do so at the HEAD of your current branch.

Branches

Get existing remote branch

https://stackoverflow.com/questions/9537392/git-fetch-remote-branch

Auto setup remote branch when pushing new local branch

https://medium.com/@anjusha.khandavalli/auto-setup-remote-branch-with-push-autosetupremote-892ddd7644

Branch deletion

Local branches

Remote branches

https://stackoverflow.com/questions/2003505/how-do-i-delete-a-git-branch-locally-and-remotely

Obsolete tracking branches

https://stackoverflow.com/questions/7726949/remove-tracking-branches-no-longer-on-remote

List conflicted files

Show unmerged files in the diff between the working tree and the index (staging area for next commit).

Configuration

Config files

git has three config files. In Windows:

Settings are overridden by values in more narrowly-scoped config (e.g. if the same property is set at user and repo level, the repo level takes precedence).

Can't find them?

Inspect properties to see where their values are set:

or just edit them (using the configured editor) via the command line:

Settings

https://www.atlassian.com/git/tutorials/setting-up-a-repository/git-config covers a lot of possible settings.

Editor

In Git for Windows, by default the mighty vim. If that's not your cup of tea:

Terminal colours

Here's a possible config setup (thanks Nathan Hoad!)

[color]
  ui = auto
[color "branch"]
  current = yellow reverse
  local = yellow
  remote = green
[color "diff"]
  meta = yellow bold
  frag = magenta bold
  old = red bold
  new = green bold
[color "status"]
  added = green bold
  changed = yellow bold
  untracked = magenta bold

To set these up via the command line (e.g. for current branch as above):

Unable to get local issuer certificate

Long file names

From https://stackoverflow.com/questions/22575662/filename-too-long-in-git-for-windows.

Git for Windows compiled with msys has a limit of 260 characters for a filename – this is a limitation of msys, not Git. (Git's filename length limit is 4096 characters. Work around this by setting core.longpaths to true:

git config --system core.longpaths true

GitHub

Update fork from origin

  1. Go to your forked repo

  2. Pull requests → New pull request. This compares your fork to its origin as if to merge it back to its originating repo.

  3. Change the base repo to be your fork. This turns it into a branch comparison within the fork – click compare across forks to be able to see the originating repo again.

  4. Change the head repo to the originating repo. You might need to wait for the screen to refresh if the originating repo has moved on a lot.

  5. Create the pull request and merge it