如何上传代码到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/%e5%a6%82%e4%bd%95%e4%b8%8a%e4%bc%a0%e4%bb%a3%e7%a0%81%e5%88%b0git%e6%9c%8d%e5%8a%a1%e5%99%a8%ef%bc%8c%e6%9c%ac%e5%9c%b0%e4%bb%a3%e7%a0%81%e6%80%8e%e4%b9%88%e6%8e%a8%e9%80%81%e5%88%b0%e8%bf%9c/

赞 (0)
苹果手机连不上ID服务器怎么办,苹果ID连接失败怎么解决?
上一篇 2026年10月6日 21:12
换一个服务器要花多少钱,影响价格的因素有哪些?
下一篇 2026年10月6日 21:13

相关推荐

  • ASP使用变量时,如何确保变量在不同页面间正确传递和存储?

    在ASP(Active Server Pages)中,变量是存储和操作数据的基础工具,用于动态生成网页内容,ASP变量无需显式声明类型,通常通过Dim语句定义,并可在脚本中灵活赋值和使用,它们支持多种数据类型,如字符串、数字、日期和对象,并具有作用域(如局部变量和全局变量)以控制访问范围,有效使用变量能提升网站……

    2026年2月3日
    12900
  • 我的世界服务器mv多世界插件怎么用,有没有教程?

    MV多世界插件(Multiverse-Core)就是帮你把服务器拆成多个独立世界、各自配置不同游戏模式和环境的核心工具,安装后输入几个命令就能完成世界创建与传送,很多开服的朋友都有过这种经历:主世界建好了,想加个资源世界、空岛或RPG地图,结果不知道往哪儿塞,用MV插件,这事儿能在一分钟内搞定,下面我直接按操作……

    2026年10月7日
    000
  • 服务器UPS功率多大合适,哪个牌子质量好?

    服务器UPS选多大功率,核心就一句话:把所有设备的额定功率相加,再乘以1.3到1.5的安全系数,得出的数值就是你要买的UPS功率,举个例子,一台服务器加一台存储的总功耗是800W,那选1000VA到1200VA的UPS就刚好,既不会浪费预算,也能留出足够的余量应对瞬时波动,服务器ups功率计算:先搞清楚这3个数……

    程序编程 2026年10月21日
    100
  • 广州番禺人脸识别门禁安装价格?人脸门禁安装多少钱一套

    2026年广州番禺人脸识别门禁安装的综合均价在800元至3500元/点位之间,最终实装价格取决于设备算力、门禁类型(可视/闸机/门控)及施工走线难度,切勿盲目追求低价,需重点考量算法防伪能力与本地售后响应时效,2026番禺人脸门禁安装价格深度拆解硬件设备与算法授权成本人脸识别门禁并非单纯的摄像头买卖,其核心价值……

    2026年4月29日
    5700
  • win10扫描服务器失败怎么办,是什么原因造成的?

    Win10的扫描服务器失败,通常不是扫描仪彻底坏了,而是Windows图像采集服务、网络发现、驱动或权限出了问题;按“服务→驱动→网络→权限→厂商软件”的顺序排查,大多数情况可以恢复,Win10的扫描服务器失败到底卡在哪很多人看到“扫描服务器失败”会以为要换扫描仪,其实在Win10里,这个提示更多是系统组件或连……

    2026年10月2日
    000
  • lol进入提示网络连接服务器失败怎么办,是什么原因?

    英雄联盟网络连接失败,先排查这三个核心原因遇到英雄联盟提示网络连接服务器失败,通常不是游戏本身的问题,而是本地网络或客户端异常,按照下文步骤排查,大部分情况可以自行修复,本地网络波动:掉线重连的常见元凶多数情况下,网络连接失败源于你家的宽带不稳定,无线网络信号衰减、路由器长时间未重启导致缓存溢出、运营商高峰期线……

    2026年8月12日
    800
  • 杭州服务器租赁方案价格是多少,哪家性价比高?

    杭州服务器租赁方案的价目范围通常在每年3000元至数万元不等,具体取决于配置、带宽和机房等级,其中入门级1U服务器年付约3000-6000元,主流业务型年付6000-15000元,高性能或GPU服务器则轻松突破2万元,这个价格区间覆盖了从个人站长到中大型企业的绝大多数需求,但实际成交价会因机房位置、带宽类型和合……

    2026年10月6日
    000
  • 服务器改了IP为什么登录不了,服务器换IP后无法连接怎么办

    服务器改了IP登录不了,核心原因是客户端和中间设备还记着旧地址,按“刷新解析—清理缓存—修改绑定—放行安全组”的顺序排查即可解决,为什么IP变了就登不上服务器IP变更后登录失败,本质上是网络寻址链条断了,服务器的新IP像搬了家的门牌号,但你的电脑、路由器、DNS解析记录甚至服务器自身的防火墙规则,都还在按旧地址……

    2026年10月2日
    000
  • 成都服务器租用商运维响应如何考察,有哪些标准?

    考察成都服务器租用商的运维响应,核心不是听对方承诺“7×24小时”,而是用实测工单、故障模拟和SLA条款去验证真实反应速度,签约前不把这些摸清,等到业务半夜宕机、用户流量暴跌时才想起运维,损失已经追不回来,本文从测试方法、SLA陷阱、本地机房差异和真实场景四个维度拆解,帮你用低成本踩出靠谱服务商,成都服务器租用……

    2026年10月2日
    100
  • AI导航好不好,哪个AI导航网站值得收藏?

    在人工智能技术呈指数级爆发的当下,各类AIGC工具层出不穷,从文本生成到图像处理,从代码辅助到音频合成,工具的数量庞大且更新迭代极快,面对这种信息过载,用户获取有效工具的成本显著增加,核心结论是:AI导航不仅是好用的工具聚合平台,更是提升工作效率、降低学习门槛的必要基础设施,但其价值高度取决于站点的筛选机制、更……

    2026年2月17日
    14700

发表回复

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