资源:外国网友制作的 Git Cheat Sheet

  第二次学习廖雪峰老师的Git教程,学习过程中把教程中涉及到的Git命令及总结性知识记录下来方便二次复习。

知识点

  1. 所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文本文件、网页、程序代码等等,版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“hello”,在第8行删了一个单词‘’‘world’。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但是没办法跟踪文件的变化,只能把二进制文件每次的改变串起来,也就是只知道图片从100KB变成了120KB,但是到底改变了什么,版本控制系统无法知道。

  2. 当Git无法自动合并分支时,就必须首先解决冲突。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交,合并完成

  3. 通常,合并分支时,如果可能,Git会用 Fast forward 模式,但这种模式下,删除分支后会丢掉分支信息。如果要强制禁用 Fast forward 模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息

  4. 多人协作的模式

    • 首先,可以试图用 git push origin <branch-name> 推送自己的修改

    • 如果推送失败,则因为远程分支比本地更新,需要先用 git pull 试图合并

    • 如果合并有冲突,则解决冲突,并在本地提交

    • 没有冲突或者解决冲突之后,再用 git push origin <branch-name> 推送就能成功

    • 如果 git pull 提示 no tracking information ,则说明本地分支和远程分支的链接没创建,用命令 git branch --set-upstream-to <branch-name> origin/<branch-name>

  5. 在Git工作区的根目录下创建一个特殊的 .gitignore 文件,然后把要忽略的文件名填写进去,Git就会自动忽略这些文件

Git命令

  • git init 把当前目录变成Git可以管理的仓库

    • 注意:Git在当前目录下自动创建 .git 目录,用来跟踪管理版本库,随意更改会破坏Git仓库。

  • git add 文件名 把文件添加到暂存区

    • git add hello.txt

  • git commit -m 本次提交的说明 把暂存区的所有内容提交到当前分支

    • -m 暂存区

    • 本次提交的说明 理论上可以是任何内容,但最好是有意义的内容,方便从历史记录中找到改动记录

    • git commit -m "add new words"

  • git status 查看仓库当前的状态

  • git diff 查看文件修改前后的不同

    • 显示的格式为Unix通用的diff格式

  • git log 显示从最近到最远的提交日志

    • 显示结果中出现的类似 db376e1... 的是经SHA1计算,用十六进制表示的 commit-id(版本号)

    • git log --pretty=oneline 添加参数简化输出信息

    • git log --graph 显示分支合并图

    • 输入 q 退出

  • git reset 版本回退

    • git reset --hard commit-id

      • 版本号可以不写全,写到具有区分度的前几位就可以,如一共有两个版本号a1253f...a135ed... ,则写到前3位就可以

    • git reset --hard HEAD^

      • HEAD 表示当前版本

      • HEAD 后面加几个 ^ 就表示往上几个版本,如 HEAD^ 表示往上一个版本

      • HEAD 后面加 ~数字n 表示往上n个版本,如 HEAD~100 表示往上100个版本

    • 注意:因为在cmd^是转义符号,相当于Linux中的\,当出现在行尾的时候含义是这行还没写完,无视行尾的换行符,下行的内容实际执行的时候理解为直接接在上一行尾,所以^结尾的时候提示More?,就是提示输入下一行的内容,不输入则会报错。解决方法有两个,一是用双引号包裹,强行指定为字符串内容"^",二是输入双倍的^,如^^,前一个转义后一个,代表一个没有特殊含义的字符^本身。

  • git reflog 记录操作过的每一次命令

  • git checkout -- 文件名 把该文件在工作区的修改全部撤销

    • 如果文件自修改后还没有被放到暂存区,那么撤销后就回到和版本库一模一样的状态

    • 如果文件添加到暂存区后,又作了修改,那么撤销后就回到添加到暂存区后的状态

    • 总之,就是让这个文件回到最近一次 git commitgit add 时的状态

    • 命令中的 -- 很重要,没有 -- ,就变成了“切换到另一个分支”的命令

  • git rm 删除文件

    • 如果一个文件已经被提交到版本库,那么永远不用担心误删,但是要小心,只能恢复文件到最新版本,会丢失最近一次提交后修改的内容

    • 注意:从来没有被添加到版本库就被删除的文件,是无法恢复的

  • git remote add origin git@server-name:path/repo-name.git 关联远程仓库

    • 如使用GitHub,server-name 就是github.com, path 就是账户名,repo-name就是仓库名

  • git remote 查看远程仓库信息

    • git remote -v 显示更详细的信息

  • git push 把本地仓库的内容推送到远程仓库,实际上是把当前分支 master 推送到远程仓库

    • 由于新建的远程仓库是空的,第一次推送 master 分支时,加上 -u 参数,Git不但会把本地的 master 分支内容推送到远程仓库新的 master 分支,还会把本地的 master 分支和远程的 master 分支关联起来,在以后的推送或者拉取时就可以简化命令

  • git pull 把远程仓库内容拉取到本地仓库

  • git clone 克隆远程仓库到本地

    • Git支持多种协议,默认的 git:// 使用 ssh 协议,也可以使用 https 等其它协议

    • 使用 ssh,完整命令为 git clone git@github.com:user-name/repo-name.git

    • 使用 https,完整命令为 git clone https://github.com/user-name/repo-name.git

    • 使用 https 速度慢,且每次推送都必须输入口令,但在只开放 http 端口的公司内部就只能使用 https

  • git branch xxx 创建 xxx 分支

  • git branch 列出所有分支,在当前分支前标注 *

  • git branch -d xxx 删除 xxx 分支

  • git branch -D xxx 强行删除还未被合并的 xxx 分支

  • git checkout xxx 切换到 xxx 分支

  • git checkout -b xxx 创建并切换到 xxx分支

  • git switch xxx 切换到 xxx 分支

    • git switch -c xxx 创建并切换到 xxx 分支

  • git merge xxx 合并 xxx 分支到当前分支

  • git merge --no-ff 表示禁用 Fast forword 模式

  • git stash 封存当前工作现场

  • git stash list 查看所有保存的工作现场

  • git stash apply 恢复封存的工作现场

  • git stash drop 恢复工作现场后,删除对应stash内容

  • git stash pop 恢复工作现场的同时,删除对应stash内容

  • git stash apply stash@{数字n} 恢复数字n对应的工作现场

  • git cherry-pick commit-id 复制一个特定的提交到当前分支

    • Git自动给当前分支做了一次提交,注意这次提交的commit不同于复制的提交,只是两者改动相同

  • git tag 查看所有标签

    • 标签不是按时间顺序列出,而是按字母顺序列出

    • 标签总是和某个 commit 挂钩,如果这个 commit 既出现在 master 分支,又出现在 dev 分支,那么在这两个分支上都能看到这个标签

  • git tag xxx 给当前所在分支打上 xxx 标签

    • 标签默认打在最新提交的 commit 上,可以用 git tag xxx commit-id 给指定提交打标签

    • 可以创建带有说明的标签,用 -a 指定标签名,用 -m 指定说明文字,如 git tag -a v1.0 -m "version 0.1 released" commit-id

    • 创建的标签都存储在本地,不会自动推送到远程,所以,打错的标签可以在本地安全删除

  • git tag -d xxx 删除本地 xxx 标签

    • 如果标签已经推送到远程,要删除远程标签需要先本地删除,然后从远程删除,命令格式为 git push origin :refs/tags/v0.9 ,可以登录GitHub查看是否成功删除远程标签

  • git show xxx 查看 xxx 标签的信息

  • git push origin xxxxxx 标签推送到远程

  • git push origin --tags 一次性推送全部尚未推送到远程的本地标签

  • git config --global alias.x xxxx 设置为 xxx 的别名

cmd命令

  • cd 切换目录

  • md 新建文件夹

  • mkdir 新建文件夹

  • dir 查看文件夹

  • rd 删除文件夹

  • type nul> 新建文件

  • type 查看文件内容

  • del 删除文件

Git学习笔记01--常用Git命令、cmd命令及Git总结性知识的更多相关文章

  1. git学习笔记:常用命令总结

    本文根据廖雪峰的博客,记录下自己的学习笔记.主要记录常用的命令,包括仓库初始化.添加文件.提交修改.新建分支.内容暂存.分支管理.标签管理等内容. git是分布式版本控制系统. 首先是安装,从官网下载 ...

  2. Socket 学习笔记 01 常用函数

    常用方法 创建套接字: socket()    绑定本机端口: bind()    建立连接: connect(),accept()    侦听端口: listen()    数据传输: send() ...

  3. Git学习笔记(四)

    一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...

  4. git 学习笔记6--remote & log

    git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...

  5. 【转帖】Git学习笔记 记录一下

    本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...

  6. Pro Git 学习笔记

    Pro Git 学习笔记 文档地址:Pro Git原文地址:PRO GIT 学习笔记 git常见命令 1.Git起步 初次运行Git前的配置 用户信息 git config --global user ...

  7. Git学习笔记 (二)

    Git学习笔记(二) 突然发现,学习新知识新技能,都得经常温故使用,这样才能日益精进.最近学习的Git是因为加入了课题组,在学习做一些后台,由于后台开发会牵扯到多人开发,所以学会Git这一代码管理工具 ...

  8. Git学习笔记(10)——搭建Git服务器

    本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...

  9. Git学习笔记---协作的一般流程

    一般的操作流程 1.pull 王小坤与另一个同事张大炮一起开发一个项目,张大炮昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服 ...

  10. GIT学习笔记(1):创建版本库

    GIT学习笔记(1):创建版本库 创建版本库 1.创建合适目录并初始化为仓库 版本库即需要交由Git进行版本控制的目录,其下所有文件的修改.删除,Git都能跟踪还原. 说明:初始化后,当前目录下会多出 ...

随机推荐

  1. join的使用

    我们还是以这四张表为例:1.left joinselect * from student a left join score b on a.sid=b.sid; 也就是说A中的元素都会显示,没有值的用 ...

  2. js循环和调用

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. JavaScript随机生成布尔值

    //方法一 var rand = Boolean(Math.round(Math.random())); conosole.log(rand) // 方法二: var arr = [true,fals ...

  4. spring源码学习(二)

    本篇文章,来介绍finishBeanFactoryInitialization(beanFactory);这个方法:这个方法主要是完成bean的实例化,invokeBeanFactoryPostPro ...

  5. ofd电子文档内容分析工具(分析文档、签章和证书)

    前言 ofd是国家文档标准,其对标的文档格式是pdf.ofd文档是容器格式文件,ofd其实就是压缩包.将ofd文件后缀改为.zip,解压后可看到文件包含的内容. ofd文件分析工具下载:点我下载.获取 ...

  6. Blazor之ABC

    .net core正式推出了Blazor, 正好在一个小项目里试用一下. 建立项目 因为基于WebAssemble的客户端Blazor还不是正式版, 为了避免不必要的麻烦,我试用服务端的Blazor. ...

  7. 百度ERNIE 2.0强势发布!16项中英文任务表现超越BERT和XLNet

    2019年3月,百度正式发布NLP模型ERNIE,其在中文任务中全面超越BERT一度引发业界广泛关注和探讨. 今天,经过短短几个月时间,百度ERNIE再升级.发布持续学习的语义理解框架ERNIE 2. ...

  8. 初识mysql索引 - 小白篇

    :接触mysq也有两年左右的时间了,但是对该数据库的理解自认还比较初级,看过很多文章,也看过一些相关的书籍,依然小白....(这里个人总结是两点主要原因:1.对mysql的学习大部分都是源于看一些杂七 ...

  9. 使用asp.net core 3.0 搭建智能小车2

    上一篇中我们把基本的运行环境搭建完成了,这一篇中,我们实战通过树莓派B+连接HC-SR04超声波测距传感器,用c# GPIO控制传感器完成距离测定,并将距离显示在网页上. 1.HC-SR04接线 传感 ...

  10. 一些 bypass WAF 技巧

    也是之前讲课写的,现在搬运过来 --- WAF所处的位置 * 云WAF * 硬件WAF * 软件WAF * 代码级WAF   WAF的绕过 1 架构层    1 对于云WAF,寻找真实ip       ...