版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lzxlfly/article/details/81160113
由于yum install git 安装的版本为1.7.1,比较老,所以这里想安装新版本
但git依赖多,找不到不有git新版本的yum源,故用yum安装git依赖与源码安装git相结合
1、源码安装
依赖安装
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y
下载:https://mirrors.edge.kernel.org/pub/software/scm/git/
解压:tar -zxvf git-2.12.0.tar.gz
编译:make prefix=/usr/local/git all
安装:make prefix=/usr/local/git install
配置环境变量
编辑:vim /etc/profile 加入:export PATH=$PATH:/usr/local/git/bin 生效:source /etc/profile
查看:git --version
2、 基本配置
创建git 用户
[root@localhost home]# useradd git
[root@localhost home]# passwd git
创建git仓库
mkdir -p git/repo/demo.git
初始化仓库
git init --bare git/repo/demo.git
#显示如下
Initialized empty Git repository in /home/git/repo/demo.git/
ls查看如下:
授予git用户访问权限
chown -R -v git:git ./git/* #chown修改用户、用户组属性,为git用户所有
chmod 777 -R -v ./git/ #chmod有读写权限 -R递归遍历 -v 输出每个文件修改的信息
3、设置http代理
1、查看httpd服务是否安装
httpd -version
2、若没,进安装
yum -y install httpd
3、设置代理
#vim /etc/httpd/conf/httpd.conf 加入以下内容
DocumentRoot /home/git
<Directory "/home/git">
ServerName 127.0.0.1:80
KeepAlive on
<VirtualHost *:80>
SetEnv GIT_PROJECT_ROOT /home/git/repo
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/local/git/libexec/git-core/git-http-backend/
RewriteEngine On
RewriteCond %{QUERY_STRING} service=git-receive-pack [OR]
RewriteCond %{REQUEST_URI} /git-receive-pack$
RewriteRule ^/git/ - [E=AUTHREQUIRED:yes]
<Files "git-http-backend">
AuthType Basic
AuthName "Git Access"
AuthUserFile /etc/httpd/conf/git.htpasswd
Require valid-user
Order deny,allow
Deny from env=AUTHREQUIRED
Satisfy any
</Files>
</VirtualHost>
4、添加用户和密码
#首次创建git.passwd,并添加用户,设置密码
htpasswd -m -c /etc/httpd/conf/git.htpasswd zhangsan
#追加用户,去掉-c即可
htpasswd -m /etc/httpd/conf/git.htpasswd
5、设置apache用户权限
chown apache:apache /etc/httpd/conf/git.htpasswd
6、设置selinux状态
# 查看selinux状态
getenforce
# 设置为0宽容模式,临时关闭不重启
setenforce 0
#永久关闭,重启生效
vim /etc/sysconfig/selinux
#SELINUX=enforcing
SELINUX=disabled
7、启动httpd服务
service httpd start 或 service httpd restart
4、基本操作
以下操作都是在windows的git客户端,安装简单,不再描述
1、设置用户名和邮箱
git config --global user.name "lzxlfly" #设置用户名
git config --global user.email "[email protected]" #设置邮箱
git config --list #查看全局配置
git config --global --unset user.name #删除用户名
git config --global --unset user.email #删除邮箱
git config --global --edit #编辑配置
2、clone版本
admin@DESKTOP-851FS3J MINGW64 ~/Desktop/repo
$ git clone http://192.168.172.74/git/demo.git
Cloning into 'demo'...
warning: You appear to have cloned an empty repository.
#由于裸仓库,故有警告
3、添加到暂存区
#编辑一个readme.txt文件,#将工作区中的文件添加到暂存区了
admin@DESKTOP-851FS3J MINGW64 ~/Desktop/repo/demo (master)
$ git add readme.txt
4、 提交到版本库
admin@DESKTOP-851FS3J MINGW64 ~/Desktop/repo/demo(master)
$ git commit -m readme.txt
[master (root-commit) 0b351cb] readme.txt
1 file changed, 5 insertions(+)
create mode 100644 readme.txt
5、查看是否有未提交文件
admin@DESKTOP-851FS3J MINGW64 ~/Desktop/repo/demo (master)
$ git status
On branch master
nothing to commit, working tree clean
#没有任何文件未提交,工作区是干净的
6、推送到远程仓库
admin@DESKTOP-851FS3J MINGW64 ~/Desktop/repo/demo (master)
$ git push origin master:master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 233 bytes | 233.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://192.168.172.71:81/git/demo.git
* [new branch] master -> master
#或者git push origin master,会自动在远程仓库创建master分支
7、创建分支
#创建分支
admin@DESKTOP-851FS3J MINGW64 ~/Desktop/repo/demo (master)
$ git branch dev
#查看分支
admin@DESKTOP-851FS3J MINGW64 ~/Desktop/repo/demo (master)
$ git branch
dev
* master
8、 切换分支
#切换分支
admin@DESKTOP-851FS3J MINGW64 ~/Desktop/repo/demo (master)
$ git checkout dev
Switched to branch 'dev'
admin@DESKTOP-851FS3J MINGW64 ~/Desktop/repo/demo (dev)
$ git branch
* dev
master
#可以看到已经切换到dev分支了
#push 远程对应分支,远程没有dev分支,自动创建
admin@DESKTOP-851FS3J MINGW64 ~/Desktop/repo/demo(dev)
$ git push origin dev
Total 0 (delta 0), reused 0 (delta 0)
To http://192.168.172.74/git/task.git
* [new branch] dev -> dev
9、关联分支
admin@DESKTOP-851FS3J MINGW64 ~/Desktop/repo/demo(dev)
$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> dev
# git pull时在远程仓库找不到当前分支信息,要关联起来
admin@DESKTOP-851FS3J MINGW64 ~/Desktop/repo/demo(dev)
$ git branch --set-upstream-to=origin/dev dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.
#可以看到本地分支dev与远程分支dev已经关联起来
10、删除分支
admin@DESKTOP-851FS3J MINGW64 ~/Desktop/repo/demo (master)
$ git branch -d dev
Deleted branch dev (was 9c61db6).
11、合并分支
#切换到master分支,把dev分支合到master
admin@DESKTOP-851FS3J MINGW64 ~/Desktop/repo/demo (master)
$ git merge --no-ff dev
Already up to date.
#默认情况下,Git执行"快进合并"(fast-farward merge)
#使用--no-ff参数后,会执行正常合并,在master分支上生成一个新节点
12、查看历史记录
admin@DESKTOP-851FS3J MINGW64 ~/Desktop/repo/demo (master)
$ git log
commit 9c61db6c07d0acc79730f75d36adf39c962af147 (HEAD -> master)
Author: zhangsan <[email protected]>
Date: Wed Aug 8 21:55:08 2018 +0800
readme.txt