Git 本地仓库上传到服务器裸仓库完整流程
目标
- 本地已有完整 Git 仓库(包含提交历史)
- 服务器上创建裸仓库(bare repository)
- 将本地仓库上传到服务器,保留历史提交
- 以后可以正常 clone、push、pull
1. 在服务器上创建裸仓库
SSH 登录服务器:
ssh user@server
创建裸仓库目录:
mkdir -p ~/repos
cd ~/repos
git init --bare project.git
说明:
project.git是裸仓库目录名,.git后缀是惯例,可选- 裸仓库没有工作区,只存储 Git 对象和 refs
2. 在本地添加远程仓库
进入本地仓库目录:
cd ~/myproject
添加远程:
git remote add origin user@server:~/repos/project.git
验证远程:
git remote -v
输出示例:
origin user@server:~/repos/project.git (fetch)
origin user@server:~/repos/project.git (push)
3. 上传本地仓库到服务器
推送主分支
git push -u origin master
推送所有分支
git push --all origin
推送所有标签
git push --tags
4. 新机器或恢复项目
直接 clone 裸仓库:
git clone user@server:~/repos/project.git
之后可以正常使用:
git push
git pull
5. 附加建议
- 统一管理裸仓库,例如:
~/repos/
project.git
otherproject.git
- 自动部署(例如 Hugo)可在裸仓库 hooks 写脚本:
# hooks/post-receive
#!/bin/bash
GIT_WORK_TREE=/var/www/project git checkout -f
设置可执行:
chmod +x hooks/post-receive
- 推荐保留
.git后缀以便区分普通目录和裸仓库
6. 总结流程
- 服务器:
git init --bare ~/repos/project.git - 本地:
git remote add origin user@server:~/repos/project.git - 本地:
git push -u origin master(可加--all和--tags) - 新机器 / 恢复:
git clone user@server:~/repos/project.git