linux的git服务器和本地git客户端搭建
一:Git 服务器配置命令
1.安装git 或者升级git
sudo apt-get install git
sudo apt-get install git
2.服务器git版本
git —version
创建git仓库
mkdir <工程名>.git
进入到该目录下,初始化git repository
cd <工程名>.git
git --bare init
3.远程仓库的地址一般组成的格式是:
<用户名>@<服务器地址>:<仓库全路径>
仓库全路径这个也不难理解,直接在<工程名>.git目录下输入pwd,获取<工程名>.git的全路径。
那么例如整个远程仓库的地址就是:
git@120.21.11.21:/home/git/gitRepository/pythonServer/project.git
6.本地仓库与远程仓库绑定
故名思议,就是让本地的git仓库和远程的git仓库进行绑定。这里需要用到的是之前记下来的远程仓库的地址,也就是
root@120.21.11.21:/home/git/gitRepository/pythonServer/project.git
命令行的绑定方式是:
git remote add origin git@120.21.11.21:/home/git/gitRepository/pythonServer/project.git
7.生成客户端ssh公钥git的远程推送功能需要用到ssh协议,linux自带ssh工具,可以很方便地满足我们的需求。
首先确认一下客户端本地是否已经存在ssh的公钥,可以直接输入
cat ~/.ssh/id_rsa.pub
如果返回了一串以ssh-rsa开头的字符串的话则说明之前已经存在公钥了,可以直接将这一串字符串复制下来。如果该条命令提示文件不存在或者是返回值为空的话,则需要创建公钥,只需要在命令行输入:
ssh-keygen
默认直接按回车,就会自动在~/.ssh/ 目录下创建id_rsa.pub,并且生成公钥,此时再用上面的方法,复制公钥。
8.服务端授权ssh公钥接下来要做的是将客户端的公钥注册到服务端中,打开服务端控制台,输入:
cat "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9+VK1abwzJg+VjxGwpwKnsYU3eBEjXolQKUfKxEAMO9DREvdFrvIF5KhBE9HJTp7CEFcAfgP6xkJdxchQcEUyPyda9mIz6M4OOeuuLcxJcrqqJWTN0Jj78I/kDUZUJZF7bcV4q0CyeZG1fo5ckjxOmFaYkCGcq8vmeuFySFpco71UMkudzclrtGa53AvfmuOP1u96CEud78p2gYrPP5qr9ZYBNM+E290ddGMV61rnEiL7taAsXMGpuCQSbI0/zBJ3YXvN/lJSOVHFSeMFbKv7WDSJFSiBVHXjtcDa5RvzzWaFMBV8+SW4zluhijp6Dvb7pHBaLhLg/JvOixmR1/or OboBear" >> ~/.ssh/authorized_keys
这双引号里面一大串的就是你之前复制的公钥,整句命令所做的事情就是将客户端的公钥添加到服务端的ssh授权表中。
9、实现自动同步到站点目录(www)
就比如刚才我们往远程仓库推送了index.php文件,虽然提示推送成功,但是我们现在在服务器端还看不到效果,心理总是不爽。又比如我写了个html页面,我想在站点中马上看到,那自动同步就派上用场了。
自动同步功能用到的是 git 的钩子功能,
服务器端:进入裸仓库:/home/testgit/sample.git
cd /home/testgit/sample.git
cd hooks
//这里我们创建post-receive文件
vim post-receive
//在该文件里输入以下内容
!/bin/bash
git --work-tree=/home/www checkout -f
//保存退出后,将该文件用户及用户组都设置成git
chown git:git post-receive
//由于该文件其实就是一个shell文件,我们还应该为其设置可执行权限
chmod +x post-receive
二:git 本地配置命令
1.安装git
检测是否安装git:git --version
debian系列安装命令:sudo apt-get install git
windows系列:一键安装msysgit
2.创建用户
git config --global user.name "name"
git config --global user.email "email@xx.xxx"
3.创建并初始化一个空仓库
mkdir warehouse_name //新建文件夹作为仓库
cd warehouse_name //进入文件夹
git init //初始化为仓库,自动生成.git
4.提交文件到仓库
git add file1 file2 ... //将文件放入缓冲区
git commit -m "提示信息" //将缓冲区的文件全部提交到仓库,-m后加提示信
息
git status //查看缓冲区状态
git diff //查看更改的内容
5.版本回退
git log 或 git log --pretty=oneline //查看历史版本
git reset --hard HEAD^ //相对于当前版本的回退,其中HEAD表示当前>版本,HEAD表示上一版本,HEAD^表示上上版本,以此类推
git reset --hard commit_id //指定commit_id的版本回退,commit_id为文件hash值,可只写几位
git reflog //显示历史输入命令
6.小结
刚初始化产生.git文件夹实质是版本库
add就是把工作区的文件添加到版本库中的缓存区(stage),commit就是将缓存
区(stage)中的文件放进master区中并清空缓存区(stage)
7.撤销操作和删除操作
git checkout -- filename //若缓存区有文件,则撤销到缓存区文件,若没
有,则回到当前版本库HEAD相同状态,若已经提交版本库,则参考版本回退
git reset HEAD filename //把缓存区的修改撤销掉,重新放回工作区
git rm & git commit //删除版本库里的文件并更新
本地git生成公钥
cat .ssh/id_rsa.pub //打开公钥