IP | 主机名 | 节点 |
---|---|---|
192.168.117.14 | git_server | git服务端 |
192.168.117.15 | git_client | git客户端 |
YUM源安装Git
[root@git_client ~]# yum install -y git
编译安装Git(以服务端为例)
1.安装依赖库和编译工具
[root@git_server ~]# yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel wget
[root@git_server ~]# yum install -y gcc perl-ExtUtils-MakeMaker
2.下载官方源码包并解压,官方下载地址(https://mirrors.edge.kernel.org/pub/software/scm/git)
[root@git_server ~]# cd /usr/local/src/
[root@git_server src]# wget https://www.kernel.org/pub/software/scm/git/git-2.10.0.tar.gz
[root@git_server src]# tar zxvf git-2.10.0.tar.gz
3.创建安装目录,编译安装
[root@git_server ~]# mkdir /usr/local/git
[root@git_server ~]# cd /usr/local/src/git-2.10.0
[root@git_server git-2.10.0]# ./configure --prefix=/usr/local/git/ && make install
4.配置环境变量并生效配置
[root@git_server ~]# echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc
[root@git_server ~]# source /etc/bashrc
[root@git_server ~]# git --version
git version 1.8.3.1
Git初始配置及实验环境准备
1.创建git账号
[root@git_server ~]# useradd git
[root@git_server ~]# echo 'git' | passwd --stdin git
Changing password for user git.
passwd: all authentication tokens updated successfully.
2.使用git用户初始化git仓库,创建测试文件
[root@git_server ~]# su - git
[git@git_server ~]$ git init --bare project1.git
Initialized empty Git repository in /home/git/project1.git/
[git@git_server ~]$ cd project1.git/
[git@git_server project1.git]$ git config --global user.email "82900528@qq.com"
[git@git_server project1.git]$ git config --global user.name "gqd"
[git@git_server project1.git]$ echo '123' > file1.txt //创建测试文件
[git@git_server project1.git]$ git init //初始化
[git@git_server project1.git]$ git add file1.txt //将文件添加至暂存区
[git@git_server project1.git]$ git commit -m 'v1' //提交第一次更改
3.服务端git用户和客户端root用户,配置双向免密登录
[ 服务端 ]
[git@git_server ~]$ ssh-keygen
[git@git_server ~]$ ssh-copy-id root@192.168.117.15
[ 客户端 ]
[root@git_client ~]# ssh-keygen
[root@git_client ~]# ssh-copy-id git@192.168.117.14
4.限制git用户登录
[git@git_server ~]$ su -
[root@git_server ~]# usermod git -s /usr/bin/git-shell
5.客户端修改git配置,克隆服务端的project1仓库至本地
[root@git_client ~]# git config --global user.name 'gqd'
[root@git_client ~]# git config --global user.email '82900528@qq.com'
[root@git_client ~]# mkdir git/
[root@git_client ~]# cd git/
[root@git_client git]# git clone git@192.168.117.14:/home/git/project1.git
Git仓库使用
1.查看远程分支、查看本地分支、查看全部分支;
[root@git_client project1]# git branch -r //查看远程分支
[root@git_client project1]# git branch //查看本地分支
[root@git_client project1]# git branch -a //查看全部分支
2.创建本地分支devserver1-6,创建dev分支并立即切换;
[root@git_client project1]# git branch devserver1
[root@git_client project1]# git branch devserver2
[root@git_client project1]# git branch devserver3
[root@git_client project1]# git branch devserver4
[root@git_client project1]# git branch devserver5
[root@git_client project1]# git branch devserver6
[root@git_client project1]# git checkout -b dev
Switched to a new branch 'dev'
3.切换回主分支,并查看当前所在分支;
[root@git_client project1]# git checkout master
Switched to branch 'master'
[root@git_client project1]# git branch
dev
devserver1
devserver2
devserver3
devserver4
devserver5
devserver6
* master
4.在分支devserver1里创建一个test.txt,并切换回主分支查看是否存在这个test.txt文件;
[root@git_client project1]# git checkout devserver1 //切换devserver1分支
Switched to branch 'devserver1'
[root@git_client project1]# touch test.txt //创建test文件
[root@git_client project1]# git add test.txt //添加test文件至暂存区
[root@git_client project1]# git commit -m 'v1' //提交更改
[root@git_client project1]# git checkout master //切换至主分支
[root@git_client project1]# ll
total 0
5.合并devserver1和主分支,查看主分支里是否有test.txt文件;
[root@git_client project1]# git merge devserver1
[root@git_client project1]# ll
total 0
-rw-r--r-- 1 root root 0 Mar 17 04:42 test.txt
6.删除本地分支devserver1,查看剩下所有分支;
[root@git_client project1]# git branch -d devserver1
[root@git_client project1]# git branch
dev
devserver2
devserver3
devserver4
devserver5
devserver6
* master
7.推送本地分支devserver2-6到远端服务器,并查看是否成功;
[ 客户端 ]
[root@git_client project1]# git remote -v //查看与远程服务器是否连接
[root@git_client project1]# git push origin devserver2
[root@git_client project1]# git push origin devserver3
[root@git_client project1]# git push origin devserver4
[root@git_client project1]# git push origin devserver5
[root@git_client project1]# git push origin devserver6
[ 服务端 ]
[git@git_server project1.git]$ git branch
devserver2
devserver3
devserver4
devserver5
devserver6
* master
8.运用三种办法删除远端分支devserver2-4;
[root@git_client project1]# git push origin --delete devserver2
[root@git_client project1]# git push origin :devserver3
[root@git_client project1]# git branch -r -d origin/devserver4
9.在远程创建分支linuxgit,并拉取分支到本地客户端服务器上;
[ 服务端 ]
[git@git_server project1.git]$ git branch linuxgit
[ 客户端 ]
[root@git_client project1]# git fetch origin linuxgit:linuxgit
10.如何快速有效的拉取远程服务端的全部分支;
[root@git_client project1]# git checkout dev //切换到本地有、而远程没有的一个分支上,避免冲突
[root@git_client project1]# git branch -r | grep -v '\->' | cut -d'/' -f2 | xargs -n1 -i git fetch origin {}:{}