Learn Git One
时间:2022-05-06
本文章向大家介绍Learn Git One,主要内容包括Git 基本原理、Git 文档库、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
Git 基本原理
Git 属于分布式版本控制系统( Distributed Version Control System,简称 DVCS )之一。客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。这样就可以指定和若干不同的远端代码仓库进行交互,你就可以在同一个项目中,分别和不同工作小组的人相互协作。Git 只关心文件数据的整体是否发生变化,而大多数其他版本管理系统则只关心文件内容的具体差异。Git 并不保存这些前后变化的差异数据。实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接(基本原理来源于《Pro Git》中文翻译版)。 对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。
- 已提交表示该文件已经被安全地保存在本地数据库中了。(git commit )
- 已修改表示修改了某个文件,但还没有提交保存。(修改本地文件)
- 已暂存表示把已修改的文件放在下次提交时要保存的清单中。(通过git add 来转移到已暂存状态)Git 配置 Git的配置文件有三个配置文件:
- 本地git仓库下面的config文件,在.git/config。
- 全局性的git配置文件,在用户home目录~/.gitconfig,对应的git config参数是git config —global。
- 系统级别的git配置文件,在/etc/gitconfig,对应的git config的参数是git config —system。Git Config File 如果在.git/config的配置会优于全局性的git,全局性的git优于系统级别的git。 可以通过如下命令来看相应的参数:git config --system -l git config --global -l
也可以设置一些常用的用户名和邮箱,这样在你每次提交代码时都会显示你的user.name.配置如下:
git config user.name "brian"
git config user.email "test@outlook.com"
# 以上配置的是本地仓库的配置文件,当然你可以指定不同的级别的配置文件。
git config --global user.name "brian"
git config --global user.email "test@outlook.com"
git config --system user.name "brian"
git config --system user.email "test@outlook.com"
Git alias
有时Git命令太长,所以git提供了一个友好的别名方式来替代较长的git命令。例如:
# 格式
# git config alias.别名 真实指令和选项
# 其中alias配置是git 后面的别名,“真实指令和选项”代表git 后面需要跟的指令。
git config alias.l "config -l"
#删除别名可以用
git config --unset alias.l
# 修改默认编辑器
git config [--global] core.editor emacs
#--global是可选的,core是代表git为core模块下。我们看一下git基本的配置信息:
[user]
email = brian.lv@outlook.com
name = lvhaifeng
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[alias]
l = config -l --global
[remote "origin"]
url = git@gitlab.com:****.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
Git 文档库
Git将文件和文件夹分为以下三种方式:
- tracked 被追踪的,默认文件和文件夹下都是tracked的,都已加入到git版本库里了。
- ignored 忽略的,即git会忽略该文件和文件夹不会被检查。在.gitignore配置。
- untracked 不被追踪的,新创建的文件和文件夹都是untracked。 先来讲一下ignore的一些规则吧,其中*代表所有通配符,!代表排除具体文件。Git rm/reset使用说明 在使用Git add .命令时,会把工程中所有未跟踪的文件添加到git索引中,如果此时意识到有些文件不需要commit时,可以把文件从索引中删除: git rm —cached + 文件名 或者 git reset HEAD + 文件名 那么这两者有什么区别呢? 注意:如果仓库中还没有加入任何文件,即执行git init之后,还没有执行git commit命令。那么就需要使用:git rm --cached 文件名
如果仓库中已经有一些文件,也就是执行过git commit需要使用:
git reset HEAD 文件名
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法