服务器上搭建Git仓库
在需要经常上传代码到服务器上时,我们可以通过在服务器上搭建Git仓库,然后在本地提交代码到Git仓库,再在服务器端通过Git Hook自动拉取代码到指定目录,下面以ubuntu服务器为例。
安装Git:
如果你的服务器上还没有Git,首先需要安装Git。你可以使用包管理工具(如apt、yum、brew)来安装Git。
以下是在Ubuntu发行版上安装Git的命令示例:
1 | sudo apt update |
创建一个空的Git仓库:
选择一个目录作为你的Git仓库存储位置,并执行以下命令来创建一个新的Git仓库:
1 | mkdir /path/to/your/repo.git |
设置权限:
确保Git仓库的文件和目录权限正确设置,以便Git用户可以读写仓库文件。通常,你可以使用 chmod
和 chown
命令来设置权限和所有者。
1 | chown $USER:$USER -R blog.git |
客户端克隆仓库:
现在你可以在本地克隆这个远程Git仓库,以便进行代码的推送和拉取。
1 | git clone user@server:/path/to/your/repo.git |
其中 user
是服务器上的用户名,server
是服务器的IP地址或域名,/path/to/your/repo.git
是服务器上仓库的路径。
配置仓库的访问:
如果需要对仓库进行访问控制,你可以设置SSH密钥认证或HTTP身份验证等。这取决于你的服务器配置和需求。这里我使用的是SSH密钥认证,见使用 SSH 免密登录服务器。
Git 钩子(Git Hook)自动拉取代码
有时需要自动拉取代码到服务器的指定目录,例如网页的部署。
你可以使用 Git 钩子来在 main
分支有新提交时自动触发拉取操作。在 Git 仓库的服务器端,在 Git 仓库的根目录下有一个名为 repo.git/hooks
的目录,你可以在这里创建一个自定义的 post-receive
钩子脚本。这个脚本可以在每次代码提交后自动触发。
创建 repo.git/hooks/post-receive
钩子脚本并添加以下内容:
1 |
|
确保设置脚本的可执行权限:
1 | chmod +x /path/to/your/repo.git/hooks/post-receive |
这个脚本会在每次 main
分支有新提交时,将最新的代码自动部署到 /path/to/your/destination/directory
目录中。
在网页的部署中,有时需要确保使用Git Hook拉取的代码文件权限为755(或者其他类型权限)
在使用 Git 钩子在服务器上自动拉取代码时,你可以在钩子脚本中设置代码文件的权限为755。在 post-receive
钩子脚本中,你可以添加一行命令来更改目标目录下文件的权限。下面是一个示例 post-receive
钩子脚本,它会在每次 main
分支有新提交时拉取代码,并将文件权限设置为755:
1 |
|
在这个脚本中,chmod
命令被用于更改文件权限为755。find
命令用于在指定的目标目录中递归查找所有文件,并对它们应用 chmod
命令,这样每当有新提交到 main
分支时,post-receive
钩子脚本将自动拉取代码并设置文件权限为755。你也可以根据需要自定义脚本,以满足你的具体需求。