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上 ...
随机推荐
- vba 弹框
'第三个按钮,上传数据到数据库 Private Sub CommandButton1_Click() str1 = "abcde" str2 = InputBox("请输 ...
- Redis命令总结 (转)
Redis命令总结 连接操作相关的命令 quit:关闭连接(connection) auth:简单密码认证 持久化 save:将数据同步保存到磁盘 bgsave:将数据异步保存到磁盘 lastsa ...
- C#深入理解AutoResetEvent和ManualResetEvent
当在C#使用多线程时就免不了使用AutoResetEvent和ManualResetEvent类,可以理解这两个类可以通过设置信号来让线程停下来或让线程重新启动,其实与操作系统里的信号量很相似(汗,考 ...
- java内存模型与volatile变量与Atomic的compareAndSet
java分主内存和工作内存, 主内存是线程共享的, 工作内存是每个线程独有的. java对主内存的操作是通过工作内存间接完成的: 先拷贝主内存变量值到工作内存, 在工作内存操作这个变量的副本, 完成后 ...
- 在平衡树的海洋中畅游(三)——Splay
Preface 由于我怕学习了Splay之后不直接写blog第二天就忘了,所以强行加了一波优先级. 论谁是天下最秀平衡树,我Splay第一个不服.维护平衡只靠旋转. 一言不合转死你 由于平衡树我也介绍 ...
- java 基础01
标识符:字母,下划线和美元符号,数字组成大小写敏感,无长度限制 关键字: 数据类型
- zabbix中配置当memory剩余不足20%时触发报警
在zabbix中默认当内存剩余量不足2G的时候触发报警,并没有使用百分比来触发如下: 现在需要配置:当memory剩余不足20%时触发报警,具体操作方法如下: 1)创建itemConfiguratio ...
- C. A Mist of Florescence
链接 [http://codeforces.com/contest/989/problem/C] 题意 给定A B C D四个字符个数,让你构造一个矩阵使得他们的个数恰好那么多,联通块算一块 分析 构 ...
- 作业20171116 beta2及beta发布 成绩
申诉 对成绩有疑问或不同意见的同学,请在群里[@杨贵福]. 申诉时间截止2017年12月13日 17:00. 成绩 scrum01 scrum02 scrum03 scrum04 scrum05 sc ...
- SCRUM 12.20
以下为我们爬虫遇到问题的报告 我们团队的m2阶段原本计划是爬取美团的信息以支持我们的app对比功能,但在这一阶段遇到很多问题,主要表现如下: 美团反爬机制: 由于我们团队人员在事先并不知道美团具有反爬 ...