您的位置:首页 > 其它

Git命令与使用详细教程

2017-12-21 08:36 417 查看

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

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

目录

Git 简介

Git 安装

===基础教程===

Git 基本工作流程

基本流程介绍

提交修改 git add /git commit

添加远程仓库 git remote add

拉取修改 git pull

推送修改 git push

===进阶教程===

Git的几种对象

blob

tree

commit

tag

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 reset

Git 重写历史 git revert

Git 删除未被跟踪的文件 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 ] – file xx 与 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 命令详解

2.commit 信息的书写规范

.

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 详解 https://www.cnblogs.com/gbyukg/archive/2011/12/12/2285419.html

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

http://blog.csdn.net/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={2010-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={2010-04-18}



复合指令

git –oneline –decorate –graph –all



git reflog 示例

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



回到顶部

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

Git 管理 修改与历史

git checkout 还原工作区

参考文章:

1.git checkout 命令详解

https://www.cnblogs.com/hutaoer/archive/2013/05/07/git_checkout.html

2.Git学习笔记04–git checkout

https://www.cnblogs.com/craftor/archive/2012/11/04/2754147.html

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

https://www.cnblogs.com/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.

表格

Markdown Extra 表格语法:

项目价格
Computer$1600
Phone$12
Pipe$1
可以使用冒号来定义对齐方式:

项目价格数量
Computer1600 元5
Phone12 元12
Pipe1 元234

定义列表

Markdown Extra 定义列表语法:
项目1
项目2
定义 A

定义 B

项目3
定义 C

定义 D

定义D内容

代码块

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

@requires_authorization
def somefunc(param1='', param2=0):
'''A docstring'''
if param1 > param2: # interesting
print 'Greater'
return (param2 - param1 + 1) or None
class 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 数学公式,详见math.stackexchange.com.

行内公式,数学公式为:Γ(n)=(n−1)!∀n∈N。

块级公式:

x=−b±b2−4ac−−−−−−−√2a

更多LaTex语法请参考 这儿.

UML 图:

可以渲染序列图:

Created with Raphaël 2.1.2张三张三李四李四嘿,小四儿, 写博客了没?李四愣了一下,说:忙得吐血,哪有时间写。

或者流程图:

Created with Raphaël 2.1.2开始我的操作确认?结束yesno

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

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

离线写博客

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

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

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

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

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

浏览器兼容

目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。

IE9以下不支持

IE9,10,11存在以下问题

不支持离线功能

IE9不支持文件导入导出

IE10不支持拖拽文件导入

这里是 脚注 的 内容.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: