window 客服端 centos服务端git安装使用,站点自动同步
git下载地址
服务端:https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.0.0.tar.gz
客户端:https://github.com/git-for-windows/git/releases/download/v2.24.1.windows.2/Git-2.24.1.2-64-bit.exe
服务端安装git及依赖
查看是否有安装git
rpm -qa | grep git
卸载git
rpm -e --nodeps git
依赖安装
yum install expat-devel perl-ExtUtils-MakeMaker package -y
解压git-2.0.0.tar.gz
tar zxvf git-2.0.0.tar.gz
进入git-2.0.0目录
make prefix=/usr/local/server/git all
make prefix=/usr/local/server/git install
查看版本
git --version
创建用户组
groupadd git
创建用户及项目目录
useradd gitlap -d /usr/local/server/project.git -g git
创建用户及目录错误可以使用下面命令来删除
userdel gitlap
rm -rf /var/spool/mail/gitlap
rm -rf /usr/local/server/project.git
设置密码
passwd gitlap
设置权限组
chown -R gitlap:git /usr/local/server/git
初始化仓库
git init --bare /usr/local/server/project.git
设置权限组
chown -R gitlap:git /usr/local/server/project.git/
创建软连接
ln -s /usr/local/server/git/bin/git /usr/bin/git
ln -s /usr/local/server/git/bin/git-upload-pack /usr/bin/git-upload-pack
ln -s /usr/local/server/git/bin/git-receive-pack /usr/bin/git-receive-pack
用户添加到用户组
usermod -G git lllanpl
给目录权限
chmod -R g+ws ./*
给用户组权限
chgrp -R gitgroup ./*
git config core.sharedRepository true
客户端安装使用
安装就不説了,跟着提示下一步就
使用:
新建文件夹,右键选择Git bash Here
设置名称邮箱
git config --global user.name '名称'
git config --global user.email '邮箱'
从远程库克隆一个到本地库
git clone gitlap@192.168.2.100:/usr/local/server/project.git
关联本地仓库,远程库的名字为origin
git remote add origin gitlap@192.168.2.100:/usr/local/server/project.git
解决文件空格冲突
git rm -r --cached .
git config core.autocrlf false
把所有要提交的文件修改放到暂存区
git add 文件名称
把暂存区的所有内容提交到当前分支
git commit -m '提示语/描述'
第一次把当前分支master推送到远程,-u参数不但推送,而且将本地的分支和远程的分支关联起来
git push -u origin master
把当前分支master推送到远程
git push origin master
查看工作区状态
git status
查看文件修改内容
git diff
查看提交历史
git log
单行显示
git log --pretty=oneline
回退到上一个版本,其中(HEAD^^(上上版本),HEAD~100(往上100个版本))
git reset --hard HEAD^
(版本号) 可回到指定版本
commit id
查看历史命令
git reflog
查看工作区和版本库里最新版本的区别
git diff HEAD -- <file>
用版本库的版本替换工作区的版本,无论是工作区的修改还是删除,都可以'一键还原'
git checkout -- <file>
把暂存区的修改撤销掉,重新放回工作区。
git reset HEAD <file>
删除文件,若文件已提交到版本库,不用担心误删,但是只能恢复文件到最新版本
git rm <file>
其中说明
【工作区(Working Directory)
版本库(Repository) #.git
stage(index) 暂存区
master Git自动创建的分支
HEAD 指针
】
免密码,创建证书登录
添加证书之前,还要做这么一步:
1、首先将Git服务器/etc/ssh/ssh_config文件打开RSA认证 。打开ssh_config文件中下面的几个注释,没有自行添加:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
2、创建authorized_keys文件,用于存储客户端公钥
然后执行以下命令,创建一个文件为: /usr/local/server/project.git/.ssh/authorized_keys
mkdir /usr/local/server/project.git/.ssh
chmod 700 /usr/local/server/project.git/.ssh
touch 700 /usr/local/server/project.git/.ssh/authorized_keys
chmod 600 /usr/local/server/project.git/.ssh/authorized_keys
修改.ssh/authorized_keys的拥有者
chown gitlap:git /usr/local/server/project.git/.ssh
chown gitlap:git /usr/local/server/project.git/.ssh/authorized_keys
3、创建客户端公钥(.pub文件)
创建私钥,执行 ssh-keygen -t rsa -C "你的邮箱"
linux可直接执行/windows可在Git Bash命令行窗口执行该命令,命令后,不输入,直接3个回车,( linux在/root/.ssh目录下、window在C:\Users\Administrator\.ssh)会生成id_rsa和id_rsa.pub两个文件,将id_rsa.pub文件内容追加到authorized_keys文件里,一个一行
4、禁止git用户登录
为安全起见,需要禁止git用户登录服务器,修改/etc/passwd文件:
找到git用户的配置:
gitlap:x:1001:1001::/home/git:/bin/bash
改为:
gitlap:x:1001:1001::/home/git:/bin/git-shell
分支
创建并切换分支
git checkout -b dev 相当于git branch dev 和git checkout dev
查看当前分支,当前分支前有个*号
git branch
创建分支
git branch <name>
切换分支
git checkout <name>
合并某个分支到当前分支
git merge <name>
删除分支
git branch -d <name>
查看分支合并图
git log --graph
禁用Fast forward合并dev分支
git merge --no-ff -m 'message' dev
隐藏当前工作现场,等恢复后继续工作
git stash
查看stash记录
git stash list
仅恢复现场,不删除stash内容
git stash apply
删除stash内容
git stash drop
恢复现场的同时删除stash内容
git stash pop
强行删除某个未合并的分支
git branch -D <name>
开发新feature最好新建一个分支
查看远程仓库/详情
git remote
git remote -v
抓取远程提交
git pull
在本地创建和远程分支对应的分支
git checkout -b branch-name origin/branch-name
建立本地分支和远程分支的关联
git branch --set-upstream branch-name origin/branch-name
其他---标签
给当前分支最新的commit打标签
git tag v1.0
-a指定标签名,-m指定说明文字
git tag -a v0.1 -m 'version 0.1 released' 362816
可以用PGP签名标签
git tag -s <tagname> -m 'blabla'
查看所有标签
git tag
查看标签信息
git show v1.0
删除标签
git tag -d v0.1
推送某个标签到远程
git push origin <tagname>
推送所有尚未推送的本地标签
git push origin --tags
服务器设置自动同步站点
自动同步功能用到的是 git 的钩子功能,
在git项目下的hooks下新建post-receive文件
vim /usr/local/server/project.git/hooks/post-receive
加入下面代码
#!/bin/bash
git --work-tree=/usr/local/server/www checkout -f
chmod -R 777 /usr/local/server/www/*
给新建文件post-receive 执行或777权限
chmod +x post-receive
chmod 777 ./post-receive
创建完成就可以自动同步站点啦,