版本控制系统

远程连接关闭防火墙和SEliniux

集中式   SVN

分布式   GIT          www.github.com      www.gitee.com

服务端gitlab

[root@gitlab ~]# dnf -y install git         #服务端安装git
[root@gitlab ~]# dnf  repolist  -v        #查看yum仓库是否正常
[root@gitlab ~]# mkdir  /var/lib/git      #创建git目录

[root@gitlab ~]# git  init  /var/lib/git/project  --bare    #创建空仓库,用来存储项目数据,project(项目名称:自定义)

客户端develop

[root@develop ~]# dnf -y install git     #客户端安装git

[root@develop ~]# git clone 192.168.4.20:/var/lib/git/project         #克隆仓库
[root@develop ~]# ls
    anaconda-ks.cfg  project
[root@develop ~]# ls -A ~/project/
    .git
[root@develop ~]# cd project/          #!进入仓库!操作仓库都需要进入到仓库的状态
[
root@develop project]# git config --global user.name "abc"          #定义客户端用户名
[root@develop project]# git config --global user.email  "abc@abc.com"      #定义客户端邮箱
[root@develop project]# cat ~/.gitconfig        #查看结果
    [user]
            name = abc
            email = abc@abc.com
[root@develop project]# echo "abc001" > 001.txt
[root@develop project]# ls
     001.txt
[root@develop project]# git add .    #将仓库有变化的文件提交到暂存区

[root@develop project]# git commit -m "001"         #提交之前暂存区的数据永久保存到仓库
     [master (root-commit) 1f37c5d] 001
      1 file changed, 1 insertion(+)
      create mode 100644 001.txt

[root@develop project]# git push       #将本地仓库数据推送到远程git仓库服务器中
   root@192.168.4.20's password:   #服务器端的密码
[root@develop project]# echo "13545643" > 002.txt
[root@develop project]# git add .
[root@develop project]# git commit -m "002"     
#-m "002"   日志信息
     [master a360465] 002
      1 file changed, 1 insertion(+)
      create mode 100644 002.txt
[root@develop project]# git push
     root@192.168.4.20's password:   
 #服务端密码

[root@develop project]# git log                #查看完整日志信息
[root@develop project]# git log --pretty=oneline      #查看精简日志
[root@develop project]# git log --oneline         #最精简精简日志
      a360465 (HEAD -> master, origin/master) 002
      1f37c5d 001
[root@develop project]# git                     #本机操作日志

 

HEAD指针,可以将仓库恢复到过去的状态

HEAD指针是一个可以在任何分支和版本移动的指针,通过移动指针我们可以将数据还原至任何版本。每做一次提交操作都会导致git更新一个版本,HEAD指针也跟着自动移动

 

                                         git常用指令列表

准备工作(多对数据仓库进行修改、提交操作,以产生多个版本)

[root@develop project]# git reflog               #查看Git版本信息。首先查询日志可以看到第1列的随机字符串,该字符串定义了每次commit提交的数据状态
    a360465 (HEAD -> master, origin/master) HEAD@{0}: commit: 002
    1f37c5d HEAD@{1}: commit (initial): 001
[root@develop project]# git reset --hard 1f37c5d             #移动HEAD指针,将数据还原到任意版本
     HEAD is now at 1f37c5d 001
[root@develop project]# git reflog
     1f37c5d (HEAD -> master) HEAD@{0}: reset: moving to 1f37c5d
     a360465 (origin/master) HEAD@{1}: commit: 002
     1f37c5d (HEAD -> master) HEAD@{2}: commit (initial): 001

回复到过去的时间节点,找回数据思路:

  1. git reflog  查看日志,找到旧数据所在时间节点
  2. git  reset  --hard  xxxx    回到过去,xxxx是时间节点的记录
  3. 把需要找回的数据,从仓库中拷贝到另外一个目录
  4. git  reset  --hard  xxxx    回到现在
  5. 在之前的目录找回旧数据


 

Git分支

当项目内容比较多时,可以在git中使用分支,不同分支的文件可以互不干扰

常见的分支规范如下:

  • MASTER分支(MASTER是主分支,是代码的核心)。
  • DEVELOP分支(DEVELOP最新开发成果的分支)。
  • RELEASE分支(为发布新产品设置的分支)。
  • HOTFIX分支(为了修复软件BUG缺陷的分支)。
  • FEATURE分支(为开发新功能设置的分支)。

[root@develop project]# git branch     #查看分支,*代表目前所在的分支


     * master
[root@develop project]# git branch hotfix      #创建分支(名称为hotfix)
[root@develop project]# git branch           #查看分支
       hotfix
     * master        #正在使用的分支
[root@develop project]# git checkout hotfix             #切换分支
     Switched to branch 'hotfix'
[root@develop project]# git branch
     * hotfix      #正在使用的分支
       master
 

[root@develop project]# git checkout hotfix                #切换分支为 hotfix 
[root@develop project]# echo "HOTFIX-001" > hotfix001.txt
[root@develop project]# ls
    001.txt  002.txt  A  B  hotfix001.txt
[root@develop project]# git add .
[root@develop project]# git commit -m "hotfix001"
[hotfix 25d1e02] hotfix001
     1 file changed, 1 insertion(+)
     create mode 100644 hotfix001.txt

[root@develop project]# git checkout master       #切换为master分支
[root@develop project]# ls                  #无法看到hotfix写的文件               
     001.txt  002.txt  A  B

[root@develop project]# echo "mast001" > master001.txt         #在master分支中创建文件
[root@develop project]# git add .
[root@develop project]# git commit -m "master001"
[root@develop project]# ls
     001.txt  002.txt  A  B  master001.txt

[root@develop project]# git checkout hotfix      #切换到hotfix分支
[root@develop project]# ls
     001.txt  002.txt  A  B  hotfix001.txt

 

[root@develop project]# git push --set-upstream origin hotfix           #上传到服务器
     root@192.168.4.20's password:                  #服务器密码

[root@develop project]# git checkout master      #切换为master分支  默认分支

[root@develop project]# git push            #上传到服务器        必须上传之后才会属于这个分支
     root@192.168.4.20's password:        #服务器密码

[root@develop project]# git merge hotfix    #将hotfix分支的数据与当前的分支进行合并
  :wq

 

删除仓库重新在服务端创建空仓库在客户端克隆空仓库

git clone 192.168.4.20:/var/lib/git/test

cd test/

echo "ABCD~~" > readme.txt

git add .

git commit -m "readme"

分支中的特殊情况:如果分别在不同分支,创建同名文件,内容不同,再进行合并时,会发生冲突,此时需要手工修改冲突文件,修改完之后,就可以解决冲突

git branch hotfix     #创建新分支

git checkout hotfix    #切换到新分支

echo xyz > abc.txt    #创建文件

git add .    #提交到暂存区

git commit -m "abc"    #提交到本地仓库

git checkout master   #切换到默认分支

echo abc > abc.txt     #创建文件

git add .   #提交到暂存区

git commit -m "abc"   #提交到本地仓库

git merge hotfix   #合并分支,失败,因为两个分支有同名文件,但内容不同

vim abc.txt   #修改文件,保存退出后即可解决

git add .   #提交到暂存区

git commit -m "abc+"   #提交到本地仓库

 

 

 


 

 

[root@develop test]# git remote -v               #查看远程服务器的状态
     origin  192.168.4.20:/var/lib/git/test (fetch)
     origin  192.168.4.20:/var/lib/git/test (push)
[root@develop test]# git remote add tom 192.168.4.20:/var/lib/git/test          #与新服务器关联,名字叫tom
[root@develop test]# git remote -v
    origin  192.168.4.20:/var/lib/git/test (fetch)
    origin  192.168.4.20:/var/lib/git/test (push)
    tom     192.168.4.20:/var/lib/git/test (fetch)
    tom     192.168.4.20:/var/lib/git/test (push)
[root@develop test]# echo "test01" > test01.txt
[root@develop test]# git add .
[root@develop test]# git commit -m "test01"
[root@develop test]# git push -u origin master         #可以上传到多个服务器 的master分支
[root@develop test]# git push -u tom master           #可以上传到多个服务器 的master分支

[root@develop test]# git remote remove origin         #删除名为origin的服务器
[root@develop test]# git remote -v
    tom     192.168.4.20:/var/lib/git/test (fetch)
    tom     192.168.4.20:/var/lib/git/test (push)

[root@develop test]# echo test02.txt > test02.txt
[root@develop test]# git add .
[root@develop test]# git commit -m "test02.txt"
[root@develop test]# git push -u tom master        #上传到tom     的master分支      

[root@develop test]# git remote rename tom web         #改名为web
[root@develop test]# git remote -v
    web     192.168.4.20:/var/lib/git/test (fetch)
    web     192.168.4.20:/var/lib/git/test (push)

[root@develop test]# git remote add origin 192.168.4.20:/var/lib/git/web       #与新服务器关联,名字叫origin
[root@develop test]# git remote -v
origin  192.168.4.20:/var/lib/git/web (fetch)
origin  192.168.4.20:/var/lib/git/web (push)
web     192.168.4.20:/var/lib/git/test (fetch)
web     192.168.4.20:/var/lib/git/test (push)

[root@develop test]# git pull web master           #下载web服务器master分支下的数据
      From 192.168.4.20:/var/lib/git/test
       * branch            master     -> FETCH_HEAD
      Already up to date.
 

使用ssh协议建立连接,实现免密通信

develop下操作:

ssh-keygen    #创建ssh秘钥

ssh-copy-id 192.168.4.20   #传递秘钥到4.20

git clone 192.168.4.20:/var/lib/git/test   #克隆不需要密码

cd test                #进入仓库

echo xyz > xyz   #创建文件,然后提交

git add .

git commit -m "xyz"

git push               #上传到服务器无需密码














 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值