Git 常用操作汇总——cheat sheet

0. 前言

大家好,我是多选参数的程序员,一个正在 neng 操作系统、学数据结构和算法以及 Java 的硬核菜鸡。到今天为止,关于 Git 的大坑算是给填上了。但是 Git 这个系列并不会结束,程序员偶尔看到比较好的关于 Git 的文章也会整理一番发出来,争取在 Git 的坑上再长棵树。

1. 常用命令

1.1. git 配置

# 显示 config 的配置 加--list

# 优先级:local > global > systemgit config --list --local # local 的范围是某个仓库git config --list --global # global 的范围是登录的用户git config --list --system # system 的范围是系统所有登录的用户# 配置用户 name 和 emailgit config --global user.name'your_name'

gitconfig --global user.email'your_email@domain.com'

# 清除配置信息git config --unset --global user.name

1.2. 仓库初始化

# 将执行该命令时所在的目录初始化为一个 git 仓库(如:进入某目录后执行该命令会将该目录初始化为一个 git 仓库)

gitinit

# 会在当前路径下创建和项目名称同名的文件夹,并将其初始化为 git 仓库gitinityour_project

1.3. git add

gitaddreadme.md# 将 readme.md 文件添加到暂存区

git add . # 将当前工作目录的所有文件添加到暂存区

git add -u # 把修改之后的文件(这些文件已经被管理起来了)一次性提交到暂存区

1.4. git status

gitstatus# 查看工作目录和暂存区的状态

1.5. git commit

gitcommit -m'Add readme.md'# -m 指定 commit 的信息

git commit # 这时候会跳出一个文本输入界面,让你输入更多的 commit 信息

1.6. git mv

gitmv readme readme.md# 将 git 管理的文件进行重命名

1.7. git rm

gitrm filename# 从 git 管理的文件删除某个已管理的文件,同时把修改的情况添加到暂存区

1.8. git log

gitlog# 只查看当前分支(Head所指的分支)的log情况

gitlog--oneline # 简洁的显示版本更新信息

gitlog-n2  # n2 代表查看最近两次commit历史

gitlog-2#2代表查看最近两次commit历史

gitlog-n2 --oneline # 简洁的显示最近两次的版本更新信息

gitlogbranch_name # 后面跟上分支名表示查看该分支的log日志

gitlog-all # 列出所有分支的log

gitlog--all --graph # 以图形化的方式查看

gitlog--oneline --all # 以简洁的方式查看所有分支的log

gitlog--oneline --all -n4# 以简洁的方式查看所有分支的log

git helplog# 以web的方式查看log的帮助文档,等同于

git help --weblog# 和上面那条效果一样

2. 分支相关

gitbranch -v# 查看本地分支的详细情况

git branch -a # 查看所有分支,包括远端分支,但没有过于详细的信息

git branch -av # 查看所有分支情况

git branch branch_name hash_value # 创建一个新的分支,基于 hash_value 的这个 commit 创建一个新的分支,hash_value 可以省略,那么默认是基于当前分支的最后一个 commit 创建。

git branch -d branch_name

git branch -D branch_name  # 这个分支已经有了一些 commit

git checkout branch_name # 切换分支

git checkout master

git checkout -b branch_name git_id # 创建一个新的分支并切换过去,git_id可以是hash_value,也可以是某个分支的名字(分支的名字其实就指向了某个 commit)

git checkout -b temp 9ef147d

git checkout -b temp2 master

git checkout hash_value  # 分离头指针

3. 比较

gitdiff hash_value1 hash_value2# hash_value1 对应的 comimit 和 hash_value2 对应的 commit 进行比较

git diff hash_value1 hash_value2 -- file_name1 file_name2 # 在上述基础之上,只比较 file_name1、file_name2 这两个文件

git diff branch_name1 branch_name2 # 对两个分支进行比较,也可以跟 -- 只看某些文件

git diff HEAD HEAD^  # HEAD 指向的 commit 与该 commit 的父亲 commit 进行比较

git diff HEAD HEAD^^ # HEAD 指向的 commit 与该 commit 的父亲的父亲 commit 进行比较

git diff HEAD HEAD~  # HEAD 指向的 commit 与该 commit 的父亲 commit 进行比较

git diff HEAD HEAD~1 # 同上

git diff HEAD HEAD~2 # HEAD 指向的 commit 与该 commit 的父亲的父亲 commit 进行比较

git diff --cached  # 暂存区和 HEAD 做比较,也可以跟 -- 只看某些文件

git diff      # 工作目录和暂存区中所有文件进行比较,也可以跟 -- 只看某些文件

4. 版本历史更改

gitcommit --amend# 最近一次 commit 的 message 修改

git rebase -i hash_value # 交互文件中选择 reword,老旧 commit 的 message 修改。hash_value,是需要的 commit 的父亲 commit 的 hash_value

git rabase -i hash_value # 交互文件中选择 squash,多个连续 commit 合并成一个,hash_value 同上

git rebase -i hash_value # 交互文件中选择 squash,把间隔的 commit 移到一块,即可合并成一个,hash_value

git rebase origin/master # 把当前分支基于 origin/master 做 rebase 操作,也就相当于把当前分支的东西加到 origin/master 中

5. 回滚操作

gitresetHEAD# 暂存区恢复成和 HEAD 一样

git reset HEAD -- file_name1 file_name2 # 暂存区部分文件变得跟 HEAD 一样

git checkout -- file_name # 工作目录指定文件恢复为和暂存区一样

git checkout -- *|. ## 工作目录全部文件恢复为和暂存区一样

git reset --hard hash_value # 把 HEAD、暂存区、工作目录都回滚到 hash_value 所代表的 commit 中。

git reset --hard  # 把暂存区里面的修改去掉,也就是让暂存区、工作目录默认恢复到 HEAD 的位置

6. 工作目录、暂存区状态保存

gitstash# 把相应的修改内容给存下来,之后 git status 查看的话又变为什么都没改变的了

git stash list # 查看存下来的内容

git stash apply # 存下来的内容又恢复了,但是存下来的内容还在 stash 中

git stash pop  # 存下来的内容恢复了,但是存下来的内容也没了

7. 合并

gitmergebranch_name1 branch_name2

gitmergehash_value1 hash_value2

gitmerge--squash # 以 squash 方式进行 merge

8. Git 对象操作

gitcat-file -t|p|s hash_value# 显示版本库对象的内容,类型及大小信息

git cat-file -t hash_value  # 查看版本库对象的类型

git cat-file -p hash_value  # 查看版本库对象的内容

git cat-file -s hash_value  # 查看版本库对象的大小

9. Git 远端操作

git remote add<远端名><远端仓库地址># 这边远端名的意思是远端仓库的别名,push、pull 都将用到远端名

git remote -v  # 查看远端仓库连接情况git remote set-url<远端名>你新的远程仓库地址 # 修改远端仓库地址

git remote rm<远端名># 删除远端仓库

git clone<远端仓库地址># 把远端仓库 clone 下来

git clone --bare<远端仓库地址># bare 是指不带工作目录,也就相当于只 clone .git 目录

git push<远端名><本地分支名>

git push -u<远端名><本地分支名># -u 表示将本地分支的内容推到远端分支,并且将本地分支和远端分支关联起来

git push -u origin master # 表示把本地 master 分支的内容推到远端分支 origin/master,并且将本地分支 master 和远端分支 origin/master 关联起来git push # 这条命令也可以使用,默认是将当前本地所在分支推到相关联的远端分支git fetch<远端名><本地分支名>

git fetch origin master # 将远端分支 origin/master fetch 到本地git pull<远端名><本地分支名># 将远端分支 fetch 到本地,并且将远端分支和本地所处分支进行合并

git pull --rebase # 以 rebase 方式进行合并,也就是将本地分支 rebase 到远端分支

最后,小编想说:我是一名python开发工程师,

整理了一套最新的python系统学习教程,

想要这些资料的可以关注私信小编“01”即可(免费分享哦)希望能对你有所帮助.

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

推荐阅读更多精彩内容

  • 参考git详细教程:一小时学会git 1. git的分区 工作区(Working Directory)---->暂...
    息息小眠虫阅读 877评论 0 0
  • git 仓库特点 使用快照流 近乎所有操作都是本地执行 一般只添加数据三种状态:modified -> commi...
    大雄的学习人生阅读 803评论 0 8
  • Git 学习笔记 --- 安装和基本配置 基本资料 GitHub地址 https://github.com/ 感谢...
    陈小陌丿阅读 355评论 0 0
  • 看懂下图,大概就可以记住日常常用的几个命令了,文章后面列出列不同状态场景下常用的命令。 常用命令 1. 新建代码...
    Stool阅读 318评论 0 0
  • 说明,参考1:http://www.ruanyifeng.com/blog/2015/12/git-cheat-s...
    福霜阅读 338评论 0 0