`

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尚硅谷笔记.pdf

    ### Git基础知识及操作指南 #### 一、Git简介与特性 **Git** 是一款开源的分布式版本控制系统,用于高效地处理从小型到大型项目的版本管理。相比于传统的集中式版本控制系统如SVN,Git具备以下特点: 1. **分布式...

    git笔记,很全面

    ### Git基础知识及分支管理 #### 一、Git简介 Git是一种分布式版本控制系统,它通过记录文件的状态变更来帮助用户管理项目历史。相比传统的集中式版本控制系统(如SVN),Git在本地就能完成大部分操作,因此速度更...

    git学习笔记.zip|git学习笔记.zip

    2. **Git基本操作**:学习Git,首先要掌握几个基础命令,如`git init`用于初始化仓库,`git clone`用于复制远程仓库,`git add`用于暂存更改,`git commit`用于保存更改,以及`git push`和`git pull`用于将本地更改...

    git零基础实战

    ### Git零基础实战知识点梳理 #### 一、Git简介 - **版本控制基本概念** - 版本控制系统(Version Control System, VCS):类似于银行柜台的“会计”,负责跟踪和记录文件的变化。 - **重要性**:提高工作协作...

    git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记

    ### Git基础知识 #### 创建与初始化仓库 - **`mkdir`**: 用于创建一个新的目录。例如,如果你想创建一个名为`myproject`的新目录,则可以运行`mkdir myproject`。 - **`git init`**: 将当前目录初始化为Git仓库。...

    git基础.md 基础学习资料

    ## Git基础原理与使用 ### Git底层命令 #### `git ls-files -s` - **用途**:列出暂存区中的文件列表。 - **应用场景**:当你想要了解哪些文件已经被添加到暂存区中,但还未进行提交时,该命令非常有用。 #### `...

    git使用笔记1

    在Git使用笔记1中,我们主要关注如何操作Git,包括删除和恢复文件,克隆和更新Git仓库,以及进行基本的Git配置和文件管理。 首先,删除文件在Git中可以通过`git rm`命令实现,如`git rm aa.c`将删除aa.c文件。如果...

    Git常用命令指导教程笔记.pdf

    Git是一种分布式版本控制系统,用于跟踪对...以上是Git基础操作的简单介绍,掌握这些命令将帮助你更好地管理和协作代码。随着经验的积累,你还可以学习更多高级功能,如分支、合并、拉取请求等,进一步提升开发效率。

    git分享笔记

    知识点的覆盖范围从Git的安装、基础操作到版本控制原理和版本管理都进行了介绍,对于初学者来说,这是一份比较全面的入门教程。通过这些知识的掌握,使用者可以更高效地管理和协作自己的代码项目。

    Git笔记2共18页.pdf.zip

    这份"Git笔记2共18页.pdf"可能包含了Git的基础知识、高级用法以及实践经验,对于学习和掌握Git至关重要。下面将根据Git的一般性内容,结合描述中的关键词,进行详细的知识点解析。 1. **Git基本概念** - **版本...

    Git学习笔记.pdf

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

    Github、git 学习笔记.pdf

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

    自己做的git笔记分享。

    ### Git基础知识及常用命令详解 #### 一、Git简介与安装 **Git** 是一个分布式版本控制系统,用于跟踪计算机文件的更改并协调多人合作的工作。它最初由Linus Torvalds于2005年创建,目的是作为一种改进的工具来管理...

    git.docx个人自学笔记

    Git 版本控制笔记 以下是从给定的文件中生成的相关知识点: 一、 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简介与安装 **Git**是一种分布式版本控制系统,用于跟踪计算机文件的变化,并协调多个用户之间的共享工作。它最初由Linus Torvalds于2005年创建,目的是为了更高效地管理...

    Git的学习笔记/记录

    这份"Git的学习笔记/记录"涵盖了Git的基础知识以及高级用法,旨在帮助读者深入理解Git的工作原理和实践技巧。 一、Git的基本概念 1. 版本控制:Git的主要目标是管理项目在开发过程中的不同版本,以便于回溯、比较和...

    git命令使用笔记

    Git是一个分布式版本控制系统,它可以让开发者更好地管理源代码。...对于Git初学者来说,理解这些基础知识是十分重要的,同时,记录下日常使用中的易错点和混淆点,对于深入理解和熟练掌握Git有着极大的帮助。

    Git和Github笔记

    ### Git和Github笔记 #### 一、Git基础知识 ##### 1.1 版本管理概述 版本管理是一种软件工程实践,旨在记录文件或项目的不同版本,以便能够追踪变更历史、回溯到之前的状态或者比较不同版本之间的差异。这种方式...

    Git&GitHub笔记1

    Git是世界上最先进的分布式版本控制系统,它在IT开发中扮演着至关重要的角色,特别是在软件开发团队的协作...对于初学者来说,了解和掌握Git的这些基础知识是至关重要的,因为它已经成为现代软件开发不可或缺的一部分。

Global site tag (gtag.js) - Google Analytics