User:CaritasUbi/Git how-to
This page consists of helpful hints from my own experience with Git.
Global configuration file
[edit]To edit the global config file
[edit]git config --global -e
Mine looks like this:
[user] name = My Name email = My.Name@myserver.com [alias] log1 = log --pretty=format:\"%h - %an, %ad %ar : %s\" --date short -10
To create an alias from a command line
[edit]For example, to create an alias for a short-form log:
git config --global alias.log1 'log --pretty=format:"%h - %an, %ad %ar : %s" --date short -10'
That log option creates output that looks like this:
42df7d8 - My Name, 2013-03-06 20 minutes ago : Explicit true causes MEH to be cleared 95ee118 - My Name, 2013-02-28 6 days ago : LuAnne's image 0fa3e90 - My Name, 2013-02-28 6 days ago : Moved to Eclipse project 7df80ac - My Name, 2013-02-28 6 days ago : captured sample timings for remaining time estimator 2efe9da - My Name, 2013-02-27 7 days ago : Renamed properties file d368013 - My Name, 2013-02-26 8 days ago : Successful result of downgrade (test03 part C) ece4f85 - My Name, 2013-02-26 8 days ago : First successful run of upgrade (test3 part b) 8b1c493 - My Name, 2013-02-26 8 days ago : Successful priming run ad6a191 - My Name, 2013-02-26 8 days ago : Initial push of split scripts bdad4eb - My Name, 2013-02-26 8 days ago : Failed test 3 part b
Reverting to another version of a file
[edit]From the same branch
[edit]To get a specific revision:
git checkout <commit-ref> -- <filename>
From another branch
[edit]git checkout <branch-name> <filename>
A typical case is .gitignore
Branches
[edit]Creating a remote branch
[edit]After creating the branch locally:
git push -u origin <branch-name>
You can specify a different remote name other than origin
Getting a local tracking branch of a remote branch
[edit]Get the remote branch name:
git branch -a
* master
remotes/origin/HEAD
remotes/origin/master
remotes/origin/stable
remotes/origin/experimental
To then get access to stable, do this:
git checkout -t origin/stable
or, to give it a different local name:
git checkout -b myNewName origin/stable
Pulling all remote branches
[edit]After you clone a project, you actually have references to all remote branches:
git branch -a
* master
remotes/origin/HEAD
remotes/origin/master
remotes/origin/v1.0-stable
remotes/origin/experimental
You should periodically refresh the contents of these remote branches with
git pull
If you just want to take a quick peek at an upstream branch, you can check it out directly:
git checkout origin/experimental
But if you want to work on that branch, you'll need to create a local tracking branch:
git checkout -b experimental origin/experimental
Deleting a local branch
[edit]git branch -d <branch-name>
If the branch has not been fully merged, you can force it with
git branch -D <branch-name>
Deleting a remote branch
[edit]git push origin --delete <branch-name>
If this doesn't delete your local copy of the remote branch, do this:
git remote prune origin
Creating a branch retroactively
[edit]git branch fixes # copies master to new branch
git reset --hard XXX # resets master to XXX (e.g., origin/master)
Working with tags
[edit]To see existing tags:
git tag -l
To tag a version (can do it retroactively with <commit>)
git tag -a -m <msg> <tagname> [<commit>]
git push --tags
To revert to a tagged version
git reset --hard <tagname>
git push --force # Only if you are sure
Undeleting a file
[edit]git reset HEAD
Should do it. If you don't have any uncommitted changes that you care about, then
git reset --hard HEAD
should forcibly reset everything to your last commit. If you do have uncommitted changes, but the first command doesn't work, then save your uncommitted changes with git stash:
git stash
git reset --hard HEAD
git stash pop
Source: http://stackoverflow.com/questions/2125710/how-to-revert-a-git-rm-r