Git常用指令大全

1 获取帮助

git help <verb>
git <verb> --help
man git-<verb>

例如,要想获得 config 命令的手册,执行git help config

2 Git 仓库语法

2.1 初始化仓库

git init

2.2 添加并提交文件

git add *.c
git add LICENSE
git commit -m 'initial project version' :将提交信息与命令放在同一行
git commit -a -m 'added new benchmarks' :添加并合并提交 。
git commit --amend 提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了,使用该命令。

2.3 克隆仓库

git clone [url] 如:git clone https://github.com/libgit2/libgit2
克隆并重新命名为mylibgit :git clone https://github.com/libgit2/libgit2 mylibgit

2.4 状态简览

git status
git status -s 得到一种更为紧凑的格式输出

2.5 查看文件的变化

git diff
git diff --staged/git diff --cached :查看已暂存的将要添加到下次提交里的文件

2.6 移除文件

git rm PROJECTS.md
git rm PROJECTS.md -f 这是一种安全特性,用于防止误删还没有添加到快照的数据,这样的数据不能被 Git 恢复
git rm *~ :删除以 ~ 结尾的所有文件

2.7 移动文件

git mv file_from file_to

如:git mv README.md README
以上命令相当于一下命令:
mv README.md README
git rm README.md
git add README

2.8 查看提交历史

git历史操作.png

git log -p -2 :-p,用来显示每次提交的内容差异。 -2 来仅显示最近两次提交
git log --stat : 每次提交的简略的统计信息,如提交多少文件
git log --pretty=oneline 将每个提交放在一行显示,查看的提交数很大时非常有用。
git log --pretty=format:"%h %s" --graph 添加了一些ASCII字符串来形象地展示你的分支、合并历史
git log --pretty=format:"%h - %an, %ar : %s" 定制要显示的记录格式
git log --oneline --decorate 查看各个分支当前所指的对象
git log --oneline --decorate --graph --all 输出你的提交历史、各个分支指向以及项目的分支分叉情况
git log --author="haha" 操作者haha

查看提交历史.png

git log --since=2.weeks 列出所有最近两周内的提交

git log 输出操作.png

例如: 查看2008 年 10 月期间,Junio Hamano 提交的但未合并的测试文件
$ git log --pretty="%h - %s" --author=gitster --since="2008-10-01"
--before="2008-11-01" --no-merges -- t/

2.9 撤销操作

git reset HEAD CONTRIBUTING.md 取消暂存 CONTRIBUTING.md 文件

2.10 创建分支和切换分支

git branch testing
git checkout testing
git checkout -b iss53 当前分支拉个分支并且切换到新分支
git checkout iss52 -b iss53 从iss52分支拉个分支并且切换到iss53新分支

3 打标签

Git 使用两种主要类型的标签:轻量标签(lightweight)与附注标签(annotated)。
一个轻量标签很像一个不会改变的分支 - 它只是一个特定提交的引用。

git tag 以字母顺序列出标签
git tag -l 'v1.8.5*' 使用特定的模式查找标签

3.1 附件标签

git tag -a v1.4 -m 'my version 1.4' -m 选项指定了一条将会存储在标签中的信息。 如果没有为附注标签指定一条信息,Git 会运行编辑器要求你输入信息。
git show v1.4 看到标签信息与对应的提交信息

3.2 轻量标签

轻量标签本质上是将提交校验和存储到一个文件中 - 没有保存任何其他信息

如:git tag v1.4-lw 创建轻量标签,不需要使用 -a、-s 或 -m 选项,只需要提供标签名字

3.3 后期打标签

你也可以对过去的提交打标签。 假设提交历史是这样的:
git log --pretty=oneline
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function
4682c3261057305bdd616e23b64b0857d832627b added a todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme
现在,假设在 v1.2 时你忘记给项目打标签,也就是在 “updated rakefile” 提交。 你可以在之后补上标签。 要在那个提交上打标签,你需要在命令的末尾指定提交的校验和(或部分校验和):
git tag -a v1.2 9fceb02

3.4 共享标签

git push origin [tagname] 创建完标签后你必须显式地推送标签到共享服务器上

如:git push origin v1.5

3.5 删除标签

git tag -d <tagname> 删除掉你本地仓库上的标签

如 git tag -d v1.4-lw
git push origin --tags 想要一次性推送很多标签,也可以使用带有 --tags 选项的 git push 命令
上述命令并不会从任何远程仓库中移除这个标签,你必须使用 git push <remote> :refs/tags/<tagname> 如:git push origin :refs/tags/v1.4-lw

3.6 检出标签

git checkout 2.0.0 查看某个标签所指向的文件版本 git checkout 命令,虽然说这会使你的仓库处于“分离头指针(detacthed HEAD)”状态——这个状态有些不好的副作用.

4 Git别名

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

例如,为了解决取消暂存文件的易用性问题,可以向 Git 中添加你自己的取消暂存别名:

git config --global alias.unstage 'reset HEAD --'

这会使下面的两个命令等价:

git unstage fileA
git reset HEAD -- fileA

这样看起来更清楚一些。 通常也会添加一个 last 命令,像这样:
git config --global alias.last 'log -1 HEAD'
这样,可以轻松地看到最后一次提交:
git last
commit 66938dae3329c7aebe598c2246a8e6af90d04646
Author: Josh Goebel dreamer3@example.com
Date: Tue Aug 26 19:48:51 2008 +0800
test for current head
Signed-off-by: Scott Chacon schacon@example.com

你可能想要执行外部命令,而不是一个 Git 子命令。 如果是那样的话,可以在命令前面加入 ! 符号。 如果你自己要写一些与 Git 仓库协作的工具的话,那会很有用。 我们现在演示将 git visual 定义为 gitk 的别名:
git config --global alias.visual '!gitk'

5 git仓库

5.1 查看git远程仓库

git remote . 列出你指定的每一个远程服务器的简写
git remote -v 显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL
git remote show [remote-name] 想要查看某一个远程仓库的更多信息 如:$ git remote show origin

5.2 添加远程仓库

git remote add <shortname> <url> 添加一个新的远程 Git 仓库,同时指定一个名称 如:git remote add pb https://github.com/paulboone/ticgit

git fetch <shortname> 拉取名称的仓库 如:git fetch pb

5.3 从远程仓库拉取

git fetch [remote-name]

5.4 从远程仓库拉取

推送到远程仓库
git push [remote-name] [branch-name]。

当你想要将 master 分支推送到 origin 服务器 如:git push origin master

5.5 远程仓库的移除和重命名

git remote rename 修改一个远程仓库的简写名 git remote rename pb paul 将 pb 重命名为 paul
git remote rm 想要移除一个远程仓库 git remote rm Paul

6.拓展

查看时间段内的提交日志
git log --after="2019-4-19 00:00" --before="2019-4-24 23:59" --pretty=format:"%s %an" --author="guang" --author="jack" --author="qing" > status_report

直接打开文件
git log --after="2019-4-19 00:00" --before="2019-4-24 23:59" --pretty=format:"%s %an" --author="guang" --author="jack" --author="qing" > status_report | open -a TextEdit ./status_report

简洁版
git log --after="2019-4-19 00:00" --before="2019-4-24 23:59" --pretty=format:"%s" --author="guang" --author="jack" --author="qing" > status_report | open -a TextEdit ./status_report

gitk 查看分支的结构
git am --show-current-patch 查看当前分支情况
git branch -r 查看远程分支
control+c 杀死执行命令
git diff --check 检查空白错误并将它们为你列出来
git add --patch 来部分暂存文件
git log --no-merges 来看看漂亮的格式化的项目提交历史像什么样

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342