#Getting Started with Git
git init
or
git clone url
git config --global color.ui true
git config --global push.default current
git config --global core.editor vim
git config --global user.name "John Doe"
git config --global user.email [email protected]
git config --global diff.tool meld
# See the list of all local branches
git branch
# Switch to existing local branch
git checkout branchname
# Checkout current branch into a new branch, named new-branch-name
git chekcout -b new-branch-name
# Merge branch-name into the current branch
git merge branchname
# Soft branch delete, will complain if the branch is not merged
git branch -d branchname
# Hard branch delete, will not complain about nothing. Like rm -rf in bash
git branch -D branchnameStandard Flow
# See all commits
git log
# Pretty commit view, you can customize it as much as you want. Just google it.
git log --pretty=format:"%h %s" --graph
# See status of your current git branch. Often will have advice on command that you need to run
git status
# Short view of status. Helpful for seeing things at a glance
git status -s
# Add modified file to be commited(aka stage the file)
git add filename
# Add all modifeid files to be commited(aka stage all files)
git add .
# Add only text files, etc.
git add '*.txt'
# Tell git not to track file anymore
git rm filename
# Record changes to git. Default editor will open for a commit message. (Visible via git log)
# Once files are commited, they are history.
git commit
# A short hand for commiting files and writing a commit message via one command
git commit -m 'Some commit message'
# Changing the history :) If you want to change your previous commit, you can, if you haven't pushed it yet to a remote repo
# Simply make new changes, add them via git add, and run the following command. Past commit will be ammended.
git commit --amendAdvanced
# Unstage pending changes, the changes will still remain on file system
git reset
# Unstage pending changes, and reset files to pre-commit state. If
git reset --hard HEAD
# Go back to some time in history, on the current branch
git reset tag
git reset <commit-hash>
# Save current changes, without having to commit them to repo
git stash
# And lated return those changes
git stash pop
# Return file to it's previous version, if it haven't been stage yet.
# Otherwise use git reset filename or git reset --hard filename
git checkout filename Comparing changes
git diff
git diff HEAD
git diff branch name
git difftool -d
git tag# See list of remote repos available. If you did git clone, you'll have at least one named "origin"
git remote
# Detailed view of remote repos, with their git urls
git remote -v
# Add a new remote. I.e. origin if it is not set
git remote add origin <https://some-git-remote-url>
# Push current branch to remote branch (usually with the same name) called upstream branch
git push
# If a remote branch is not set up as an upstream, you can make it so
# The -u tells Git to remember the parameters
git push -u origin master
# Otherwise you can manually specify remote and branch to use every time
git push origin branchname
# Just like pushing, you can get the latest updates from remote. By defaul Git will try to pull from "origin" and upstream branch
git pull
# Or you can tell git to pull a specific branch
git pull origin branchname
# Git pull, is actually a short hand for two command.
# Telling git to first fetch changes from a remote branch
# And then to merge them into current branch
git fetch && git merge origin/remote-branch-name
# If you want to update history of remote branches, you can fetch and purge
git fetch -p
# To see the list of remote branches
# -a stands for all
git branch -a Try Github lernGitBranching http://pcottle.github.io/learnGitBranching/?NODEMO Pro Git http://git-scm.com/book
Source Tree Command Line Setup https://answers.atlassian.com/questions/151279/sourcetree-command-line-option tig brew install tig gitk
Meld - brew install meld
Open Diff
p4v Merge - http://git-scm.com/book/en/Customizing-Git-Git-Configuration#External-Merge-and-Diff-Tools
InteliJ