`

Git 笔记(1) 基础

    博客分类:
  • Git
 
阅读更多

 

Git基础要点:

1:直接快照而非比较差异

       一般版本控制系统(CVS Subversion等)每次记录有哪些文件做了更新,以及都更新了哪些行的什么内容。



 

Git并不保存这些数据的前后差异。而是每次更新时,纵览所有文件的指纹信息(相当于文件摘要)并对文件做一快照。然后保存一个指向这次快照的索引。为了提高性能。如果文件没有变化,Git不会再次保存,而只对上一次的快照做一次链接。


 

2:近乎所有操作都可本地执行。

Git中的绝大多数操作只需访问本地文件和资源。因为Git在本地磁盘就保存着所有有关当前项目的历史更新,所以处理飞快。所以在没有网络时你也可以频繁的提交更新。等到有网络时再上传到远程的镜像仓库。

 

3:时刻保持数据的完整性

       保存到Git之前,所有数据都要进行内容的校验和计算,并将此结果作为数据的唯一标识和索引。Git使用SHA-1算法计算数据的校验和,通过文件的内容或目录的结构计算出一个SHA-1哈希值,作为指纹字符串。该字符串由40和十六进制字符组成,例如:

23acdgadg532dgadg35ac63267asdfa3432sdfx

 

 

git config --list查看Git已有配置

git config user.name  查看单独某个变量名

git config core.editor=notepad  修改编辑器



 

初始化git

git init

git add *.c  添加某一系列文件

git add aa.java 添加单个文件

git commit –m ‘initial project version’ 提交

 

git clone git://github.com/schacon/grit.git   导出项目  可以看到当前目录下生成girt的项目

git clone git://github.com/schacon/girt.git  mygrit  重命名导出项目为mygri

 



文件变化的状态周期:

untracked :未跟踪 (新添加的文件未执行add命令,或已删除的文件)

unmodified:未更新,刚clone下来的项目文件都为unmodified

modified:已修改,做过修改的文件

staged:本地暂存的文件

 

git status 查看哪些文件当前处于什么状态

 

提交:

git commit 提交代码

git commit –m ‘first commit’  使用-m参数直接加注释

git commit –a –m ‘second commit’(添加-a参数) 使那些处于修改状态,但没有暂存的文件,直接提交,跳过了add,暂存这一步

 

删除:

1git rm filename 删除未暂存的文件,手工删除后,直接运行命令,然后提交完成删除

2.删除已暂存的文件,且之前未修改过,也可直接运行 git rm filename,然后提交完成删除

(如果做了上述误删操作,可用git reset HEAD filename 撤销“删除“的暂存操作,再用git checkout – filename,取回被删除且未被修改过的文件,相当于检出操作)

3.删除之前修改过,并且已经暂存的文件,则需要使用强制删除 git rm –f filename,使用此操作无法恢复你的修改内容,为永久删除fforce

4.从暂存区删除,但仍然希望保留在当前工作目录中。git rm --cached filename,后面可以使用文件或目录的名字,也可以使用glob模式。比如:git rm log/*.log 删除log目录先的.log结尾文件

 

移动文件:

<!--[if !supportLists]-->1.  <!--[endif]-->git mv file_from file_to  重命名,其实运行 git mv 相当于运行了以下三条命令,

$ rm file_from file_to

$ git rm file_from

$ git add file_to

 

 

查看提交历史:

git clone git://github.com/schacon/simplegit-progit.git  用于实验地址

git log

git log –p -2  -p显示每次提交的内容差异,-2显示最近两次更新

git log –stat   显示简要的增改行数统计

git log –pretty=oneline

git log –pretty=short   full  fuller 可以自己尝试

最有意思的是fromat,这样的输出便于后期程序提取分析

git log –pretty=fromat:”%h - %an,%ar : %s”


以下列出常用的格式占位符写法及其代表的含义

选项 说明

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

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

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

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

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

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

%an 作者(author)的名字

%ae 作者的电子邮件地址

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

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

%cn 提交者(committer)的名字

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

%cd 提交日期

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

%s 提交说明

 

在使用format或者oneline,再加上--graph选项,可看到提交所在分支的分化合并

git log –pretty=oneline –graph


以下列出其他常用的选项

选项 说明

-p 按补丁格式显示每个更新之间的差异。

--stat 显示每次更新的文件修改统计信息。

--shortstat 只显示 --stat 中最后的行数修改添加移除统计。

--name-only 仅在提交信息后显示已修改的文件清单。

--name-status 显示新增、修改、删除的文件清单。

--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。

--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。

--graph 显示 ASCII 图形表示的分支合并历史。

--pretty 使用其他格式显示历史提交信息。可用的选项包括 onelineshortfullfuller format(后跟指

定格式)。

 

 

限制输出长度:

git log --since=2.weeks  最近两周内提交的

git log --since=”2012-01-21”  2012121日提交的(貌似有问题)

git log --since=”2 years 1 day 3 minutes ago” (貌似有问题)

git log --author=”tom” 指定作者提交的

git log --grep=”aa”  通过说明中的关键字

其他常用类似选项

选项 说明

-(n) 仅显示最近的 n 条提交

--since, --after 仅显示指定时间之后的提交。

--until, --before 仅显示指定时间之前的提交。

--author 仅显示指定作者相关的提交。

--committer 仅显示指定提交者相关的提交。

 

gitk  git log命令的可视化版本

 

撤销操作:

修改最后一次提交

git commit –amend

如果刚才提交时忘了暂存某些修改,可以先补上暂存操作,然后运行一次—amend提交

git commit –m ‘initial commit’

git add forgotten-files

git commit –amend

 

Git reset HEAD filename取消已暂存的文件

Git checkout -- filename取消对文件的修改

 

远程仓库的使用:

$ git clone git://github.com/schacon/ticgit.git 实验地址

git remote 显示远程仓库的简单名字

git remote –v 显示远程仓库名字和地址

添加远程仓库

Git remote add pb git://githum.com/paulboone/ticgit.git

Git fetch pb   从远程仓库pb抓取数据

Git push [remote-name] [branch-name]

       远程仓库名   分支名

Git remote show [remote-name]  查看远程仓库信息

Git remote rename [remote-name] [new-name]  远程仓库重命名

Git remote rm [remote-name]  删除远程仓库

 

打标签:

git tag  列出现有标签

git tag -1 “v1.4.2.*”  筛选标签

Git 使用的标签有两种类型:轻量级的(lightweight)和含附注的(annotated)。轻量

级标签就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。而含附注标

签,实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,

电子邮件地址和日期,以及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG)

签署或验证。一般我们都建议使用含附注型的标签,以便保留相关信息;当然,如果只是临

时性加注标签,或者不需要旁注额外信息,用轻量级标签也没问题。

Git tag –a v1.0 –m ‘my version 1.0’  添加含附注的标签

Git show v1.0   查看标签具体信息

Git tag v1.2   添加轻量级标签

后期加注标签


 

Git tag –a v1.0 a03bb4  (校验和或前几个字符)


 

默认情况下git push 并不会把标签推送到远端服务器上,只有通过显示的命令才能分享标签到远端服务器上,其命令格式如果推送分支,运行git push [remote-name] [tag-name]

如果要一次性推送所有(本地新增的)标签 git push [remote-name] –tags

 

技巧与窍门:

Git命令别名

git config --global alias.co checkout

git config --global alias.br branch

git config --global alias.ci commit

这样我们就可以用co  br  ci这些缩略词来使用命令了

不过我们有时候希望使用一些外部命令,而非git的附属工具,只要在命令前面加上!就行了,如果你自己写了些处理 Git 仓库信息的脚本的话,就可以用这种技术包装起来。作为演示,我们可以设置用 git visual 启动 gitk

git config --global alias.visual "!gitk"

  • 大小: 28.9 KB
  • 大小: 30.4 KB
  • 大小: 10.2 KB
  • 大小: 4 KB
  • 大小: 6.8 KB
  • 大小: 1 KB
  • 大小: 26.3 KB
  • 大小: 28.2 KB
分享到:
评论

相关推荐

    git零基础实战

    零基础学习git,值得收藏的一份文档

    git基础.md 基础学习资料

    git的基础原理和使用,适合初学者

    Git学习笔记.pdf

    这篇笔记完全是自己学习和使用时候记录下来的笔记,笔记内容覆盖Git的介绍和GitHub的使用,完全能够使个人零基础到基本入门,禁止拿来商用!

    Github、git 学习笔记.pdf

    个人github、git学习笔记。包含Github和git的基础命令和介绍。由于网络问题在国外很难插入图片,把源文件的pdf导出版本进行上传。

    git学习笔记,一看就会

    git最基础的命令,只要学会使用这些命令,就可以轻松上手git管理自己的项目

    狂神说Java系列笔记.rar

    2020年7月份PDF笔记,从Java基础内容到微服务、分布式相关笔记;

    狂神说笔记md文件与pdf

    内含 javascript, java web, java基础, mybatis, MySQL, Redis, spring, spring boot, spring mvc, vue的md格式笔记与pdf文件

    Git基础.rar

    Git基础.rar

    -Git:零基础使用Git的读书笔记

    -Git 零基础使用Git的读书笔记可以选择GitLearning.docx文件下载docx版本的读书笔记,读书笔记中有重点彩色标记,也可以在线查看 欢迎发布或拉取请求〜

    前端笔记完整版(HTML、CSS、JS、JQuery、AJAX、VUE、React等笔记)

    此笔记包含了前端代码规范、前端工具使用笔记、Ajax、Axios学习笔记、Chrome开发使用及学习笔记、ES6及后续版本学习笔记、Git学习笔记、HTML+CSS+JS基础笔记、Mobx学习笔记、Promise学习笔记、ReactHooks笔记、React...

    Git-Pro 学习笔记 -xmind 打开

    提炼了各种Git 应用场景的命令和基础说明与分类,基本满足大型软件开发要求,我主要基于Android 系统开发,几百个git 仓库各种分支,合并。

    git基础命令行指令

    只是笔记

    前端工程师学习笔记 超级详细

    正则表达式学习笔记 微信小程序学习笔记 前端部署相关笔记 前端UI库使用记录笔记 前端JS工具库使用笔记 ...Git学习笔记 ES6及后续版本 Chrome开发使用笔记 Ajax、Axios学习笔记 前端工具使用A 前端代码规范

    Git、Github.pdf

    Git工具的基础详细学习笔记,总结了Git工具的各个知识点,可以用来复习以及对基础知识的巩固,对新人的学习很有帮助。

    git_learn:学习git的笔记

    1. Git基础 1.1版本管理 1.1.1什么是版本管理 版本管理是一种记录文件变化的方式, 1.1.2人为维护文档版本的问题 文档数量多且命名不清晰导致文档版本混乱 每次编辑文档需要复制,不方便 多人同时编辑同一个文档,...

    千峰python课件笔记+源码 (凯哥)

    千锋python基础教程:1、第一个python程序与数据存储 '千锋python基础教程:2、print&input;与变量和运算符' 千锋python基础教程:3、字符串与循环中的while '千锋python基础教程:4、布尔&list;与条件循环语句与...

    狂神说上课笔记未删减 Java基础到技术升级

    1、JavaSE:Java入门 2、JavaSE:基础语法 3、JavaSE:流程控制 4、JavaSE:方法 5、JavaSE:数组 6、JavaSE:面向对象 7、JavaSE:异常机制 8、JavaSE:常用类 9、JavaSE:集合框架 10、JavaSE:IO流 11...

    Django基础加实战源码课件资料 13.Django-Git版本控制笔记.rar

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    学习Git基础的第一天

    自学笔记,大哥别喷

    黑马程序员-Java语言进阶-源码、教程笔记.zip

    day01_Object类、常用API day02_Collection、泛型 day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda...Java基础小节练习题答案

Global site tag (gtag.js) - Google Analytics