一、作用
- 可以建立仓库,保存资料(代码或其他)
- 可多人协作开发
- 记录修改历史
- 分支:可因不同情景分开开发
- 标签:记录重要里程碑以便参照
二、是什么
世界上最先进的分布式版本控制系统,基于 C 语言开发。
三、使用
1. 相关概念
(1)集中式 VS 分布式
日常生活场景中需要版本控制,而 Git 是一种版本控制工具。
版本控制工具分为分布式(以 Git 为代表)和集中式(以 SVN 为代表),下面从以下几个方面进行比较。
a) 版本库
-
集中式
有中央服务器的概念,版本库存储在中央服务器上。 -
分布式
没有中央服务器,每个人的电脑上都有完整的版本库。
Q:那么如何协作呢?
A:比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,上面有一个中央仓库,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
b) 网络依赖
-
集中式
网络不连通的话,个人电脑无法从中央服务器更新代码。再者,如果网速慢的话,提交、下载代码等得难受。 -
分布式
每个人的电脑都有完整的版本库,这样,工作的时候就不需要联网了。
c)安全性
-
集中式
如果中央服务器崩溃了,那版本库也崩溃了。 -
分布式
一台电脑崩溃了,直接从另一台电脑上拷贝版本库过来即可。
(2)工作区、暂存区和版本库
工作区(working tree 或 working directory)、暂存区(stage 或 index)、本地仓库、远程仓库。
2. 常用操作
(1) 创建仓库
一个 git 仓库中有
.git
目录,这个目录是 Git 来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
① 把本地文件夹初始化为仓库
$ git init
Initialized empty Git repository in F:/learngit/.git/
② 把远程仓库 clone 到本地
$ git clone git@github.com:SiXiWanZi/SSHTest.git
(2)向 GitHub 提交代码
Git——向GitHub提交代码
(3) Git 中的后悔药
Git——Git中的后悔药
(4)分支管理
Git——Git分支管理
3. 常用命令
(1)git log
显示从近到远的提交历史。
使用git log --pretty=oneline
将提交日志简化。
(2) git reflog
查看命令历史,可记录每一次命令。
(3)git diff
同一分支下:
- 比较工作区和暂存区
$ git diff
现有两个文件 README.md 和 LICENSE.md,它们都已被添加到了暂存区。分别修改两个两个文件。然后执行指令$ git diff
,结果如下,罗列了所有文件的比较情况。
- 比较工作区和本地版本库
① 工作区和本地仓库最新版本
$ git diff HEAD
② 工作区和本地仓库指定版本
$ git diff <commitId>
- 比较暂存区和本地版本库
① 暂存区和本地仓库最新版本
$ git diff --cached
② 暂存区和本地仓库指定版本
$ git diff --cached <commitId>
- 比较本地版本库中不同版本
$ git diff <commitId1> <commitId2>
不同分支下:
- 比较不同分支下的区别
$ git diff <branch1> <branch2>
(4)配置用户名邮箱
Git 根据用户名和邮箱提交记录,每进行一次 commit 都会产生一条 log,这条 log 标记了提交人的姓名与邮箱,以便其他人方便地查看与联系提交人。所以提交代码之前要设置好自己的姓名和邮箱
git config --global user.name
// 配置全局的用户名
git config --global user.email
// 配置全局的邮箱
git config --list
// 查看已有的配置信息
(5)关于界面的配置
git config --global color.ui true
git config --global core.quotepath false
// 显示中文文件名
网友评论