Git 属于分布式版本控制系统( Distributed Version Control System,简称 DVCS )之一。客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。这样就可以指定和若干不同的远端代码仓库进行交互,你就可以在同一个项目中,分别和不同工作小组的人相互协作。Git 只关心文件数据的整体是否发生变化,而大多数其他版本管理系统则只关心文件内容的具体差异。Git 并不保存这些前后变化的差异数据。实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接(基本原理来源于《Pro Git》中文翻译版)。 对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。
也可以设置一些常用的用户名和邮箱,这样在你每次提交代码时都会显示你的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命令太长,所以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 commit需要使用:
git reset HEAD 文件名