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,暂存这一步
删除:
1.git rm filename 删除未暂存的文件,手工删除后,直接运行命令,然后提交完成删除
2.删除已暂存的文件,且之前未修改过,也可直接运行
git rm filename,然后提交完成删除
(如果做了上述误删操作,可用git reset HEAD filename 撤销“删除“的暂存操作,再用git
checkout – filename,取回被删除且未被修改过的文件,相当于检出操作)
3.删除之前修改过,并且已经暂存的文件,则需要使用强制删除
git rm –f filename,使用此操作无法恢复你的修改内容,为永久删除f(force)
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 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller
和 format(后跟指
定格式)。
限制输出长度:
git log --since=2.weeks
最近两周内提交的
git log --since=”2012-01-21”
2012年1月21日提交的(貌似有问题)
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的介绍和GitHub的使用,完全能够使个人零基础到基本入门,禁止拿来商用!
个人github、git学习笔记。包含Github和git的基础命令和介绍。由于网络问题在国外很难插入图片,把源文件的pdf导出版本进行上传。
git最基础的命令,只要学会使用这些命令,就可以轻松上手git管理自己的项目
2020年7月份PDF笔记,从Java基础内容到微服务、分布式相关笔记;
内含 javascript, java web, java基础, mybatis, MySQL, Redis, spring, spring boot, spring mvc, vue的md格式笔记与pdf文件
Git基础.rar
-Git 零基础使用Git的读书笔记可以选择GitLearning.docx文件下载docx版本的读书笔记,读书笔记中有重点彩色标记,也可以在线查看 欢迎发布或拉取请求〜
此笔记包含了前端代码规范、前端工具使用笔记、Ajax、Axios学习笔记、Chrome开发使用及学习笔记、ES6及后续版本学习笔记、Git学习笔记、HTML+CSS+JS基础笔记、Mobx学习笔记、Promise学习笔记、ReactHooks笔记、React...
提炼了各种Git 应用场景的命令和基础说明与分类,基本满足大型软件开发要求,我主要基于Android 系统开发,几百个git 仓库各种分支,合并。
只是笔记
正则表达式学习笔记 微信小程序学习笔记 前端部署相关笔记 前端UI库使用记录笔记 前端JS工具库使用笔记 ...Git学习笔记 ES6及后续版本 Chrome开发使用笔记 Ajax、Axios学习笔记 前端工具使用A 前端代码规范
Git工具的基础详细学习笔记,总结了Git工具的各个知识点,可以用来复习以及对基础知识的巩固,对新人的学习很有帮助。
1. Git基础 1.1版本管理 1.1.1什么是版本管理 版本管理是一种记录文件变化的方式, 1.1.2人为维护文档版本的问题 文档数量多且命名不清晰导致文档版本混乱 每次编辑文档需要复制,不方便 多人同时编辑同一个文档,...
千锋python基础教程:1、第一个python程序与数据存储 '千锋python基础教程:2、print&input;与变量和运算符' 千锋python基础教程:3、字符串与循环中的while '千锋python基础教程:4、布尔&list;与条件循环语句与...
1、JavaSE:Java入门 2、JavaSE:基础语法 3、JavaSE:流程控制 4、JavaSE:方法 5、JavaSE:数组 6、JavaSE:面向对象 7、JavaSE:异常机制 8、JavaSE:常用类 9、JavaSE:集合框架 10、JavaSE:IO流 11...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
自学笔记,大哥别喷
day01_Object类、常用API day02_Collection、泛型 day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda...Java基础小节练习题答案