scm/hg-git-rosetta-stone
author Tomas Zeman <tzeman@volny.cz>
Sun, 25 Aug 2013 21:04:14 +0200
changeset 34 11d20ddca9d8
permissions -rw-r--r--
scm/hg-git-rosetta-stone: simplified mapping between hg commands and git commands If you know how to use hg very well and just looking at how to do the same things in git, this page is right for you. Use it like a dictionary hg -> git.

https://github.com/sympy/sympy/wiki/Git-hg-rosetta-stone

Git hg rosetta stone

Use it like a dictionary hg -> git.

Rosetta Stone
=============


|hg                   |git                                                    |
|hg cat -r rev        |git show rev:some_file                                 |
|some_file            |                                                       |
|hg clone             |git clone git://git.sympy.org/sympy.git                |
|http://hg.sympy.org/s|                                                       |
|ympy-git.hg          |                                                       |
|hg clone -U          |git clone --bare git://git.sympy.org/sympy.git         |
|http://hg.sympy.org/s|                                                       |
|ympy-git.hg          |                                                       |
|hg diff              |git diff HEAD                                          |
|hg status            |git status                                             |
|hg manifest          |git ls-tree -r --name-only --full-tree HEAD            |
|hg parents           |git show --pretty=format:'%P' -s                       |
|hg commit            |git commit -a                                          |
|hg record            |git add -p; git commit # or, for a more detailed       |
|                     |interface: git add -i; git commit                      |
|hg email -r tip      |git send-email HEAD^ # or: git format-patch HEAD^ ; git|
|                     |send-email 0001-Add-whitespace.patch                   |
|hg view              |gitk, git gui                                          |
|hg help command      |git help command                                       |
|~/.hgrc              |~/.gitconfig                                           |
|.hg/hgrc             |.git/config                                            |
|hg paths             |git remote -v                                          |
|editing paths in     |git remote add name url # see "git help remote" for    |
|.hg/hgrc             |more info how to edit paths; alternatively, you can    |
|                     |edit them by hand in .git/config too                   |
|.hgignore            |.gitignore                                             |
|.hg/hgrc [ui] ignore |.git/info/exclude                                      |
|hg add               |git add (note, it adds _content_ to index; can work on |
|                     |a hunk-by-hunk basis with -p!)                         |
|hg rm                |git rm                                                 |
|hg push              |git push                                               |
|hg pull              |git fetch                                              |
|hg pull -u           |git pull                                               |
|hg addremove         |git add -A (or: git add .; git ls-files --deleted xargs|
|                     |git rm)                                                |
|hg revert -a         |git reset --hard                                       |
|hg revert some_file  |git checkout some_file                                 |
|hg strip 2fccd4c     |git reset --hard 2fccd4c^                              |
|hg export            |git format-patch                                       |
|hg import --no-commit|git apply some.patch                                   |
|some.patch           |                                                       |
|hg import some.patch |git am some.patch                                      |
|hg out               |git fetch && git log FETCH_HEAD..master                |
|hg in                |git fetch && git log master..FETCH_HEAD                |
|hg update tip        |git checkout HEAD # or this: "git checkout master", or |
|                     |"git merge FETCH_HEAD", depending on what you did      |
|                     |before this                                            |
|hg update -C         |git checkout -f                                        |
|hg update some.branch|git checkout some.branch # Note that "git branch       |
|                     |some.branch" is not the same as this.                  |
|hg qimport           |stg something (A separate patch manager extension is   |
|                     |probably not necessary in git -- normal workflow       |
|                     |combined with git rebase -i should cover your needs)   |
|hg qpush             |(see hg qimport)                                       |
|hg qpop              |(see hg qimport)                                       |
|hg qimport -r tip    |?                                                      |
|hg qnew -f some.patch|?                                                      |
|hg resolve -a -m     |git add -u                                             |
|hg glog              |git log --graph --all --decorate # or: git log --graph |
|                     |--all;                                                 |
|hg verify            |git fsck                                               |


Setup
=====

~/.gitconfig:

 [user]
     name = Ondrej Certik
     email = ondrej@certik.cz

 [color]
     ui = auto

 [color]
     decorate = short

 [alias]
     ci = commit
     di = diff --color-words
     st = status

     # aliases that match the hg in / out commands
     out      = !git fetch && git log FETCH_HEAD..
     outgoing = !git fetch && git log FETCH_HEAD..
     in       = !git fetch && git log ..FETCH_HEAD
     incoming = !git fetch && git log ..FETCH_HEAD