如何上传代码到Git服务器,本地代码怎么推送到远程仓库?

直接把代码推到自己的 Git 服务器上,核心就三步:服务器端创建裸仓库、本地添加远程地址、执行 push 命令。 整个过程不需要依赖 GitHub 或 GitLab,一台 Linux 服务器加 Git 环境就能搞定,下面把从零搭建到日常使用的完整流程拆开讲,每一步都给出可验证的命令。

怎么上传代码到自己的git服务器上:先分清两种场景

绝大多数人问”怎么上传代码到自己的git服务器上”时,其实有两种完全不同的需求,第一种是你有服务器权限,想从零搭一个 Git 服务端;第二种是你已经拿到了别人给你的 Git 仓库地址(比如公司内网的 GitLab),只是不知道怎么把本地代码推上去,先确认自己属于哪种,后面的操作路径完全不同。

git本地仓库关联远程仓库
加载中
git本地仓库关联远程仓库

已有 Git 服务端,只需要上传代码

如果公司或团队已经搭好了 Git 服务器,你只需要做本地操作,假设你拿到了一个仓库地址,格式通常是 git@your-server:/srv/git/project.git 或 http://your-server/project.git。

本地已有项目,想推到远端:

cd /path/to/your-project
git init
git add .
git commit -m "初始提交"
git remote add origin git@your-server:/srv/git/project.git
git push -u origin master

本地没有项目,想克隆远端代码到本地再修改:

git clone git@your-server:/srv/git/project.git
cd project
# 改代码后
git add .
git commit -m "修改了某个功能"
git push

这个场景下,最常遇到的坑是第一次 push 被拒绝,提示 remote error: Repository not found 或 Permission denied,前者通常是仓库路径写错了,后者是 SSH 密钥没配对,下文会专门讲 SSH 密钥配置。

从零搭建属于自己的 Git 服务器

这是真正意义上的”自己的服务器”,你需要一台能通过 SSH 连接的 Linux 机器,云服务器或本地虚拟机都行,系统推荐 Ubuntu 或 CentOS,内存 1G 就足够跑纯 Git 服务。

服务器端操作(以 Ubuntu 为例):

# 安装 Git
sudo apt update
sudo apt install git -y
# 创建专用用户(安全考虑,别用 root 跑 Git)
sudo adduser git
# 创建裸仓库目录
sudo mkdir -p /srv/git
sudo chown git:git /srv/git

然后切换到 git 用户,创建项目裸仓库:

sudo su - git
cd /srv/git
git init --bare myproject.git

如何上传代码到Git服务器,本地代码怎么推送到远程仓库?

注意 --bare 参数,这是关键。 裸仓库没有工作目录,只保留版本历史,专门用于接收 push,用普通 git init 创建的仓库在接收 push 时会报错。

git服务器搭建全流程:SSH 密钥配置是上传成功的分水岭

很多人在 git 服务器搭建全流程中卡在认证环节,Git 服务器支持 HTTP 和 SSH 两种协议,个人使用强烈推荐 SSH,原因很简单:HTTP 每次 push 都要输账号密码,SSH 配好密钥后一劳永逸。

客户端生成 SSH 密钥:

ssh-keygen -t rsa -b 4096 -C "你的邮箱"

一路回车生成默认密钥对,然后查看公钥:

cat ~/.ssh/id_rsa.pub

服务器端添加公钥:

# 在服务器上,切到 git 用户
sudo su - git
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "你刚才复制的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

这里有个细节容易忽略:.ssh 目录权限必须是 700,authorized_keys 文件权限必须是 600,权限不对的话,SSH 会直接拒绝认证,哪怕公钥内容完全正确。

测试 SSH 连接:

ssh git@你的服务器IP

如果看到欢迎信息或直接退出(没有提示输入密码),说明密钥配置成功,如果提示 Permission denied (publickey),优先检查权限设置,其次确认公钥有没有粘贴完整。

行业共识认为,SSH 密钥认证是自建 Git 服务器最安全的认证方式,因为私钥永不离开本地机器,据不完全统计,绝大多数 Git 服务器安全问题都出在密码认证方式上。

本地代码推送到远程仓库的完整操作路径

SSH 配置好后,核心上传命令就变得非常简单,以刚才创建的 myproject.git 为例:

cd /path/to/your-project
git init
git add .
git commit -m "首次提交"
git remote add origin git@你的服务器IP:/srv/git/myproject.git
git push -u origin master

-u 参数会把本地 master 分支和远程 master 分支建立关联,之后直接敲 git push 就行了,这个命令组合就是”怎么上传代码到自己的git服务器上”的标准答案,百分之九十的日常操作都离不开这几条。

分支操作注意事项:

如何上传代码到Git服务器,本地代码怎么推送到远程仓库?

  • 如果项目默认分支是 main 而不是 master,把上面命令里的 master 全换成 main
  • 首次 push 想同时推送所有分支,用 git push -u origin --all
  • 推送标签用 git push --tags,标签不会跟随普通 push 自动上传

常见报错及排查方向:

  • error: failed to push some refs 本地和远程提交历史冲突,先 git pull 再 push
  • fatal: 'repository' does not appear to be a git repository 远程地址路径写错了,检查 IP、目录名、.git 后缀
  • Connection refused 服务器防火墙没放行 SSH 端口(默认 22),或者 SSH 服务没启动

如何在服务器上管理多个仓库和用户权限

自建 Git 服务器用久了,仓库会多起来,这里提供一个简单但正规的目录组织方式:

/srv/git/
├── personal/          # 个人项目
├── work/              # 工作项目
└── experiments/       # 实验项目

按目录区分项目类型,每个目录下用 git init --bare 创建裸仓库。

mkdir -p /srv/git/work
cd /srv/git/work
git init --bare data-analysis.git

多用户权限管理思路:

如果只有你自己一个人用,上面 SSH 密钥方案完全够用,如果几个人一起用,需要给每个人的公钥都加到 authorized_keys 文件里,但这样做所有人权限相同,都能删仓库、强制 push。

团队协作场景下,更好的方案是安装 Gitolite 或 Gitea,Gitolite 是一个轻量级权限管理工具,可以精确控制每个人对每个仓库的读写权限,Gitea 则是带 Web 界面的 Git 服务(类似内网版 GitHub),部署也不复杂,下载二进制文件直接运行即可,业内专家指出,对于五人以下的小型团队,Gitolite 足够用;超过十个人,建议上 Gitea,管理成本会低很多。

你的 git 服务器日常维护:备份和数据抢救

代码是数字资产,自建 Git 服务器必须做备份,备份方案比想象中简单裸仓库本质就是文件夹,直接打包复制就行。

手动备份裸仓库:

# 服务器上执行
cd /srv/git
tar -czf myproject_backup.tar.gz myproject.git
# 用 scp 拉到本地
scp git@你的服务器IP:/srv/git/myproject_backup.tar.gz ~/backup/

如何上传代码到Git服务器,本地代码怎么推送到远程仓库?

自动备份方案:

用 crontab 定时执行备份脚本,保留最近 7 份:

# 备份脚本 backup_git.sh
#!/bin/bash
BACKUP_DIR="/home/git/backup"
DATE=$(date +%Y%m%d)
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/git_backup_$DATE.tar.gz /srv/git/
find $BACKUP_DIR -name ".tar.gz" -mtime +7 -delete

然后加入 crontab:

crontab -e
# 每天凌晨两点执行
0 2    /home/git/backup_git.sh

恢复备份:

# 服务器上执行
tar -xzf git_backup_20260601.tar.gz -C /tmp/
# 解压后是 srv/git/ 目录结构,把里面的裸仓库移回原位

这个备份方案不依赖任何第三方服务,把整个 /srv/git 目录打包就行,相比托管平台的自带备份,自建服务器胜在完全自主可控,备份文件用 tar 或 zip 读取都没有障碍。

关于怎么上传代码到自己的git服务器上的常见疑问

Git 服务器和 GitHub 的主要区别是什么?

GitHub 是托管平台,你的代码仓库放在 GitHub 的服务器上,别人通过公网访问,自建 Git 服务器是把仓库放在自己控制的机器上,数据不出内网,适合代码不能公开的场景,最近几年国内团队比较流行把代码放在自建 GitLab 上,本质也是 Git 服务器,只是多了一层 Web 界面和项目管理功能,自建方案的优势是无用户数限制、存储空间完全由自己控制、数据安全不受第三方平台政策影响。

push 时提示输入密码,可我配了 SSH 密钥为什么还要密码?

两种情况,第一,你 clone 仓库时用的是 HTTP 地址而不是 SSH 地址,检查 git remote -v 输出,如果远程地址是 http:// 开头,换成 git@服务器IP:/srv/git/xxx.git 格式,第二,SSH 密钥没配成功,回到前面 SSH 配置部分重新检查权限和公钥,确认方式很简单,执行 ssh git@你的服务器IP,如果还问密码就是密钥没生效。

怎么删除 git 服务器上的历史提交记录?

这个操作比较危险,思路是用孤儿分支重建历史,在本地执行 git checkout --orphan new_branch 重新提交代码,再强制推送到服务器,操作完成后旧提交在本地仍然能通过 git reflog 找回,但在服务器上已经不可访问,强烈建议在操作前先做一次完整备份,避免不可逆的数据丢失。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/717890.html

赞 (0)
苹果手机连不上ID服务器怎么办,苹果ID连接失败怎么解决?
上一篇 2026年10月6日 21:12
开发者选项强制开启怎么设置?开发者选项强制开启有什么用
下一篇 2026年3月30日 15:36

相关推荐

  • AI容器是什么?大模型AI容器怎么部署?

    AI容器技术已成为连接算法模型与生产环境的核心桥梁,其本质是通过轻量级虚拟化技术,将人工智能应用及其依赖环境进行标准化封装,从而实现跨平台的高效部署与弹性扩展,这一技术彻底解决了AI模型从开发实验室到实际业务场景中“最后一公里”的落地难题,不仅极大地提升了计算资源的利用率,更确保了应用运行的高可用性与一致性,是……

    2026年2月21日
    14000
  • AIoT系统效果图怎么看?AIoT系统架构图高清素材下载

    AIoT系统效果图的核心价值在于将复杂的物联网数据流与人工智能决策逻辑,转化为直观、可执行的可视化界面,从而实现物理世界与数字世界的精准映射与高效协同,这不仅是技术架构的展示,更是企业数字化转型的“作战地图”,直接决定了系统落地的成功率与运营效率,一个专业的可视化方案,能够缩短故障响应时间,提升决策准确性,并显……

    2026年3月12日
    12600
  • 服务器bios界面设置u盘启动不了?,怎么解决

    服务器BIOS设置U盘启动不了,核心原因通常是启动模式与U盘引导文件不匹配,先把Secure Boot关闭,启动模式改为Legacy,再用FAT32格式和Rufus重做启动盘,即可解决绝大多数问题,服务器bios设置u盘启动不了?先分清Legacy和UEFI模式大多数服务器默认开启UEFI安全启动,而网上下载的……

    2026年9月2日
    1000
  • 我的世界服务器32k指令如何设置,具体方法是什么?

    我的世界服务器怎么弄32k指令?答案很直接:用 /give 命令配合NBT标签直接生成一把附魔等级为32767级的武器或工具,/give @p minecraft:diamond_sword{Enchantments:[{id:”minecraft:sharpness”,lvl:32767s}]} 1,这条指令……

    2026年9月5日
    2500
  • AIoT商业分析怎么做?AIoT行业应用前景及趋势

    AIoT(人工智能物联网)已跨越概念炒作期,进入以“边缘智能+行业垂直落地”为核心的深水区,2026年的商业机会不再在于硬件连接,而在于通过数据闭环实现的自动化决策与降本增效,很多人对AIoT的理解还停留在“万物互联”的初级阶段,认为只要把设备连上网就是智能,这种认知偏差导致大量企业投入巨资却收效甚微,真正的商……

    2026年6月16日
    4600
  • 广州网站定制开发多少钱?广州专业建站公司哪家好

    2026年广州网站定制开发的核心价值在于摒弃模板套用,通过原生代码与AI驱动的业务逻辑深度契合,为企业构建具备高转化率与强扩展性的专属数字资产,为何2026年企业必须摒弃模板转向定制模板建站的致命短板在流量红利见顶的当下,模板建站的“千站一面”已成为转化毒药,根据中国互联网络信息中心(CNNIC)2026年最新……

    2026年4月28日
    5700
  • OneTechCloud 2026促销月付季付循环8折,美西CN2 GIA VPS怎么选

    OneTechCloud 2026新年促销期间,全场月付、季付及循环续费方案均享受8折优惠,针对美西CN2 GIA、洛杉矶CERA高防及香港大带宽VPS提供极具竞争力的性价比选择,在2026年的云计算市场中,网络质量的稳定性与价格透明度已成为用户选择服务商的核心考量,OneTechCloud此次推出的新年促销活……

    2026年7月7日
    5710
  • Kvm新加坡VPS硬盘多大?新加坡VPS月付145元配置怎么样

    KvmLa新加坡500GB大硬盘VPS以月付145元起的价格,提供了包含5M CN2+BGP优质国际带宽的解决方案,是兼顾存储需求与网络稳定性的性价比之选,在云服务器市场日益内卷的2026年,单纯比拼CPU核心数或内存大小已难以满足细分场景的需求,对于需要大量数据缓存、媒体存储或轻量级数据库服务的用户而言,硬盘……

    2026年6月26日
    1600
  • Netfront香港VPS好用吗?香港VPS推荐哪家稳定

    Netfront香港VPS凭借原生IP直连优势,能稳定解锁奈菲、迪士尼及YouTube,且三网直连带宽实测可达100Mbps,是追求低延迟与高稳定性用户的优选方案,在VPS租赁市场鱼龙混杂的当下,选择一款既能保证速度又能稳定解锁流媒体服务的节点至关重要,Netfront作为近年来在技术圈逐渐崭露头角的服务商,其……

    2026年6月22日
    3600
  • AIoT智慧生态

    AIoT智慧生态并非简单的设备联网,而是通过人工智能与物联网的深度融合,实现从“被动响应”到“主动预判”的质变,其核心价值在于打破数据孤岛,让万物具备感知、思考与协作的能力,AIoT如何重塑日常生活的底层逻辑很多人对智能家居的理解还停留在“用手机远程开灯”的阶段,这其实只是物联网的初级形态,真正的AIoT智慧生……

    2026年6月12日
    3310

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注