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** 是一款开源的分布式版本控制系统,用于高效地处理从小型到大型项目的版本管理。相比于传统的集中式版本控制系统如SVN,Git具备以下特点: 1. **分布式...
### Git基础知识及分支管理 #### 一、Git简介 Git是一种分布式版本控制系统,它通过记录文件的状态变更来帮助用户管理项目历史。相比传统的集中式版本控制系统(如SVN),Git在本地就能完成大部分操作,因此速度更...
2. **Git基本操作**:学习Git,首先要掌握几个基础命令,如`git init`用于初始化仓库,`git clone`用于复制远程仓库,`git add`用于暂存更改,`git commit`用于保存更改,以及`git push`和`git pull`用于将本地更改...
### Git零基础实战知识点梳理 #### 一、Git简介 - **版本控制基本概念** - 版本控制系统(Version Control System, VCS):类似于银行柜台的“会计”,负责跟踪和记录文件的变化。 - **重要性**:提高工作协作...
### Git基础知识 #### 创建与初始化仓库 - **`mkdir`**: 用于创建一个新的目录。例如,如果你想创建一个名为`myproject`的新目录,则可以运行`mkdir myproject`。 - **`git init`**: 将当前目录初始化为Git仓库。...
## Git基础原理与使用 ### Git底层命令 #### `git ls-files -s` - **用途**:列出暂存区中的文件列表。 - **应用场景**:当你想要了解哪些文件已经被添加到暂存区中,但还未进行提交时,该命令非常有用。 #### `...
在Git使用笔记1中,我们主要关注如何操作Git,包括删除和恢复文件,克隆和更新Git仓库,以及进行基本的Git配置和文件管理。 首先,删除文件在Git中可以通过`git rm`命令实现,如`git rm aa.c`将删除aa.c文件。如果...
Git是一种分布式版本控制系统,用于跟踪对...以上是Git基础操作的简单介绍,掌握这些命令将帮助你更好地管理和协作代码。随着经验的积累,你还可以学习更多高级功能,如分支、合并、拉取请求等,进一步提升开发效率。
知识点的覆盖范围从Git的安装、基础操作到版本控制原理和版本管理都进行了介绍,对于初学者来说,这是一份比较全面的入门教程。通过这些知识的掌握,使用者可以更高效地管理和协作自己的代码项目。
这份"Git笔记2共18页.pdf"可能包含了Git的基础知识、高级用法以及实践经验,对于学习和掌握Git至关重要。下面将根据Git的一般性内容,结合描述中的关键词,进行详细的知识点解析。 1. **Git基本概念** - **版本...
这篇笔记完全是自己学习和使用时候记录下来的笔记,笔记内容覆盖Git的介绍和GitHub的使用,完全能够使个人零基础到基本入门,禁止拿来商用!
个人github、git学习笔记。包含Github和git的基础命令和介绍。由于网络问题在国外很难插入图片,把源文件的pdf导出版本进行上传。
### Git基础知识及常用命令详解 #### 一、Git简介与安装 **Git** 是一个分布式版本控制系统,用于跟踪计算机文件的更改并协调多人合作的工作。它最初由Linus Torvalds于2005年创建,目的是作为一种改进的工具来管理...
Git 版本控制笔记 以下是从给定的文件中生成的相关知识点: 一、 Git 基础知识 * Git 是一个版本控制系统,用于追踪和管理...这篇笔记涵盖了 Git 的基础知识、基本命令、文件管理、版本控制和高级知识等方面的内容。
### 学习Git笔记 #### 一、Git配置与理论基础 **1.1 初次使用Git配置** - 在初次使用Git时,需要通过`git config --global user.name "Your Name"` 和 `git config --global user.email "your-email@example....
### Git学习笔记——入门篇 #### 一、Git简介与安装 **Git**是一种分布式版本控制系统,用于跟踪计算机文件的变化,并协调多个用户之间的共享工作。它最初由Linus Torvalds于2005年创建,目的是为了更高效地管理...
这份"Git的学习笔记/记录"涵盖了Git的基础知识以及高级用法,旨在帮助读者深入理解Git的工作原理和实践技巧。 一、Git的基本概念 1. 版本控制:Git的主要目标是管理项目在开发过程中的不同版本,以便于回溯、比较和...
Git是一个分布式版本控制系统,它可以让开发者更好地管理源代码。...对于Git初学者来说,理解这些基础知识是十分重要的,同时,记录下日常使用中的易错点和混淆点,对于深入理解和熟练掌握Git有着极大的帮助。
### Git和Github笔记 #### 一、Git基础知识 ##### 1.1 版本管理概述 版本管理是一种软件工程实践,旨在记录文件或项目的不同版本,以便能够追踪变更历史、回溯到之前的状态或者比较不同版本之间的差异。这种方式...
Git是世界上最先进的分布式版本控制系统,它在IT开发中扮演着至关重要的角色,特别是在软件开发团队的协作...对于初学者来说,了解和掌握Git的这些基础知识是至关重要的,因为它已经成为现代软件开发不可或缺的一部分。