Welcome to my website. I am always posting links to photo albums, art, technology and other creations. Everything that you will see on my numerous personal sites is powered by the formVistaTM Website Management Engine.


  • My Git Cheat Sheet
    02/25/2016 9:44PM

    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
    $ 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'

Advanced Search