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上 ...
随机推荐
- 如何从现有版本1.4.8升级到element UI2.0.11
现在的项目是定死的依赖以下几个核心组件的版本: vue 2.3.3 element-ui 1.4.8 vue-template-comiler 2.3.3 将以前定死的依赖修改为 vue ^2.3.3 ...
- select 下拉选中
<body> <select name="" id=""> <option value="">张三< ...
- Luogu P3398 仓鼠找sugar
这还是一道比较好的树剖题(去你的树剖,LCA即可) 这里主要讲两种思路,其实都是很基本也很经典的 1 树链剖分 还是先讲一下这种算法吧,虽然写起来很烦(不过感觉写多了就习惯了,而且还有一种莫名的快感) ...
- Luogu P1966 火柴排队
这还是一道比较简单的题目,稍微想一下就可以解决.终于有NOIP难度的题目了 首先我们看那个∑(ai-bi)^2的式子,发现这个的最小值就是排序不等式 所以我们只需要改变第一组火柴的顺序,使它和第二组火 ...
- Bash 笔记
获取当前工作目录 basepath=$(cd `dirname $0`; pwd) 源文 : https://sexywp.com/bash-how-to-get-the-basepath-of-cu ...
- cocoapod Podfile use frameworks swift/oc混编 could not build module xxx
前置: 知名的pod: AFNetworking 我自己的pod: AFNetworking+RX 3.1.0.18 里面有一段代码是: #import <Foundation/Founda ...
- PolarCode
什么是polar code极化码 为了实现可靠的信号传输,编码学家在过去的半个多世纪提出多种纠错码技术如里所码(RS码).卷积码,Turbo码等,并在各种通信系统中取得了广泛的应用.但是以往所有实用的 ...
- 结对项目 https://github.com/quchengyu/jiedui/tree/quchengyu-patch-1
所选项目名称:文本替换 结对人:傅艺伟 github地址 : https://github.com/quchengyu/jiedui/tree/quchengyu-patch-1 用一个新字 ...
- 20150401 作业2 结对 四则运算(Doing)
import java.util.ArrayList; import java.util.Random; import java.util.Scanner; public class SE2_1 {/ ...
- Wshshell 脚本简单学习
WshShell 的简单语法 学习 同事给了一个脚本自动执行 部署命令 感觉挺好的 , 年前一直说要学习一下 但是一直没有学习(自己太懒了) 这次简单总结一下. 创建对象: Set WshShell ...