在本地 (Mac) 上将代码通过 Git 推送到远程 (Ubuntu) 服务器并自动检出
1. 准备工作
确保在本地和远程服务器上都安装了 Git。如果没有安装,可以使用以下命令进行安装:
-
Mac:
brew install git
-
Ubuntu:
sudo apt update
sudo apt install git
2. 设置远程服务器
假设远程服务器的 IP 是 123.123.123.123
,用户名是 root
,项目目录是 /www/wwwroot/note
。
步骤一:创建裸仓库
-
SSH 登录到远程服务器:
ssh root@123.123.123.123
-
创建裸仓库:
sudo mkdir -p /www/wwwroot/note.git cd /www/wwwroot/note.git sudo git init --bare
步骤二:设置工作目录
- 创建工作目录:
mkdir -p /www/wwwroot/note
步骤三:配置 post-receive
钩子
-
进入裸仓库的钩子目录:
cd /www/wwwroot/note.git/hooks
-
创建并编辑
post-receive
文件:sudo nano post-receive
-
在
post-receive
文件中添加以下内容:#!/bin/bash git --work-tree=/www/wwwroot/note --git-dir=/www/wwwroot/note.git checkout -f
-
保存并退出编辑器。
-
给
post-receive
钩子赋予执行权限:sudo chmod +x /www/wwwroot/note.git/hooks/post-receive
3. 本地提交和推送代码
步骤一:配置本地仓库
-
在本地机器上,进入项目目录并初始化 Git 仓库:
cd ~/notes git init
-
添加远程仓库:
git remote add origin ssh://root@123.123.123.123:/www/wwwroot/note.git
步骤二:提交并推送代码
-
添加并提交所有文件:
git add . git commit -m "Initial commit"
-
推送代码到远程仓库:
git push -u origin master
结果
每次将代码推送到远程服务器时,post-receive
钩子会自动将代码检出到工作目录 /www/wwwroot/note
。无需手动从裸仓库中检出代码,工作目录会自动保持与远程仓库同步。
这样,你就完成了在本地通过 Git 将代码推送到远程服务器并自动检出的全部配置过程。如果有任何问题或需要进一步的帮助,请告诉我!