前言
Git是一个免费的、分布式的版本控制工具,或是一个强调了速度快的源代码管理工具。每一个Git的工作目录都是一个完全独立的代码库,并拥有完整的历史记录和版本追踪能力,不依赖于网络和中心服务器
1、Git内文件的三中状态
对于任何一个文件,在Git内都有三种状态:
已提交(commited),已修改(modified),已暂存(staged)
已提交表示文件已经被安全的保存在本地数据库中
已修改表示修改了某个文件,但还没有提交保存
已暂存表示吧已修改的文件存放在下次提交时要保存的清单中
文件流转的三个工作区域:Git的工作目录,暂存区域。以及本地仓库
工作目录:
工作目录就是写代码的地方,如果有增、删、改文件都是在工作目录发生变化。工作目录的文件可以通过git add命令将文件提交到暂存区
暂存区
所谓的暂存区域只不过是个简单的文件,一般都放在 Git 目录中的index文件(.git/index)中。有时候我们会把这个文件叫做索引文件,不过标准说法还是叫暂存区域。暂存区就是用来临时存储代码的一片区域,是已经修改了但是还没有提交,将来可以提交到本地库也可以撤回来。通过git commit 命令可以将暂存区的文件提交到本地仓库
本地库
每个项目都有一个 Git 目录(注:如果 git clone 出来的话,就是其中 .git 的目录;如果git clone --bare 的话,新建的目录本身就是 Git 目录。),它是 Git 用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。本地库就是存储的实实在在的历史版本,可以通过git push命令来将本地库的文件推送到服务器
2、git工作流程如下
1、在工作目录中修改某些文件
2、修改文件快照后将文件保存到暂存区
3、提交更新,将保存在暂存区的文件快照永久转储到git目录中
已提交(committed):表示数据文件已经顺利提交到Git版本库中。
已修改(modified):表示数据文件已经被修改,但未被保存到Git版本库中。
已暂存(staged):表示数据文件已经被修改,并会在下次提交时提交到Git版本库中
3、搭建git服务器
1、环境
主机 | ip | 角色 |
ip5 | 192.168.1.5 | server |
ip6 | 192.168.1.6 | client |
2、安装软件
在两台主机上用yum安装git
yum -y install git
查看git版本
git --version
3、服务器用户创建空仓库
创建git账号
useradd git
echo git:123456 | chpasswd
创建版本库
版本库又名仓库,可简单理解为一个目录,该目录里所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,在将来某个时刻可以“还原”。
基本思路是:先创建一个空目录,如目录project.git作为仓库的存放位置。运行”git init”把这个目录变成Git可以管理的仓库,当前目录下多了.git文件夹(默认隐藏)
切换到git账号,然后创建一个项目仓库project.git
su - git #切换用户
mkdir project.git #创建仓库名称
ls 查看
cd project.git
git init --bare #初始化仓库
4、linux客户端初始化测试
创建工作目录,拉取库到本地
mkdir git
cd git
git clone git@192.168.1.5:/home/git/porject.git
查看 ll
本地给新项目增加文件
给project项目增加一个文件
cd project
echo "no.1" > 1.html
git status #查看状态
第一次查看文件还没有存放在暂存区
5、增添到暂存区
使用git add 吧新创建的文件加入到git暂存中
git add .
再一次查看文件状态
要是需要修改就用 git rm --cached 文件 将文件从暂存区删除但是不会删除文件
6、提交到本地仓库
使用git commit吧缓存区的文件增加到本地仓库
git commit -m "no.1" #-m 后面增添的是备注信息
请输入个人信息
git config --global user.name "lisi"
git config --global user.email "123456@11.com"
重新提交修改到本地仓库
git log查看日志
到此为止自己的本地仓库就提交结束了,之后就是提交到远程仓库了
7、确定本地仓库和远程仓库的状态是否正常
git remote -v 查看本地存储的远程主机信息,如果是clone出来的项目这个结果如下
说明:
origin表示的是远程仓库的别名,默认为orgin,以后提交代码只需要使用origin这个别名即可
8、git初始化
git clone、git init
git通常有两种方式来进行初始化:git clone和 git init
1、git clone: 当你已经有一个远程的git版本库,只需要在本地克隆一份
2、git init和git remote:这种方式稍微复杂一些,当你本地创建了一个工作目录,你可以进入这个目录,使用git init命令进行初始化,Git以后就会对该目录下的文件进行版本控制。这时候如果你需要将它放到远程服务器上,此时你就可以利用 git remote add 命令来增加一个远程服务器端,例如' git remote add test ssh://git@192.168.1.11/home/git/project.git '这条命令就会增加URL地址为' ssh://git@192.168.1.11/home/git/project.git ',名称为test的远程服务器,以后提交代码的时候只需要使用test别名即可
列如
mkdir /git_test
git init /git_test
cd /git_test
git remote add test ssh://git@192.168.1.5/home/git/project.git #增加远程库
git ermote -v 查看
9、git基本命令
1、git pull:从版本库将代码拉到本地
2、git add:将所有改动的文件放到暂存区,由git进行管理
3、git rm:从当前工作空间中和暂存区中删除文件
4、git commit:提交当前工作空间的修改内容到本地仓库
5、git push:将本地commit的代码更新到远程版本库中,
6、git log:查看历史日志