hg和git命令对照表
hg和git命令对照表
来源 https://github.com/sympy/sympy/wiki/Git-hg-rosetta-stone
Git hg rosetta stone
The sympy git server is at https://github.com/sympy/sympy . The main Sympy repository may be cloned with git clone git://github.com/sympy/sympy.git
.
The first and the most important thing is that you should understand that git is different. For example it uses staging area (so called index) for iteratively preparing commits. This and other great and unique features of git make it the preference of many developers, so go read its documentation!
- git project page: https://git-scm.com/
- git faq explaining many things: https://git.wiki.kernel.org/index.php/GitFaq
- make sure to read mails referenced from the faq -- they are really brilliant, e.g. Linus on git and renames
- git wiki: https://git.wiki.kernel.org/index.php/Main_Page
- git documentation: https://git-scm.com/doc
Here is a nice cheatsheet which will probably make your life easier in the beginning: https://jan-krueger.net/development/git-cheat-sheet-extended-edition
Being said all this, now comes a simplified mapping between hg commands and git commands. Use it with care -- there are some semantic differences ...
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. Some equivalent git commands may seem more complex than the corresponding hg counterparts; that's because the natural flow of work in git doesn't map 1:1 to Mercurial. But the point here is that if you are used to some specific workflow in hg, it can be directly translated to git using the table below and it does exactly the same thing as you are expecting it to.
When editing this wiki page, please only add an exact equivalent to some hg command; a full explanation can always be found somewhere else on the net.
Table of Contents |
Rosetta Stone
hg | git |
---|---|
hg cat -r rev some_file | git show rev:some_file |
hg clone http://hg.sympy.org/sympy-git.hg | git clone git://git.sympy.org/sympy.git |
hg clone -U http://hg.sympy.org/sympy-git.hg | git clone --bare git://git.sympy.org/sympy.git |
hg diff | git diff HEAD |
hg diff -r A -r B | git diff A^..B |
hg status | git status |
hg status -c | git ls-files -t | grep '^H' |
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 .hg/hgrc | git remote add name url # see "git help remote" for 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 purge | git clean -fd |
hg purge --all | git clean -fdx |
hg strip 2fccd4c | git reset --hard 2fccd4c^ (on a normal repository) git reset --soft 2fccd4c^ (on a bare repository) |
hg forget | git rm --cached (reference: stackoverflow) |
hg export | git format-patch |
hg import --no-commit some.patch | git apply some.patch |
hg import some.patch | git am some.patch |
hg out | git fetch && git log origin/master.. |
hg in | git fetch && git log ..origin/master |
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 up --date 2014-01-01 | git checkout `git rev-list -n 1 --before="2014-01-01" master` |
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 root | git rev-parse --show-toplevel |
hg log -G (old way: hg glog) | git log --graph --all --decorate # or: git log --graph --all; |
hg verify | git fsck |
hg branches | git branch -a |
hg branch | git rev-parse --abbrev-ref HEAD |
hg rollback | git reset HEAD~ |
hg backout | git revert |
Setup
~/.hgrc:
[ui]
username = Ondrej Certik <ondrej@certik.cz>
~/.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
More Information
One can find some info here:
- http://git.or.cz/course/svn.html
- http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/
and at many other pages.
Tips
- use gitk to visualize history (much more capable than "hg vi")
- use git gui to visually stage/unstage what you are preparing for commit
to index (it too can work on hunk-by-hunk basis)
- git stash is your friend
- git rebase --interactive is your friend too :)
- windows users: either use cygwin or msysgit:
https://code.google.com/p/msysgit/
- don't try to project your usual habits - open your mind, and maybe you'll
discover much more superior workflow. (yes, this needs hard work and RTFM,
and being ready that FM sometimes differ from what software actually does)
- Add this
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
# __git_ps1 "(%s)"
# use the second line instead if you have bash autocompletion for git enabled
}
PS1="\w\$(parse_git_branch) $ "
to your promptstring to show current branch when in a git-tracked directory.
(see http://b.lesseverything.com/2008/3/25/got-git-howto-git-and-github)
git -> hg conversion
You can use this script:
#! /bin/bash work=`mktemp -t -d sym.XXX`
git format-patch -k -p -o $work master..HEAD
# add a new line after the subject line so that Mercurial imports it fine.
sed -i '4a\\' $work/*
cd ~/repos/sympy.hg/
hg import $work/*
rm -r $work
to convert all patches between master..HEAD to mercurial repository sitting at ~/repos/sympy.hg/.
Alternatively, you could use the hg-git Mercurial plugin.
how to checkout remote branch
Start with some repository, for example create a new one from scratch:
$ mkdir sympy
$ cd sympy
$ git init
or clone our official repository:
$ git clone git://git.sympy.org/sympy.git
$ cd sympy
Now let's say you want to checkout some branch from git://github.com/certik/sympy.git. The canonical way is to add it to your remotes:
$ git remote add ondrej git://github.com/certik/sympy.git
Then fetch all branches from there into your remote branches:
$ git fetch ondrej
You can now list them with "git branch -r", or examine them with "git log ondrej/some_branch". Finally, to checkout the mpmath5 branch, do:
$ git checkout -b mpmath5 ondrej/mpmath5
================= End
hg和git命令对照表的更多相关文章
- 常用Git命令汇总
常用Git命令汇总 跟着R哥来到了新公司(一个从硬件向互联网转型中的公司),新公司以前的代码基本是使用SVN做版本控制,甚至有些代码没有做版本控制,所以R哥叫HG做了一次Git分享,准备把公司所有的代 ...
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- 工作中常用的git命令
一 常用Git命令 git clone:(区分SSH or HTTP) git init:初始化仓库 二 Git命令详解 Git Bash下,cd /c git clone,从远程Git版本库克隆一份 ...
- 常用 Git 命令清单
我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...
- 常look的Git命令
常用的Git命令 命令 简要说明 git add 添加至暂存区 git add–interactive 交互式添加 git apply 应用补丁 git am 应用邮件格式补丁 git a ...
- ***Linux下使用git命令及github项目
在linux下搭建git环境1.创建Github账号,https://github.com2.Linux创建SSH密钥: ssh-keygen ##一直默认就可以了 3.将公钥加入到Github账户 ...
- 我所记录的git命令(非常实用)
一.前言 记录一下工作中常用到的git命令,只是简单的笔记,欢迎大家交流... [ 顺便问下园友们,怎么感觉博客园发布的博客搜索有时都搜不到,后台编辑能填的都填写了,还是觉得搜索排名不高? 相同的标题 ...
- GIT命令行的使用
新手了解 有不对的地方指点下 首先, 了解下什么是GIT,GIT是一款开元的分布式版本控制工具, 在世界上的所有分布式版本控制工具中,GIT是最简单,最流行,同时也是最常用的 相比于其他版本的控制工具 ...
- 简明 Git 命令速查表(中文版)
原文引用地址:https://github.com/flyhigher139/Git-Cheat-Sheet/blob/master/Git%20Cheat%20Sheet-Zh.md在Github上 ...
随机推荐
- 一次学生时代的经历,利用Python在机房杀红蜘蛛,脱离老师控制!
这个为什么说是一次学生时代的经历呢,我的出发点并没有是为了吊胃口.确实,这个Python小应用,只能在学生时代用得着吧,尤其是高中和大学,如果你没有想到也没关系,看完我下面说的就会明白了. 在这里 ...
- eclipse 报错Version 1.6.0_45 of the JVM is not suitable for this product. Version:1.7 or greater is required
最近离职来了一家新公司,之前的公司的开发IDE用的是IntelliJIDEA和SpringSourceToolSuit,自己在家里用的也是MyEclipse,所以使用eclipse的经验还是不足.结果 ...
- ShellExecute使用详解
ShellExecute命令 ⑴ 函数原型: HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTST ...
- CF1039E Summer Oenothera Exhibition 贪心、根号分治、倍增、ST表
传送门 感谢这一篇博客的指导(Orzwxh) $PS$:默认数组下标为$1$到$N$ 首先很明显的贪心:每一次都选择尽可能长的区间 不妨设$d_i$表示在取当前$K$的情况下,左端点为$i$的所有满足 ...
- (一)在 Blend 中绘制形状和路径
原文:(一)在 Blend 中绘制形状和路径 https://docs.microsoft.com/zh-cn/previous-versions/jj170881(v=vs.120) 在 Blend ...
- Quartz.Net分布式任务管理平台(第二版)
前言:在Quartz.Net项目发布第一版后,有挺多园友去下载使用,我们通过QQ去探讨,其中项目中还是存在一定的不完善.所以有了现在这个版本.这个版本的编写完成其实有段时间了一直没有放上去.现在已经同 ...
- c#基础系列3---深入理解ref 和out
"大菜":源于自己刚踏入猿途混沌时起,自我感觉不是一般的菜,因而得名"大菜",于自身共勉. 扩展阅读 c#基础系列1---深入理解 值类型和引用类型 c#基础系 ...
- 利用阿里云的源yum方式安装Mongodb
今天在线上服务器上安装MongoDB,从Mongo官网直接下载链接,结果在下载时发觉速度慢的可怜.迫于无奈,只能找国内的镜像下载.这里选择阿里云的源进行安装,记录如下: 1)在/etc/yum.rep ...
- VMware vSphere虚拟化-VMware ESXi 5.5组件安装过程记录
几种主要的虚拟化 ESXi是VMware公司研发的虚拟机服务器,ESXi已经实现了与Virtual Appliance Marketplace的直接整合,使用户能够即刻下载并运行虚拟设备.这为 即插即 ...
- B树、B-树、B+树、B*树相关
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: B ...