Git理论 -工作流程 - 常用命令
Git概念和环境安装
1. Git概述
-
Linux和Git之父李纳斯·托沃兹(Linus Benedic Torvalds)1969、芬兰
-
Git是目前世界上最先进的分布式版本控制系统。
-
Git是免费、开源的
-
最初Git是为辅助 Linux 内核开发的,来替代 BitKeeper
2. Git环境搭建
环境安装:
-
下载:https://git-scm.com/ 点击download选择自己电脑版本就行。
-
安装:双击Git-2.28.0-64-bit.exe安装就行
-
Git的源码:https://github.com/git/git/
-
Git GUI:git第三方图形化工具 TortoiseGit(小乌龟,可以用颜色来区分,文件是已修改、已提交之类的),安装之后需要重启电脑,才能有符号表示
注意事项:目录不能够有中文、空格、最好就是单词和数字,可以安装一个TortoiseGit海龟客户端,很流畅。
安装好之后:鼠标右键有Git和 TortoiseGit选项就安装成功了
版本控制概念
1. 备份、还原
-
备份:对当前数据产生一个副本
-
还原(恢复):用以前副本的数据覆盖来当前的数据(代买)
2. 比较:比较两份数据的差异(compare/diff)
-
整体比较:hash值比较(工具:Hash校验工具)
hash值就是调用摘要算法(md5、sha-1、sha-256、crc. 等摘要算法),产生一个特征码,用特征码是否相同来比较两个文件是否相同。
SHA1算法:固定长度比较(得到的hash码值一样,则文件内容相同)
-
细节比较:(逐行比较)
Beyond Compare 4 :文本比较工具,一行一行比较文本内容
3. 分支
创建对当前所有的数据产生(copy)一个“更大”的副本,就是对当前所有数据复制copy产生多个副本,然后多人可同时开发。
-
与原来副本互不干扰
-
分支的地方是相同的,当前数据默认分支master(主分支)
-
分支的意义:提高团队效率
4. 合并
通过比较两份数据的差异,将目标数据与当前数据合在一起,产生一份新的数据。(合并不是覆盖,在原有基础上增加的就合并,对相同的修改就需要判断)
应用:将其他分支的数据合到主分支上面(主分支不开发,一般用于合并,开发数据追加到主分支)。
冲突:两份(多份)数据,相同的位置被修改,不能够简单的覆盖替换,根据实际情况来合并(会都保存下来后期修改)
## 集中式和分布式
1. 集中式与分布式
-
本地版本控制 (个人使用,没有团队协作)
-
集中式版本控制 (团队使用,数据在服务器,不可以离线工作,操作会经过网络,不断从服务器写数据读数据,服务器会有较大压力) - SVN是集中式的版本控制系统的代表
-
分布式版本控制 (团队使用,数据在每个用户本地,可以离线工作,Git代表,可以从服务器读取数据,用户之间也能交互数据)【有服务端仓库,也有本地仓库 - 服务器、本地都有数据】- 最先进的分布式管理系统Git
2. Git和SVN的区别
-
SVN是集中式的版本控制系统的代表
-
Git优点(分布式优点):Git是分布式版本控制系统,具有高效(团队协作)、离线工作、服务器压力小、易于合并等优势。
Git使用流程
-
workspace:工作区(你写代码的地方)
-
Index:暂存区(将多个文件座位一次性提交给本地库)
-
Repository:本地库:提交的所有版本数据
-
Remote:远程库,是用来托管代码的服务器
(通过上面的add/commt/push/pull命令,将数据从xx地方提交/拿去到xx地方)
Git的工作流程
-
在工作目录中添加、修改文件;
-
将文件放入暂存区域;
git add
命令(git add.
将所有文件添加到暂存区) -
将暂存区域的文件提交到本地库。(
git commit
) -
将本地库文件提交到远程库,实现服务器托管。(
git push
)
工作目录下的所有文件会先提交到暂存区,然后提交到本地库(清空暂存区),因为git提交一次只能提交一个文件,所以会先放到暂存区,然后一起提交到本地库。然后本地库再提交到远程库
Git常用操作指令[***]
-
cd
跳转指定位置,在git里面文件分隔符是**/** -
git init
git初始化指令,初始化完之后在指定文件会有.git文件夹(就是git系统目录) -
级别区分
-
–local 项目级 : 当前项目所有都用
-
–global : 当前用户级别使用
-
–system : 系统级别(一般不用)
git config --global git config user.name xxx
设置当前用户名
-
配置用户名和邮箱
git config --global user.name "用户名"
git config --global user.email "[email protected]"
-
Git建本地仓库 git clone / git init
-
$ git init
在当前目录新建一个Git代码库 -
$ git init [project-name]
新建一个目录(名称为project-name),将其初始化为Git代码块 -
$ git clone [url]
下载一个项目和它的整个代码历史
-
git add命令
从工作区向暂存区写入
$ git add [file1] [file2]
添加指定目录到暂存区,包括子目录$ git add [dir]
添加当前目录的所有文件到暂存区$ git add .
点代表添加当前目录的所有文件到暂存区$ git add -p
对于同一个文件的多处变化,可以实现分次提交 -
git的查看命令
-
git status `命令
显示工作目录和暂存区的状态,只显示到文件
-
git log
命令显示项目历史的信息
-
git log --stat
命令查看简要统计
-
git show sha1或者head标记
看某个具体的 commit 的改动内容
-
git diff
命令显示工作目录和暂存区的状态,细到内容
-
git diff HEAD
命令显示工作目录和上一次的状态,细到内容
-
- git commit命令 : 提交暂存区文件到本地库
-
$ git commit -m [message]
提交暂存区的指定文件到本地库
- 分支合并【***这是重点】
-
$ git branch [branch-name]
新建一个分支,但依然停留在当前分支 -
$ git switch [branch-name]
切换分支 -
$ git switch master
其他分支合并到当前的主分支