My Git Cheat Sheet

Some standard configs:

git config –global user.name “Ryan Chapin”
git config –global user.email “rchapin@nbinteractive.com”
git config –global core.editor vim

Ignore files in your repo:

.gitignore files contain patterns for files or directories to ignore

You can also set up a global .gitignore file for all Git repos via the core.excludesfile setting
$ git config –global core.excludesfile ~/path/to/some/.gitignore

The local .gitignore can be committed to a repo, the global one is only locally visible

Empty dirs need to have some file in there, .gitkeep for example:
$ touch .gitkeep

========================================
Git Cheat-Sheet:

# Some standard configs for git on your local box

$ git config –global user.name “Ryan Chapin”
$ git config –global user.email “rchapin@nbinteractive.com”
$ git config –global core.editor vim

$ git checkout master : checks out the master and sets it to HEAD
$ git checkout <branch_name> : checks out the ‘branch_name’ branch and sets it to HEAD
$ git branch -a : lists the branches in the current git repo

# ————————————-
# Creating and working with repos:

# create a remote repo on a server without a working tree, by default the repo
# should end in .git
$ git init –bare

# show existing defined remote repos
$ git remote

# show details of named remot repos
$ git remote show <name>

# ————————————-
# Adding and removing files to be commited
#
# Add all files already tracked that have been changed
$ git add -u

# Add all files already tracked and new files
$ git add -A
  or
$ git add .

# remove a file from the index, or undoing a git add before committing
$ git reset name_of_file_in_index.txt

# ————————————-
# Tags:
# create a tag:
$ git tag version0.01

# With a comment
$ git tag -a 1.0.0 -m ‘First complete version of the hadoop-utility-scripts’
$ git push origin –tags

# create a tag for a commit id
$ git tag version0.01 <tagID>

# checkout a certain tag
$ git checkout <tag_name>

# delete a tag (I did it from the master branch)
# first list it
$ git tag -l

# delete it
$ git tag -d foo-blah

# push it to the remote
$ git push origin :refs/tags/foo-blah

# get the commit id for a given tag
$ git rev-list -1 <tag>

# ————————————-
# Branches
#
# list local branches
$ git branch

# list remote-tracking branches
$ git branch -r

# list both remote-tracking and local branches
$ git branch -a

# switch HEAD pointer to a branch
$ git checkout <branch_name>

# create a branch
$ git checkout -b <new-branch-name>

# delete a branch
$ git branch -d <branch-name-to-delete>

# delete a remote branch
$ git push origin –delete <branch-name-to-delete>

# push a branch
$ git push origin <branch-name>

# Set up a tracking branch from a remote in your local repo:
$ git checkout -b <branch-name> origin/<branch-name>

# Merge a specific commit from one branch to another, cherry picking:
#
# First figure out the commit id(s) that you want to merge
# Then, checkout the target branch (the one into which you want to merge the specific commit)
$ git checkout -b <target-branch-name>

# Then merge just that commit (the commit id is a specific commit on a specific branch)
$ git cherry-pick abacac

#
# Rename a branch locally and remotely
#
# Rename branch locally    
$ git branch -m old_branch new_branch

# Delete the old branch    
$ git push origin :old_branch
# Push the new branch, set local branch to track the new remote
$ git push –set-upstream origin new_branch

 

# ————————————-
# Updating remote URLs:
$ git remote set-url origin ssh://git@some.host/path/repo.git

# Confirm by using
$ git remote -v

# ————————————-
# Resetting/Fixing things:

# Reset your local tracking branch to the state of the remote tracking branch.  This will destroy anything in your local tracking branch

$ git reset –hard origin/BRANCH

# ————————————-
# Solution for
# ‘fatal: No path specified. See ‘man git-pull’ for valid url syntax’
# error message when attempting to push to a remote repo
#
# This is the result of git not being configured properly for this user and
# this repository.
#
# 1. Get the correct url for your repository.  For example:
#    git@github.com:rchapin/some-repo.git
#    Where ‘git@github.com’ is the top-level url for your repo,
#    ‘rchapin’ is your user name, and ‘some-repo.git’ is the repo to
#    which you are trying to push.
# 2. Issue the following commands (be sure to update them to match your url,
#    user name, and repo), in the repository directory.
$ git remote rm
$ git remote add origin ‘git@github.com:rchapin/some-repo.git’

Leave a Reply