linux 创建git 仓库

#创建一个工作区
mkdir test_work

#创建一个git 仓库(服务库,非工作区)
mkdir test_git 
cd test_git
git init --bare

# 创建一个post-receive 勾子,用于提交代码后,自动将代码更新到 工作区 test_work
vim ./hooks/post-receive

#! /bin/sh
GIT_WORK_TREE=test_work git checkout -f
sudo chmod -R 777 test_work

# 将以上三行shell 写入 post-receive 文件里,
# 上面test_work 是你的工作区,路径写绝对路径
# 写完之后,保存退出vim 编辑器

#修改工作区的用户和用户组,用于 git 的receive 勾子有权限更新
chown git:git -R test_work

#修改test_git 仓库的用户和用户组,并给 post-receive 文件 增加执行权限
chown git:git -R test_git
chmod +x test_git/hooks/post-receive
# 下面详细步骤转载 https://www.cnblogs.com/wangfg/p/9501441.html
# 1
、安装 $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel $ yum install git # 2、接下来我们 创建一个git用户组和用户,用来运行git服务: $ groupadd git $ useradd git -g git $ passwd ****** # 3、创建git仓库 $ cd /home/git $ git init --bare gitrepo.git $ chown -R git:git gitrepo.git # 4、禁用shell登录(为安全考虑,git用户不允许登录shell) # 修改/etc/passwd $ vim /etc/passwd # 找到git的用户设置 如: git:x:502:503::/home/git:/bin/bash 改为 git:x:502:503::/home/git:/bin/git-shell # 这样用户用git账户ssh连接后只能使用git命令了 # 5、打开 RSA 认证 # 进入 /etc/ssh 目录,编辑 sshd_config,打开以下三个配置的注释: RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys # 保存并重启 sshd 服务: $ /etc/rc.d/init.d/sshd restart # 6、客户端安装git并在(window的git bash)git操作提交 # 进入一个空的工作目录 # 设置用户信息: $ git config --global user.name "username" $ git config --global user.email "your@example.com" # 7、#初始化git $ git init # 8、管理公钥 $ ssh-keygen -C 'your@email.com' -t rsa #为你生成rsa密钥,可以直接一路回车,执行默认操作 # 客户端生成密要方式同上。 # 生成密钥后,一般C:Users用户名.ssh会出现 .ssh ├── id_rsa └── id_rsa.pub # 公钥 服务端需要里边内容验证连接着身份 # 将id_rsa.pub 里边内容复制到authorized_keys # 如找不到authorized_keys文件,则需在服务器端新建 $ cd /home/git $ mkdir .ssh $ chmod 755 .ssh $ touch .ssh/authorized_keys $ chmod 644 .ssh/authorized_keys # 在客户端上,打开 id_rsa.pub 复制里边内容,一行一个 $ vim /home/git/.ssh/authorized_keys # 粘贴客户端生成的公钥,保存退出 # 9、测试本地文件提交到远程仓库 $ vim readme.md # 编辑些内容保存退出 $ git add readme.md #添加到git缓存中 $ git commit -m 'write readme file' #提交修改 # 添加远程git仓库 $ git remote add origin git@your_host_name:/home/git/gitrepo.git $ git push origin master #这样就同步到服务器了 # 其他人要同步 # 克隆和推送: $ git clone git@your_host_name:/home/git/gitrepo.git $ vim readme.md $ git commit -am 'fix for the README file' $ git push origin master # 代码同步(HOOK) # 上边git用于做了中心的版本控制 # 但是还想让服务器接到修改更新后自动同步代码到网站目录中,便于测试开发 # 如下操作是可以实现 # 假定网站目录在/www/web下 cd /home/git/gitrepo.git/hooks vim post-receive #创建一个钩子 # 写入下面内容 GIT_WORK_TREE=/www/web git checkout -f # 保存退出 chown git:git post-receive chmod +x post-receive # 如此,下次提交修改,代码会自动同步到指定目录中
Talk is cheap, show me the code.
原文地址:https://www.cnblogs.com/cidgur/p/8028932.html