版本控制服务器-Git

一、Git简介

Git是开源、分布式的版本控制工具,或是一个源代码管理工具。每个Git的工作目录都是一个完全独立的代码库,并拥有完整的历史记录和版本追踪能力,不依赖于网络和中心服务器。

1)关于版本控制

版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。

2)Git内文件的三种状态

对于任何一个文件,在Git 内都只有三种状态:已修改(modified),已暂存(staged)和已提交(committed)。

已修改表示修改了某个文件,但还没有提交保存;

已暂存表示把已修改的文件放在下次提交时要保存的清单中;

已提交表示该文件已经被安全地保存在本地数据库中了;

Git 管理项目时,文件流转的三个工作区域:Git 的工作目录,暂存区域,以及本地仓库

工作目录 :写代码的地方,有增删改的地方都是在工作目录中发生的

暂存区: 暂存区就是用来临时存储代码的区域,将来可以提交到本地仓库也可以撤销回来

本地库:本地库就是存储的历史版本,通过 git push 命令来将本地库的文件推送到服务器,每个项目都有一个 Git 目录(注:如果 git clone 出来的话,就是其中 .git 的目录;如果git clone --bare 的话,新建的目录本身就是 Git 目录。)

3)工作流程

1.在工作目录中修改某些文件

2.对修改后的文件进行快照,保存到暂存区域

3.提交更新,将保存在暂存区域的文件快照永久转储到 git 目录中

二、搭建 GIT 服务器

环境拓扑:

主机IP角色软件
git-server192.168.1.110servergit
192.168.1.120Clientgit

1)软件安装

安装有两种方法:

1.yum命令安装,此方法简单,并且会自动安装依赖的包,而且会从源里安装最新的版本,不过不一定是git最新的。

2.源码安装,这个要比yum方式较麻烦点,不过过程还是比较清晰的。

采用 yum 方式安装 git :

所有主机安装 git

[root@git-server ~]# yum -y install git
[root@localhost ~]# yum -y install git

需要ssh的支持。某些版本服务器需要安装git-core才是服务器

查看git 版本

git --version

三、git使用

1)服务端用户创建空仓库(git-server)

 创建 git 账号

useradd git
passwd git

创建版本库

版本库又称仓库。可简单理解为一个目录,目录里所有文件都可以被 git 管理,每个文件的修改、删除,Git都能跟踪,在某个时刻可以 还原。

 基本思路: 先创建一个空目录,如目录 project.git作为仓库的存放位置。运行”git init”把这个目录变成Git可以管理的仓库,当前目录下多了.git文件夹(默认隐藏)

切换到 git 账号,创建一个项目的仓库 project.git

su - git  #切换到 git 用户

mkdir  project.git #创建仓库名称

cd project.git

git init --bare   #初始化数据库

2)Linux 客户端初始化测试 (client主机)

创建工作目录

mkdir git

拉取库到本地 

 使用git clone(克隆)拉取远程服务器新项目到本地工作目录。

cd git

git clone git@192.168.1.110:/home/git/project.git   #加上初始化的路径

查看项目:

 本地给新项目添加文件

给 project 项目添加一个文件

cd project/

echo "NO.1" > 1.html
git status #查看状态

 第一次查看,这个文件还没有添加到暂存区的

 添加到暂存区

使用 git add 把新建的文件加入暂存区域

git add 1.html
或
git add .   #点代表目录下的所有文件

查看文件状态

有添加,那么就有删除(此处说的是删除暂存区里的操作,不会删除文件)

 git rm --cached readme

 提交到本地仓库

使用 git commit 命令把缓存区的文件添加到本地仓库

git commit -m "NO.1-html"   #-m 后面添加备注信息

需设置账号和邮箱,需知道是那个用户提交的文件

设置账号和邮箱

git config --global user.name "xiaolu"

 git config --global user.email "12346@qq.com"

 重新提交修改到本地仓库

git commit -m "no.1"

 git log 查看日志

git log

 到目前为止自己本地仓库就提交结束了。之后就是提交到远程仓库了。

确认本地仓库和远程的状态是否正常

git remote -v 查看本地存储的远程仓库信息

 git remote -v

 说明:origin 表示远程仓库的别名(默认为 origin,fetch更新类似于 update,push推数据相当于 commit)以后提交代码的时候只需要使用 origin 这个别名即可。

扩展:

当不是 clone(克隆)出来的项目,就不会有任何结果,需自己添加,命令如下:

git remote add origin git@192.168.1.110:/home/git/project.git

git remote -v

origin 是起的别名,可以自定义

做完这步然后就是远程推数据了(必须保证本地仓库里面有提交,注意是本地仓库而不是暂存区)

把本地仓库代码推送到远程仓库

git push origin master   

push是把暂存区里的数据推送数据到远程仓库

 GIT 初始化

GIT 通常有两种方式来进行初始化:git clone 和 git init

1. git clone:克隆,一种简单的初始化方式,当有远程的 Git 版本库,只需要在本地克隆一份

例如: git仓库目录是 //var/www/html/,使用 git clone 用户名@远程库IP:/home/git/project.git '这个URL地址的远程版本库完全克隆到本地/var/www/html/目录下面

2. git init he 和 git remote:使用 git init 命令进行初始化,git以后会对改目录下的文件进行版本控制, 初始化时 git init --bare 加 --bare 初始化数据库则没有工作目录,此目录没有任何执行查阅权限,一般专门作为存放库文件时使用。

git remote add 命令来增加一个远程服务器端

例如:

mkdir /git_test

git init /git_test/  #初始化 git,指定git仓库文件路径,同时也是工作目录

cd /git_test/

git remote add test git@192.168.1.110:/home/git/project.git   #添加远程仓库

[root@localhost git_test]# git remote -v
test    git@192.168.1.110:/home/git/project.git (fetch)
test    git@192.168.1.110:/home/git/project.git (push)

四.Git 基本命令

1、git pull:从版本库将代码拉到本地

2、git add:将所有改动的文件放到暂存区,由git进行管理

3、git rm:从当前工作空间中和暂存区中删除文件

4、git commit:提交当前工作空间的修改内容到本地仓库

5、git push:将本地commit的代码更新到远程版本库中,

6、git log:查看历史日志

五、分支操作

1.git的分支是什么

分支是从主分支分离出来进行另外操作,不影响主分支的操作,分支做完事情后合并到主分支上而分支的任务完成可以删掉了

Git的分支无论创建、切换和删除与合并,版本库大小都很快,只是修改指针

2.分支管理

通过 git branch 命令来查看我们git仓库的分支,*号代表目前所在的分支

git branch name 命令来创建分支,而建立的分支的指针,指向最新提交的对象

使用 git checkout name 命令切换分支,默认主分支为master,根据指针找到所指向的commit对象

每次提交,git都把他们串成一条线,master分支都会向前移动,master指向最新提交,HEAD此时指向master(HEAD指向当前分支,master指向提交点)

 当建立分支test之前,只有master一主分支,所有的开发都是在master分支上,通过git branch test 创建test分支,如图二,但HEAD还是指向master分支的最近一次提交,执行git checkout test切换到test分支后,HEAD就指向test分支的最近一次提交c3

 

在test分支上进行代码文件提交 c4 和 c5两个版本,那test 和 head都指向test分支的最近一次提交c5,图三 master此时没有任何提交,仍然指向c3,这个时候将test分支合并到master分支,这个过程为 Fast-forward 快进,test任务完成可以通过 git branch -d test将他删除。

注;合并时要切换到主分支

 当master分支上进行提交两个版本,此时master和head 指针都指向 c7,在那个分支开发head指向的就是那个分支上的commit,这时合并分支的话如下:

 先切换到master分支,通过git merge test 将 test 分支合并到 master,在合并时不同分支不能对同一个文件做修改,将c7和c5合并产生新的文件快照并用新的commit对象c8记录

如对同一个文件进行了修改产生了冲突,git就会停下合并操作,处理号冲突后在提交(c8)

但是test是没有移动的,此时还可以在test上继续开发,再合并到master,如果test已经没有利用价值了就可以删掉了。

3.创建合并分支:

1)查看分支

cd git/   #进入工作目录仓库

git branch   #查看分支情况,*号代表当前所在分支

2)创建分支

语法:git branch 分支名

git branch test  #创建分支

 git branch  #查看分支

3)切换分支

git checkout test

git branch

 在test分支上操作:

echo "no.5" > 5.html

git add 5.html #添加到暂存区

git commit -m "no.5-> 5.html"   #提交到本地仓库

注:git checkout -b 分支名    #创建并切换到分支

4)重命名分支

git branch -m  旧分支名   新分支名

5)合并分支

合并前保证在master主分支上

git checkout master  
 
git merge test  #合并分支

6)删除分支

git branch -d 分支名

git branch -d  分支名    #强制删分支

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蟹黄堡!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值