小猪用Git一年多后的总结精华

小猪用Git一年多后的总结精华

标签: Git


描述性文字

接触Git到现在已有一年多了,对Git使用也是日渐精进,虽说不上很熟络,但也算
入门,决定年前总结下,所以有了此文。Git博大精深,还有很多的东西需要学习,
比如自己搭建Git版本控制系统,一些便利工具的使用啊,一些疑难杂症解决方案
等等,当然这就是下一篇的事了。本文讲述的是Git基础的一些东西,没有Git大法
那个系列那么通熟易懂,但是还是对关键性的知识点进行了浅析,相信看完本文
你的Git使用会更进一步,谢谢~

在线版(排版更佳,不定期更新):https://www.zybuluo.com/coder-pig/note/581320


安装配置与文档


1.下载安装

2.文档教程相关


概念


1.Git的四个组成部分

2.文件的几个状态

按大类划分,分为两种状态:Tracked(已跟踪)和Untracked(未跟踪),
依据是:该文件是否已加入版本控制

流程简述:

假设某个项目已加入版本控制系统

  • 1.新建一个文件,该文件处于 Untracked 状态;
  • 2.通过git add命令添加到缓存区,此时文件处于Tracked状态又或者说
    此时这个文件已经被版本控制系统所跟踪,而且他处于Staged(暂存)状态;
  • 3.通过git commit命令把暂存区的文件提交提交到本地仓库,此时文件
    处于Unmodified(未修改)状态;
  • 4.此时如果去编辑这个文件,文件又会变成Modified(修改)状态;

3.Git与SVN版本版本控制存储差异

Git关心的是:文件整体是否发生变化,而SVN关心的是:文件内容的具体差异!
SVN每次提交记录的是:哪些文件进行了修改,以及修改了哪些行的哪些内容

如图:版本2中记录的是文件A和C的变化,而版本3中记录文件C的变化,以此类推;
而Git中,并不保存这些前后变化的差异数据,而是保证整个缓存区中的所有文件,
又叫快照,有变化的文件保存没变化的文件不保存而是对上一次的保存的快照
做一个链接!因为这种不同的保存方式,Git切换分支的速度比SVN快很多!

4.每次Commit时仓库中的数据结构

分为四个对象:

blob对象:存放文件数据;
tree对象:目录,内容为blob对象的指针或其他tree对象的指针
commit对象:快照,包含指向前一次提交对象的指针,commit相关的信
通过索引找到文件快照。
tag对象:一种特殊的commit对象,一般对某次重要的commit加TAG,以示重要(方便找)


本地操作命令


1.相关配置【git config】

区分globallocal,前者代表 全局设置,就是设置了在整个系统中,
所有的带Git版本管理的项目都是这样的配置;后者代表 本地设置 即在某个项目
独立的设置,后者优先级高于前者。比如全局设置的用户名是”Coder-pig”,本地
设置的是”Jay”,commit的时候author就是Jay而不是Coder-pig。
除了通过命令行修改,还可以直接修改对应文件:

全局配置文件:etc/gitconfig
本地配置文件:当前仓库/.git/config

# 安装完Git后第一件要做的事,设置用户信息(global可换成local在单独项目生效):
git config --global user.name "用户名" # 设置用户名
git config --global user.email "用户邮箱"   #设置邮箱
git config --global user.name   # 查看用户名是否配置成功
git config --global user.email   # 查看邮箱是否配置

# 其他查看配置相关
git config --global --list  # 查看全局设置相关参数列表
git config --local --list # 查看本地设置相关参数列表
git config --system --list # 查看系统配置参数列表
git config --list  # 查看所有Git的配置(全局+本地+系统)

 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2.获取帮助【git help】

git help 命令   # 如:git help init
 
 
 
  • 1
  • 1

3.创建本地仓库【git init】

git init 仓库名 # 创建一个新的带Git仓库的项目
git init # 为已存在的项目生成一个Git仓库
 
 
 
  • 1
  • 2
  • 1
  • 2

4.添加文件到暂存区/文件跟踪标记【git add】

可以使用git add 文件名,将工作空间的文件添加到暂存区,或批量添加文件

git add 文件名 # 将工作区的某个文件添加到暂存区   
git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件
git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件
git add . # 将当前工作区的所有文件都加入暂存区
git add -i # 进入交互界面模式,按需添加文件到缓存区
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

附:交互界面模式示例

上图流程:

1.先在GitForTest的文件夹里创建了两个文件
2.键入git add -i,进入后,键入4,选择添加untracked的文件
3.他给我们列出了untracked的文件,然后我们根据序号来添加文件
4.输入?会弹出相关提示,然后直接回车,结束选择!
5.然后再次输入git add -i,输入4,可以看到已不存在untacked的文件了!


5.让Git不Tracked特定文件【.gitignore文件配置】

将未tracked的文件添加到缓存区后,Git就会开始跟踪这个文件了!
对于一些比如:自动生成的文件日志临时编译文件等,就
没必要进行跟踪了,这个时候可以编写.gitignore文件,在里面
把不需要跟踪的文件或文件夹都写上,git就不会对这些文件进行跟踪!
另外.gitignore文件与.git文件夹在同级目录下

如果不想自己写,可以直接到:https://github.com/github/gitignore 复制粘贴!
也可以自行编写,支持简化了的正则表达式(规范与示例模板摘自:Git王者超神之路)

  • * : 匹配零个或多个任意字符
  • [abc]:只匹配括号内中的任意一个字符
  • [0-9]:- 代表范围,匹配0-9之间的任何字符
  • ?:匹配任意一个字符
  • *:匹配任意的中间目录,例如a/*/z可以匹配:a/z,a/b/z,a/b/c/z等

示例模板

# 忽略所有以 .c结尾的文件
*.c

# 但是 stream.c 会被git追踪
!stream.c

# 只忽略当前文件夹下的TODO文件, 不包括其他文件夹下的TODO例如: subdir/TODO
/TODO

# 忽略所有在build文件夹下的文件
build/

# 忽略 doc/notes.txt, 但不包括多层下.txt例如: doc/server/arch.txt
doc/*.txt

# 忽略所有在doc目录下的.pdf文件
doc/**/*.pdf
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

6.将暂存区内容提交到本地仓库【git commit】

git commit -m "提交说明" # 将暂存区内容提交到本地仓库
git commit -a -m "提交说明" # 跳过缓存区操作,直接把工作区内容提交到本地仓库
 
 
 
  • 1
  • 2
  • 1
  • <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值