文档章节

git笔记梳理

Yum51
 Yum51
发布于 2016/09/05 22:54
字数 1998
阅读 2
收藏 0

一.初识

    git是分布式版本控制系统,有别于SVN的集中式管理。两者具体的分析比较可以参考github上的这篇gib与svn的差异比较。个人观点看,git指令丰富,功能完善,还拥有github这个大杀器。

二.git的文件状态与工作区域

I:三种状态:已提交(committed)、已修改(modified)和已暂存(staged)。你的文件可能就处于其中的一种状态。已提交表示数据已经安全的保存在本地数据库中。已修改表示修改了文件,但还没保存到数据库中。已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。   

II:Git 项目中的三个工作区域的概念:

    Git 仓库(Repository):Git仓库是 Git 用来保存项目的元数据和对象数据库的地方。这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。

    工作目录(Working Directory):工作目录是对项目的某个版本独立提取出来的内容。这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。

    暂存区域(Staging Area):暂存区域 是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 

三.git指令整理

I:主体命令

1.git init               初始化操作。进入到本地想建仓库的目录, 执行此命令 ,之后便可看到 .git 这个文件夹(隐藏)

2.git add file            将文件添加到缓存

3.git status             查看状态详细信息    若加 -s 参数  则是简略显示

举例如:

   $ git status -s

     M README

    MM Rakefile

    A  lib/git.rb

    M  lib/simplegit.rb

    ?? LICENSE.txt

说明:新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M标记。 你可能注意到了 M 有两个可以出现的位置,出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区。 例如,上面的状态报告显示:README 文件在工作区被修改了但是还没有将修改后的文件放入暂存区,lib/simplegit.rb 文件被修改了并将修改后的文件放入了暂存区。 而 Rakefile 在工作区被修改并提交到暂存区后又在工作区中被修改了,所以在暂存区和工作区都有该文件被修改了的记录。

4.git rm -r  filename       删除本地仓库文件     加 -n 参数  预删除文件,并不会真的删除磁盘上文件

5.git rm  -f filename       强制删除   适用于文件在删除前做过修改并已提交到暂存区域的情况。但这样的话,删除的数据不能通过git再恢复

6.git rm --cached   filename     只删除缓存区里的文件

拓展:git rm 命令后面可以列出文件或者目录的名字,也可以使用 glob 模式。 比方说:

$ git rm log/\*.log

注意到星号 * 之前的反斜杠 \, 因为 Git 有它自己的文件模式扩展匹配方式,所以我们不用 shell 来帮忙展开。 此命令删除 log/ 目录下扩展名为 .log 的所有文件。 类似的比如:

$ git rm \*~

该命令为删除以 ~ 结尾的所有文件。

7.git mv 旧文件名 新文件名      实现对文件重命名

8.git fetch [alias]           更新本地数据文件,然后再执行 git merge [alias]/[branch] 将服务器上的任何更新合到本地的仓库中

9.git diff                 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别

具体参数应用:

尚未缓存的改动:git diff

查看已缓存的改动: git diff --cached

查看已缓存的与未缓存的所有改动:git diff HEAD

显示摘要而非整个 diff:git diff --stat

10.git reset HEAD            命令用于取消已缓存的内容。

具体参数应用信息:

$ git reset --hard <commit ID> //将本地代码回退到指定的某次commit,目录和缓存区的修改都被丢弃

$ git reset --soft <commit ID> //将HEAD指向<commit ID>所在位置,本地的修改(即<commit ID>位置之前的修改)回退到缓存区

$ git reset --mixed <commit ID> //将HEAD指向<commit ID>所在位置,本地的修改(即<commit ID>位置之前的修改)回退到工作目录

 hard/soft/mixed 是reset命令常用的三模式,默认是mixed。除此之外还有merge和keep两种模式,但是不大常用。

II:推送拉取相关

1.git remote             查看远端的仓库

2.git pull 远端仓库名         拉取远程数据仓库的数据  『合并了 git fetch 远程仓库  + git merge  远程仓库名  本地分支』

3.git remote add 远程仓库名 https://github.com/xxxx/远程仓库名.git         建立远程仓库

4.git push  远程仓库名  本地分支名      推送本地分支仓库数据到远程仓库同名分支下(git 会在远端仓库新建一个同名分支)

5.git commit -m "代码提交信息"                完成这步,对文件所做的改动便会提交到了 HEAD,但是还没到你的远端仓库。(需事先执行 git add操作)

6.git commit -a             可跳过git add   操作 , 直接将文件信息提交

7.git  clone   git项目url           拷贝一个项目到本地(事先进入本地想存放该文件的目录下)

III.git日志操作

1.git log                查看消息日志    

带有的选项含义:

--oneline  则消息以简短的形式体现

--reverse    逆向显示消息信息

--author     制定作者信息      如:  git log  --authou=kkk    -5      显示 操作为kkk的前5行记录

--before     制定多少时间以前   如:  git log --oneline   --before={1.weeks.ago}   

--after      相对应before      时间可为:   weeks  days  hours  minutes   或者直接敲数字  如: git log --oneline  --after={2016-08-02}

--graph   开启拓扑图选项

IV:git的标签操作

1.git tag <name>             用于新建一个标签,默认为HEAD,也可以指定一个commit id;

2.git tag -a <tagname> -m "blablabla..."          可以指定标签信息,或直接

        git tag 标签名         但这样就缺少了相关详细的说明

3.git tag -s <tagname> -m "blablabla..."           可以用PGP签名标签;

4.git tag                               可以查看所有标签。

5.git show tag <tagname>                     查看标签信息

6.git push --tags                          将本地所有tag一次推送到远程    注意默认情况下,git push 并不会把本地标签传到远程仓库上,需要通过命名制定上传

7.git push  远程仓库  tagname                将本地单个标签往远程仓库推

8.git fetch origin tag <tagname>                获取远程仓库的tag

9.git tag -d <tagname>                       删除本地tag         

10.git push origin --delete tag <tagname>          删除远程仓库的tag

11.git  tag -a tagname  标签校验和             可实现对标签进行后期补打标签   校验和信息的获取方式命令: git log --pretty=oneline --abbrev-commit

黄色标记即为历史提交对应的校验信息

wKiom1eiJjaygrMCAAASpIdZCvQ111.png

V:git分支操作

1.git branch                              查看分支

2.git branch -r                      查看远程分支

3.git branch  分支名                    本地创建分支

4.git checkout -b 分支名                本地创建分支,并自动切换到给分支

5.git checkout 分支名                       切换到相应的分支

6.git branch  -d 分支名                     删除本地分支

7.git push 远程仓库名  --delete <远程仓库分支名>          删除远程仓库的分支

8.git branch -m devel develop     重命名本地分支   如: 将devel修改为 develop

9.git merge  要合的分支名                  合并分支

 

附参考信息:

1.https://git-scm.com/book/zh/v2

© 著作权归作者所有

上一篇: Fabric的使用
下一篇: mysql权限管理
Yum51
粉丝 0
博文 12
码字总数 14456
作品 0
深圳
程序员
私信 提问
GitNote 基于 Git 的跨平台笔记软件正式发布

GitNote 基于 Git 的跨平台笔记软件 为什么 自从工作之后,我开始进行笔记记录,这是一个很棒的习惯.我曾经使用过 EDiary Evernote Onenote Wiz 麦库等,都是一些不错的笔记软件,但是都有一些各...

胡子大鹏
02/03
0
0
ESP8266笔记汇总

一、前言 2015年开始,随着ESP8266的横空出现,WiFi SoC大幅降价,市场模组价格一下被拉到了10元档。WiFi由于可直接入网的,在智能家居等行业中成为了应用最广泛的物联网技术。本尊贵为物联网...

iotisan
2017/02/03
0
0
LoRa学习笔记_汇总

LoRa在今年(2016年)应该是最火的物联网技术,Semtech不停攻城略地,七大洲,哦,除了南极洲,所有地区都宣布要建立国家级的LoRa网络。虽然,我大中国的运营商要做NB-IoT,但是不乏中兴、富士...

iotisan
2016/12/29
0
0
老男孩-38期脱产班赵宇恒决心书

6月七号开始上课,上课时间大概在五个半月到六个月之间,期间如下安排: 1、改变心态:0基础空杯心态,必须学好、必须坚持。 2、改陋习,早上,晚上看手机的内容除了linux 其他不看。 3、继续...

迷失的魂
2018/06/26
0
0
用这样的 Vi 配置来保存和组织你的笔记

Vimwiki 和 GitLab 是记录笔记的强大组合。 用 vi 来管理 wiki 来记录你的笔记,这听起来不像是一个符合常规的主意,但当你的日常工作都会用到 vi , 那它是有意义的。 作为一个软件开发人员,...

12%
2018/06/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

AOP的学习(1)

AOP 理解AOP编程思想(面向方法、面向切面) spring AOP的概念 方面 -- 功能 目标 -- 原有方法 通知 -- 对原有方法增强的方法 连接点 -- 可以用来连接通知的地方(方法) 切入点 -- 将用来插入...

太猪-YJ
24分钟前
2
0
一张图看懂亮度、明度、光度、光亮度、明亮度

亮度、明度、光亮度,Luminance和Brightness、lightness其实都是一个意思,只是起名字太难了。 提出一个颜色模型后,由于明度的取值与别人的不同,为了表示区别所以就另想一个词而已。 因此在...

linsk1998
昨天
3
0
Python应用:python链表示例

前言 python链表应用源码示例,需要用到python os模块方法、函数和类的应用。 首先,先简单的来了解下什么是链表?链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是...

python小白1
昨天
3
0
Source Insight加载源码

Source Insight是一个图形化的源代码查看工具(当然也可以作为编译工具)。如果一个项目的源代码较多,此工具可以很方便地查找到源代码自建的依赖关系。 1.创建工程 下图为Snort源代码的文件...

天王盖地虎626
昨天
3
0
nginx-rtmp-module的缺陷分析(二)

nginx-rtmp-module使用指令push和pull来relay媒体流数据,以便分布式部署服务。 当nginx-rtmp-module作为边缘服务器(一般不会向边缘服务器推流)时,使用pull从源服务器获取媒体流数据,俗称...

YoungSagit
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部