git 部署仓库

本文详细介绍如何使用Git进行项目的自动化部署与代码更新流程。包括创建裸仓库、配置权限、设置自动更新脚本、SSH密钥添加及常见问题解决。适用于需要频繁更新代码的团队,提高开发效率。

##新建一个git项目

cd /srv
git --bare init repository
chown -R git:git repository
cd /home
git clone  /srv/repository
cd /home/repository
vim h.txt
git add h.txt
git commit h.txt -m 'test'
git push origin master


##设置自动更新代码
vim /srv/repository/hooks/post-receive

#!/bin/sh
# 指定我的代码检出目录
DIR=/home/repository
git --work-tree=${DIR} clean -fd
# 直接强制检出
git --work-tree=${DIR} checkout --force


##使用
 

git clone git@192.168.1.1:/srv/repository


##可能要注意的是

1,添加SSH key

usermod -s /usr/bin/git-shell -d /home/git -g git git


将用户git的登录Shell修改为git-shell,主目录改为/home/git  用户组改为git

2,将客户端ssh key公钥添加到
/home/git/.ssh/authorized_keys

3,自动更新权限问题

git config --global core.fileMode false
chown -R git:git /srv/repository/hooks/post-receive
chmod -R 755 /srv/repository/hooks/post-receive
chown -R git:git /srv/
chown -R nginx:nginx /home/repository
chmod -R 777 /home/repository/

每个项目:

cd /home/repository/
git config core.fileMode false
mkdir .log
chown -R nginx:nginx .log/
mkdir data
chown -R nginx:nginx data/
chown -R git:git .git/
chown -R git:git .gitignore

##忽略某一个文件,不更新到本地,好像文件有修改的话还是会拉取...
 

git rm xxx 
git update-index --assume-unchanged config/config.php


##更让某一个文件:1-->更新本地库,不更新工作拷贝;2-->再从本地库更新单个文件

git fetch
git checkout origin/master -- path/to/file

##强制更新

git fetch --all
git reset --hard origin/master
git pull


 

<think>好的,用户想了解如何通过Git进行项目部署,特别是服务器端或生产环境的代码部署。首先,我需要整理一下已有的引用内容,看看有没有可以直接用上的信息。引用1提到了在服务器使用Git部署更新网站的流程结束,并建议参考官方文档。引用2和3提到了具体的git clone命令和remote添加的方法。引用4提到了GitBlit的安装,引用5则涉及Jenkins和Python的部署,可能和自动部署有关。 用户的问题主要围绕Git部署教程,所以需要分步骤讲解。可能包括服务器端仓库的初始化、客户端的配置、自动部署钩子的设置等。根据引用3的例子,添加远程仓库的命令是git remote add testing ssh://...,这可以用来设置生产环境的仓库地址。引用2中的clone命令也是关键步骤。 接下来,可能需要解释如何设置裸仓库,以及post-receive钩子来触发自动部署。引用3中的例子显示了一个部署路径,可能需要在服务器上配置钩子脚本,将代码拉取到指定目录。另外,权限问题需要注意,比如用户权限和目录的写入权限,确保部署用户有足够的权限。 还要考虑是否需要使用Git钩子或第三方工具如GitBlit或Jenkins来自动部署流程,引用4和5提到了这些工具,可能可以作为扩展内容或相关问题的部分。同时,需要提醒用户关于安全性的问题,比如使用SSH密钥认证而非密码,以及部署目录的权限设置。 现在需要将这些步骤结构化,分成服务器端配置、客户端操作、自动部署、注意事项等部分。每个步骤要简明扼要,给出具体的命令示例,如初始化仓库、设置钩子脚本等。同时,根据引用内容,添加相关的引用标记,例如在讲解钩子脚本时引用3的例子。 可能的相关问题包括如何优化部署流程、如何处理部署中的权限问题、如何结合CI/CD工具等,这些都可以在最后的相关问题部分列出,帮助用户进一步探索。</think>### Git项目部署教程 通过Git实现服务器端代码部署的核心步骤分为**服务器仓库配置**、**客户端推送代码**和**自动部署触发**三个阶段。以下是详细流程: --- #### 一、服务器端配置 1. **创建裸仓库** 在服务器上初始化一个裸仓库(不包含工作目录)用于接收代码: ```bash mkdir /var/repo/project.git && cd /var/repo/project.git git init --bare ``` [^3] 2. **配置部署目录** 创建生产环境代码存放目录(例如网站根目录): ```bash mkdir -p /var/www/production chown git:git /var/www/production # 确保git用户有权限 ``` 3. **设置钩子脚本** 在裸仓库的`hooks`目录下创建`post-receive`钩子,实现自动同步代码到部署目录: ```bash # 编辑 /var/repo/project.git/hooks/post-receive #!/bin/sh git --work-tree=/var/www/production --git-dir=/var/repo/project.git checkout -f ``` 赋予脚本执行权限:`chmod +x post-receive` [^3] --- #### 二、客户端操作 1. **添加远程仓库** 在本地项目目录中关联服务器仓库: ```bash git remote add production ssh://git@yourserver.com:/var/repo/project.git ``` [^2] 2. **推送代码触发部署** 执行推送后,服务器钩子会自动同步代码到`/var/www/production`: ```bash git push production main ``` --- #### 三、自动化扩展(可选) 1. **结合CI/CD工具** 使用Jenkins、GitLab CI等工具实现测试->构建->部署的完整流水线。例如Jenkins监听Git仓库变动后触发部署脚本[^5]。 2. **使用Git托管平台** GitBlit、Gitea等工具提供可视化仓库管理,支持精细的权限控制[^4]。 --- #### 四、关键注意事项 - **权限控制**:部署用户(如`git`)需对目标目录有写入权限 - **SSH密钥认证**:推荐使用密钥登录而非密码,通过`ssh-keygen`生成密钥并上传到服务器的`~/.ssh/authorized_keys` - **目录隔离**:裸仓库部署目录分离,避免直接操作仓库文件 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值