700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Git命令与使用详细教程

Git命令与使用详细教程

时间:2018-09-14 12:01:21

相关推荐

Git命令与使用详细教程

持续更新中。。。。。。。。

由于是迭代开发版本,对于其中内容编排或者内容有看法的朋友麻烦在评论区里踊跃留言

目录

Git 简介

Git 安装

===基础教程===

Git 基本工作流程

基本流程介绍提交修改 git add /git commit添加远程仓库 git remote add拉取修改 git pull推送修改 git push

===进阶教程===

Git的几种对象

blobtreecommittag

Git 工作区/暂存区/版本库

什么是工作区 与 暂存区查看工作区 与 暂存区 git status将工作区的内容加到暂存区 git add 工作区/暂存区/历史版本 对比 git diff

Git 查看提交记录

Git提交 git commit查看版本提交内容 git show查看目录中对象的SHA-1 Hash git ls-tree查看提交记录 git log / git reflog

Git 管理 历史与修改

Git 还原工作区 git checkout Git 还原暂存区 git resetGit 重写历史 git revertGit 删除未被跟踪的文件 git clean

Git 分支管理

创建与切换分支 git branch合并分支 git merge删除分支 本地/远程 git branch -d/-D 解决冲突分支管理策略

git-flow分支管理策略

Git 远程操作

Git 用户信息的设置 Git的远程库配置Git的本地分支与远程分支对应关系配置

标签管理

标签的作用标签的相关管理指令(增/删/查/)

Git的一些其他配置

忽略特殊文件 .gitignore配置别名

Git简介

摘自百度

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git的读音为/gɪt/。

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git安装

//TODO : 待编写

===基础教程===

//TODO : 待编写

===进阶教程===

Git的几种对象

Git使用40个16进制字符的SHA-1 Hash来唯一标识对象

如:dbfc931bcbfd5929114f1c7c708cfa8251cb7b4b

blob

文本文件,二进制文件或者链接文件

tree

目录

commit

历史提交版本

tag

指向某一个历史提交版本

相互之间关系:

回到顶部

=====分割线=======

Git 工作区/暂存区/版本库

工作区 /暂存区 /版本库

工作区

工作区也就是我们平时的工作目录,也就是编辑文件的地方

下面看一个工作区的实例

版本库

在工作区中有一个隐藏文件 .git , git的历史提交信息就存放在了.git 目录下, .git 又称为git 的版本库。

.git文件夹内部内容

暂存区

Git暂存区是保存修改文件的地方

Git将修改存放到暂存区,暂存区实际实在哪里呢,我们打开Git 版本库目录。然后在工作区做些修改,并把这些修改添加到暂存区,可以看到 Stage(index 文件) 跟着发生了变动,其实Stage(index 文件)其实记录的就是暂存的内容

版本库

下面看一张图看一下它们之间的关系:

1.将工作区修改的文件添加到暂存区

2.见暂存区的内容进行提交

3.可以用历史版本还原工作区与暂存区

查看工作区 与 暂存区 git status

git status 命令用于显示工作目录和暂存区的状态。使用此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。git status不显示已经commit到项目历史中去的信息。看项目历史的信息要使用git log.

在 windows git自带的命令模拟器下

对于 没有加到暂存区 / 没有被跟踪 到暂存区的文件会用红色表示

对于 加到暂存区 的文件会用绿色表示

示例:

将工作区的内容加到暂存区 git add

该部分参考以下文章 git add 文章

git add命令主要用于把我们要提交的文件的信息添加到索引库中。当我们使用git commit时,git将依据索引库中的内容来进行文件的提交。

常用的命令有

git add ( git add .)

git add -u [path]

git add -A [path]

git add . 是我在工作中最常用的指令,其实就是 git add [.] // . 即 表示当前的工作目录

git add [< path >] 表示 add to index only files created or modified and not those deleted

我通常是通过git add < path >的形式把我们< path >添加到索引库中,< path >可以是文件也可以是目录。

git不仅能判断出< path >中,修改(不包括已删除)的文件,还能判断出新添的文件,并把它们的信息添加到索引库中。

git add -u 表示 add to index only files modified or deleted and not those created

git add -u [< path >]: 把< path >中所有tracked文件中被修改过或已删除文件的信息添加到索引库。它不会处理untracted的文件。

省略< path >表示.,即当前目录。

git add -A: [< path >]表示把< path >中所有tracked文件中被修改过或已删除文件和所有untracted的文件信息添加到索引库。

省略< path >表示.,即当前目录。

工作区/暂存区/历史版本 对比 git diff

git diff工作区暂存区之间的差异

git diff –cached (HEAD)暂存区历史提交(头指针所指向分支的差异)之间的差异

git diff HEAD工作区历史提交(头指针所指向分支的差异) 之间的差异

git diff [ – cached ] [Commit ID ] – filexx 与 yy指定文件之间的差异

初始状态

Step1 修改工作区中的文件

修改test1 test2 各加入一行 Hello world

git status 查看工作区/暂存区的状态

查看 工作区 与 暂存区 之间的差异 git diff

绿色表示 工作区

红色表示 暂存区

查看 暂存区 与 历史提交 之间的差异 git diff – cached

查看 工作区 与 历史提交 之间的差异 git diff HEAD

红色 表示 历史提交

绿色 表示 工作区

Step2 将工作区的修改提交到暂存区

将修改加到暂存区中

查看 工作区 与 暂存区 之间的差异 git diff

查看 暂存区 与 历史提交 之间的差异 git diff – cached

查看 工作区 与 历史提交 之间的差异 git diff HEAD

Step3 提交一个新版本

由于新提交了一个版本,所以

查看 工作区 与 暂存区 之间的差异 git diff

查看 暂存区 与 历史版本 之间的差异 git diff – cached

查看 工作区 与 历史版本 之间的差异 git diff HEAD

都不存在差异

回到顶部

=====分割线=======

Git 查看提交记录

Git提交 git commit

参考文章

1.git commit 命令详解

mit 信息的书写规范

.

Git 提交 / Git commit

git commit

提交 暂存区中的文件,

不包括工作区未加入暂存区的文件(tracked file) , 工作区未被追踪的文件(untracked file)

git commit -a

提交 暂存区中的文件 / 工作区中被追踪的文件(tracked file) ,

不包括 工作区中未被追踪的文件(untracked file)

git commit -m “commit message” 提交时简写提交信息

Step1 git commit

git commit 测试,同时修改 test1.txt , test2.txt 两个文件

git add text.txt 加 text.txt 加入到 暂存区

git status 查看现在 暂存区的状态

git commit 将暂存区的文件提交上去

填写commit 描述信息

利用git status ,可以看到 test.txt 并没被提交上去

Step2 git commit -a

git commit -a 测试, 同时修改 test.txt test2.txt 加入一行内容, 并新建一个test3.txt 文件

将test.txt 加入到暂存区中, 利用git status 查看工作区与暂存区的状态

git commit -a 强制将暂存区 与 traked但是没被加入到暂存区的文件 提交上去 , 不包括 untracked 文件 (未被追踪的文件)

填写提交信息

git status 查看提交之后的工作区与暂存区,可以发现 test3.txt 并没有提交上去

Git commit 的书写规范

七条很棒的 git 提交信息规则

用一个空行隔开标题和正文

限制标题字数在 50 个字符内

用大写字母写标题行

不要用句号结束标题行

在标题行使用祈使语气

正文在 72 个字符处换行

使用正文解释是什么和为什么,而不是如何做

查看版本提交内容 git show

git show [options] < object >…​

Shows one or more objects (blobs, trees, tags and commits).

用来显示不同的对象具体内容,可以显示 blobs(文本) trees(目录) tags(标记) commit(提交)

示例:

git show commitID

git show trees

git show blobs

Step1 构建测试例子,如图

Step2 通过git log –oneline 查看历史提交记录

Step3 git show commitID 查看某个历史版本的提交内容

Step4 git show trees 查看文件夹中的修改

先用git ls-tree commitID 看下tree 对象的 SHA-1 hash

再用git show tree 对象 去看里面的内容

Step5 git show blobs 查看文本文件 以及 文本文件的变动

查看目录中对象的SHA-1 Hash git ls-tree

git ls-tree objects (blobs / tree / tag / commit ) 可以快速的查到 blob/tree 对象 的 SHA-1 hash 码

git ls-tree commit

git ls-tree tree

git ls-tree object

示例:

git ls-tree commit

git ls-tree tree

git ls-tree object

查看提交记录 git log / git reflog

参考文章:

1.Git log 详解 /gbyukg/archive//12/12/2285419.html

2.Git 命令详解(5) - git log

/wh_19910525/article/details/7468549

git log [< options >] [< revision range >] [[ –] < path >…​] git 查看 完整的 历史提交信息

git reflog < subcommand > < options > 记录 HEAD头指针 的引用信息

git log 与 git reflog 的区别

git reflog 可以查看所有分支的所有操作记录(包括(包括commit和reset的操作),包括已经被删除的commit记录。

git log则不能察看已经删除了的commit记录

git log 常用参数

git log

1.B向上翻页

2.F向下翻页

3.Q退出

4.回车(enter) 单行操作

-n

(n是一个正整数),查看最近n次的提交信息

-p

选项展开显示每次提交的内容差异

[–] < path >… / – fileName (简写)

fileName为任意文件名,查看指定文件的提交信息。(注:文件名应该放到参数的最后位置,通常在前面加上–并用空格隔开表示是文件。)

–branches[=< pattern >] / branchName (简写)

默认: 不加参数只显示当前分支的提交记录

branchName为任意一个分支名字,查看莫个分支上的提交记录。同上,需要放到参数中的最后位置处。(注:如果分支名与文件名相同,系统会提示错误,可通过–选项来指定给定的参数是分支名还是文件名。

–author=someone

查询指定作者的提交记录

–pretty

按指定格式显示日志信息,可选项有:oneline,short,medium,full,fuller,email,raw以及format:< string >,默认为medium,可以通过修改配置文件来指定默认的方式。

选项 说明

%H 提交对象(commit)的完整哈希字串

%h 提交对象的简短哈希字串

%T 树对象(tree)的完整哈希字串

%t 树对象的简短哈希字串

%P 父对象(parent)的完整哈希字串

%p 父对象的简短哈希字串

%an 作者(author)的名字

%ae 作者的电子邮件地址

%ad 作者修订日期(可以用 -date= 选项定制格式)

%ar 作者修订日期,按多久以前的方式显示

%cn 提交者(committer)的名字

%ce 提交者的电子邮件地址

%cd 提交日期

%cr 提交日期,按多久以前的方式显示

%s 提交说明

示例:git log –pretty=format:”%an %ae %ad %cn %ce %cd %cr %s” –graph

–since,–affter 仅显示指定时间之后的提交(不包含当前日期)

–until,–before 仅显示指定时间之前的提交(包含当前日期)

示例: git log –before={3,weeks,ago} –after={-04-18}

–stat 列出文件的修改行数

–graph 以简单的图形方式列出提交记录

常用组合指令

–oneline –decorate –graph –all

–decorate 引用的信息

–graph 图形化的信息

–all 所有分支的信息

git log 示例

git log

git log -p 显示提交之间的差异信息

git log –pretty=online 对于 每条 提交信息 只用一行显示

git log –branches[=< pattern >]

git log –author=someone

git log –since

–since 不包含指定日期

–before 包含指定日期

git log –before={3,weeks,ago} –after={-04-18}

复合指令

git –oneline –decorate –graph –all

git reflog 示例

git reflog 维护了 头指针 HEAD 的移动记录

回到顶部

=====分割线=======

Git 管理 修改与历史

git checkout 还原工作区

参考文章:

1.git checkout 命令详解

/hutaoer/archive//05/07/git_checkout.html

2.Git学习笔记04–git checkout

/craftor/archive//11/04/2754147.html

3.代码回滚:git reset、git checkout和git revert区别和联系

/houpeiyong/p/5890748.html

用法一:git checkout [ -q ] [< commit >] [ – ] < paths >…

用法二:git checkout [< branch >]

用法三:git checkout [ -m ] [ [ -b ] –orphan ] < new_branch >] [< start_point >]

最常见用法:

git checkout BranchName 检出分支。实质:用Branch 所指向的分支 的最新提交 还原工作区 与 暂存区

git checkout CommitID – < file > … 用 某个历史提交 还原 工作区 与 暂存区

git checkout – < file > … 用 暂存区的文件 还原 工作区

示例

git checkout BranchName 检出分支

git checkout CommitID – < file > … 用 某个历史提交 还原 工作区 与 暂存区

查看提交日志,查看 test.txt 文件,选择合适的检出版本

检出历史提交版本的 test.txt , 查看 工作区 / 暂存区 / 历史版本 之间的差异

查看工作区中检出的 test.txt 文件

还原至最初始的状态

Step1 用HEAD 还原暂存区

Step2 用暂存区的 test.txt 还原工作区

git checkout – < file > … 用 暂存区的文件 还原 工作区

对工作区做一些修改

然后用 暂存区 还原 工作区

git reset 还原暂存区

git reset BranchName 用Branch 所指向的分支 的最新提交 还原 暂存区

git reset CommitID – < file > … 用 某个历史提交 还原 暂存区

..

git revert 重写历史,产生新的提交,覆盖之前提交

git revert HEAD 将上一次的提交所做的修改, 全部撤销。产生一个新的提交,覆盖之前的提交。

git clean 删除未被跟踪的文件

git clean 清除 .gitignore 之外的文件

git clean -n

git clean -f

回到顶部

=====分割线=======

回到顶部

=====分割线=======

欢迎使用Markdown编辑器写博客

本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:

Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键

快捷键

加粗Ctrl + B斜体Ctrl + I引用Ctrl + Q插入链接Ctrl + L插入代码Ctrl + K插入图片Ctrl + G提升标题Ctrl + H有序列表Ctrl + O无序列表Ctrl + U横线Ctrl + R撤销Ctrl + Z重做Ctrl + Y

Markdown及扩展

Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— [ 维基百科 ]

使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。

本编辑器支持Markdown Extra, 扩展了很多好用的功能。具体请参考Github.

表格

MarkdownExtra表格语法:

可以使用冒号来定义对齐方式:

定义列表

MarkdownExtra定义列表语法: 项目1 项目2 定义 A 定义 B 项目3 定义 C

定义 D

定义D内容

代码块

代码块语法遵循标准markdown代码,例如:

@requires_authorizationdef somefunc(param1='', param2=0):'''A docstring'''if param1 > param2: # interestingprint 'Greater'return (param2 - param1 + 1) or Noneclass SomeClass:pass>>> message = '''interpreter... prompt'''

脚注

生成一个脚注1.

目录

[TOC]来生成目录:

持续更新中由于是迭代开发版本对于其中内容编排或者内容有看法的朋友麻烦在评论区里踊跃留言目录 基础教程进阶教程 Git简介Git安装基础教程进阶教程Git的几种对象回到顶部Git 工作区暂存区版本库 工作区 暂存区 版本库查看工作区 与 暂存区 git status 将工作区的内容加到暂存区 git add工作区暂存区历史版本 对比 git diff Step1 修改工作区中的文件Step2 将工作区的修改提交到暂存区Step3 提交一个新版本 回到顶部Git 查看提交记录 Git提交 git commit Git 提交 Git commit Step1 git commit Step2 git commit -a Git commit 的书写规范查看版本提交内容 git show查看目录中对象的SHA-1 Hash git ls-tree查看提交记录 git log git reflog git log 常用参数git log 示例git reflog 示例 回到顶部Git 管理 修改与历史 git checkout 还原工作区 示例 git checkout BranchName 检出分支git checkout CommitID file 用 某个历史提交 还原 工作区 与 暂存区git checkout file 用 暂存区的文件 还原 工作区git reset 还原暂存区 git revert 重写历史产生新的提交覆盖之前提交git clean 删除未被跟踪的文件 回到顶部回到顶部 欢迎使用Markdown编辑器写博客 快捷键Markdown及扩展 表格定义列表代码块脚注目录数学公式UML 图 离线写博客浏览器兼容

数学公式

使用MathJax渲染LaTex数学公式,详见.

行内公式,数学公式为: Γ(n)=(n−1)!∀n∈N 。块级公式: x=−b±b2−4ac−−−−−−−√2a

更多LaTex语法请参考 这儿.

UML 图:

可以渲染序列图:

或者流程图:

关于序列图语法,参考 这儿,关于流程图语法,参考 这儿.

离线写博客

即使用户在没有网络的情况下,也可以通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write./mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。

用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。

博客发表后,本地缓存将被删除。

用户可以选择把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。

注意:虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱

浏览器兼容

目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。IE9以下不支持IE9,10,11存在以下问题

不支持离线功能IE9不支持文件导入导出IE10不支持拖拽文件导入这里是脚注的内容. ↩

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。