1. 首页 > 编程开发 > github

怎么把CentOS项目部署到github仓库,github仓库是我创建私有项目

把 CentOS 上的项目部署到你自己的 GitHub 私有仓库,核心流程是:安装 Git → 配置 SSH 密钥 → 在 GitHub 新建私有仓库 → 本地初始化 Git → 关联远程仓库 → 提交并推送。下面是详细、可直接复制执行的步骤。

一、CentOS 服务器端:安装并配置 Git

1. 安装 Git

bash
运行
# 安装 Git(CentOS 7/8/9 通用)
sudo yum install -y git

# 验证安装
git --version

2. 配置 Git 用户名与邮箱(与 GitHub 一致)

bash
运行
git config --global user.name "你的GitHub用户名"
git config --global user.email "你的GitHub注册邮箱"

# 查看配置
git config --list

3. 生成 SSH 密钥(用于免密连接 GitHub)

bash
运行
# 生成 ed25519 密钥(推荐,比 RSA 更安全)
ssh-keygen -t ed25519 -C "你的GitHub注册邮箱"

# 一路回车(默认路径、不设密码)
# 生成后,查看公钥
cat ~/.ssh/id_ed25519.pub

复制输出的全部公钥内容(以 ssh-ed25519 开头),后面要粘贴到 GitHub。

二、GitHub 网页端:创建私有仓库并添加 SSH 公钥

1. 创建私有仓库

  1. 登录 GitHub → 右上角 + → New repository
  2. 填写:
    • Repository name:你的项目名(如 AiPPT
    • Description:可选描述
    • Privacy:选择 Private(私有)
    • 不勾选:Add a README file、Add .gitignore、Choose a license
  3. 点击 Create repository
  4. 记录仓库 SSH 地址:git@github.com:你的用户名/仓库名.git(如 git@github.com:beylze/AiPPT.git

2. 添加 SSH 公钥到 GitHub

  1. 右上角头像 → Settings → SSH and GPG keys → New SSH key
  2. Title:随便填(如 CentOS Server
  3. Key:粘贴刚才复制的公钥
  4. 点击 Add SSH key(输入 GitHub 密码验证)

3. 测试 SSH 连接

回到 CentOS 终端,执行:
bash
运行
ssh -T git@github.com

出现:Hi 用户名! You've successfully authenticated... 表示成功。

三、CentOS 本地项目:初始化 Git 并推送到 GitHub

1. 进入你的项目目录

bash
运行
# 假设项目在 /root/AiPPT 或 /home/user/AiPPT
cd /你的项目路径

2. 初始化本地 Git 仓库

bash
运行
git init

3. 添加文件到暂存区

bash
运行
# 添加所有文件(. 表示当前目录所有文件)
git add .

# 或只添加指定文件
# git add 文件名1 文件名2

4. 提交到本地仓库

bash
运行
git commit -m "首次提交:项目初始化"

5. 关联远程 GitHub 私有仓库

bash
运行
# 替换为你的仓库 SSH 地址
git remote add origin git@github.com:你的用户名/仓库名.git

# 验证远程仓库
git remote -v

6. 推送到 GitHub 私有仓库

bash
运行
# 首次推送,-u 建立本地与远程分支的关联
git push -u origin main
若提示 error: src refspec main does not match any,说明本地分支是 master,执行:
bash
运行
git push -u origin master

四、后续更新与常用命令

1. 提交并推送更新

bash
运行
# 1. 添加修改
git add .
# 2. 提交
git commit -m "更新说明:修复XX功能"
# 3. 推送(已关联后可直接 push)
git push

2. 拉取远程最新代码

bash
运行
git pull origin main

3. 查看状态与日志

bash
运行
# 查看文件状态
git status
# 查看提交日志
git log

五、常见问题

  1. 权限 denied:检查 SSH 公钥是否正确添加、仓库地址是否为 SSH 而非 HTTPS。
  2. fatal: remote origin already exists:先删除旧关联:git remote remove origin,再重新添加。
  3. 推送失败:确保本地有提交记录(git commit),再推送。
需要我帮你整理一份可直接复制的一键部署脚本,以后只需修改项目路径和仓库地址就能快速推送吗?
 

# ssh-keygen -t ed25519 -C "beylze@qq.com" Generating public/private ed25519 key pair.

你现在执行到生成 SSH 密钥的步骤,终端显示 Generating public/private ed25519 key pair. 是正常的初始化提示,接下来我会告诉你这一步该怎么操作,以及后续验证、使用密钥的完整流程。

1. 完成 SSH 密钥生成

当终端显示上述提示后,会紧接着出现:
plaintext
Enter file in which to save the key (/root/.ssh/id_ed25519):
  • 操作:直接按回车键(使用默认路径,无需修改)。
  • 随后会提示:
    plaintext
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    
  • 操作:再次连续按两次回车键(设置空密码,避免每次 Git 操作都输入密码;如果需要密码保护,可输入自定义密码并记住)。
执行完成后,终端会输出密钥的保存路径和指纹信息,说明密钥生成成功。

2. 查看并复制公钥(关键步骤)

生成密钥后,执行以下命令查看公钥内容:
bash
运行
cat ~/.ssh/id_ed25519.pub

输出内容格式如下(示例):
plaintext
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL8xxxxxxxxx9kXxxxxxx beylze@qq.com
  • 操作:选中从 ssh-ed25519 开始到邮箱结束的全部内容,复制下来(CentOS 可按 Ctrl+Shift+C 复制,或右键复制)。

3. 将公钥添加到 GitHub(补全之前的步骤)

  1. 登录 GitHub → 右上角头像 → Settings → 左侧栏找到 SSH and GPG keys → 点击 New SSH key
  2. Title:填一个便于识别的名称(如 CentOS Server)。
  3. Key:粘贴刚才复制的全部公钥内容(确保没有多余空格或换行)。
  4. 点击 Add SSH key,输入 GitHub 密码验证即可。

4. 测试 SSH 连接(验证是否配置成功)

回到 CentOS 终端,执行:
bash
运行
ssh -T git@github.com

如果输出以下内容,说明配置成功:
plaintext
Hi beylze! You've successfully authenticated, but GitHub does not provide shell access.

总结

  1. 生成 SSH 密钥时,默认路径和空密码是最便捷的选择,无需额外修改。
  2. 公钥必须完整复制并粘贴到 GitHub,少一个字符都会导致连接失败。
  3. 测试 SSH 连接是验证配置是否生效的关键步骤,成功后才能正常推送代码到私有仓库。
完成这一步后,你就可以继续执行之前提到的「关联远程仓库、提交并推送代码」的步骤了。如果遇到 Permission denied (publickey) 之类的错误,随时告诉我,我帮你排查。
 

# git push -u origin main error: src refspec main does not match any. error: failed to push some refs to 'git@github.com:beylze/fanmulu.git'

你遇到的 error: src refspec main does not match any 错误,核心原因是本地 Git 仓库的默认分支名称不是 main(而是 master,或者本地还没有任何可推送的提交记录。下面是分步骤的解决方法,确保你能一次性推送到 GitHub 私有仓库。

第一步:先确认本地分支名称和提交状态

1. 检查本地分支名称

执行命令查看当前分支:
bash
运行
git branch
  • 如果输出是 * master(带星号的是当前分支),说明本地分支是 master,而非 main
  • 如果无任何输出,说明本地还没创建分支(通常是因为没有提交记录)。

2. 检查本地提交记录

执行命令查看是否有提交:
bash
运行
git log
  • 如果提示 fatal: your current branch 'master' does not have any commits yet,说明你还没执行 git commit 提交代码。

第二步:分场景解决推送问题

场景 1:本地分支是 master(最常见)

直接将推送命令中的 main 替换为 master 即可:
bash
运行
# 推送 master 分支到远程
git push -u origin master

执行后如果无报错,说明推送成功,GitHub 仓库会自动创建 master 分支。

场景 2:本地无提交记录(刚初始化 Git)

如果 git log 提示无提交,先完成代码提交,再推送:
bash
运行
# 1. 添加项目所有文件到暂存区
git add .

# 2. 提交到本地仓库(备注信息必填)
git commit -m "首次提交:fanmulu 项目初始化"

# 3. 推送(分支名根据第一步结果选 master 或 main)
git push -u origin master  # 优先用这个
# 若确认本地是 main 分支,执行:git push -u origin main

场景 3:想统一分支名为 main(可选)

如果你希望本地分支也叫 main(和 GitHub 新版默认分支一致),可先重命名分支再推送:
bash
运行
# 1. 将本地 master 分支重命名为 main
git branch -M main

# 2. 推送 main 分支到远程
git push -u origin main

第三步:验证推送结果

推送成功后,终端会输出类似以下内容:
plaintext
Enumerating objects: X, done.
Counting objects: 100% (X/X), done.
Writing objects: 100% (X/X), X bytes | X KiB/s, done.
Total X (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:beylze/fanmulu.git
 * [new branch]      main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.

此时登录 GitHub 查看 fanmulu 私有仓库,就能看到你推送的代码了。

总结

  1. 核心原因:推送命令的分支名(main)和本地实际分支名(master)不匹配,或本地无提交记录。
  2. 最简解决:直接执行 git push -u origin master(适配 CentOS 下 Git 的默认分支名)。
  3. 前置条件:推送前必须通过 git add . + git commit -m "备注" 完成本地提交。
如果执行后仍有报错,比如提示「权限拒绝」或「仓库不存在」,可以把完整的错误提示贴出来,我帮你继续排查。
 

# git checkout main error: pathspec 'main' did not match any file(s) known to git.


你执行 git checkout main 报错,核心原因是本地 Git 仓库里根本没有创建 main 分支(目前只有默认的 master 分支,且可能还没有任何提交记录)。下面先解释原因,再给你能直接解决问题的操作步骤。

第一步:理解报错本质

Git 的 checkout 命令是「切换到已有分支」,但你的本地仓库:
  1. 刚初始化(git init),默认分支是 master(CentOS 下 Git 旧版本默认分支名是 master,GitHub 新版默认是 main,二者不匹配);
  2. 甚至可能还没完成首次提交,分支处于「空状态」,无法切换 / 创建 main 分支。

第二步:正确操作(无需切换 main,直接适配本地 master 分支)

你不需要强行创建 main 分支,直接用本地已有的 master 分支推送即可,步骤如下:

1. 先确认本地状态(可选,验证用)

bash
运行
# 查看本地分支(此时只会显示 * master,代表当前在 master 分支)
git branch
# 查看是否有提交记录(无记录会提示 "does not have any commits yet")
git log

2. 确保完成首次提交(关键前置步骤)

如果 git log 提示无提交,先执行:
bash
运行
# 添加所有项目文件到暂存区
git add .
# 提交到本地仓库(备注信息必填,不能省略)
git commit -m "首次提交:fanmulu 项目初始化"

3. 直接推送 master 分支到 GitHub

这是最适配你当前环境的命令,无需纠结 main 分支:
bash
运行
# 推送本地 master 分支到远程 GitHub 仓库,并建立关联
git push -u origin master

执行成功后,GitHub 仓库会自动创建 master 分支,你的代码就会出现在私有仓库里。

(可选)如果非要用 main 分支(统一命名)

若你想让本地和远程都用 main 分支,执行以下命令(需先完成上述「首次提交」):
bash
运行
# 1. 将本地 master 分支重命名为 main
git branch -M main
# 2. 推送 main 分支到远程
git push -u origin main

第三步:验证结果

推送成功后,终端会输出类似内容:
plaintext
To github.com:beylze/fanmulu.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

此时登录 GitHub 查看 fanmulu 私有仓库,就能看到代码,分支标签会显示 master(或 main,取决于你选的方式)。

总结

  1. 核心原因checkout main 失败是因为本地无 main 分支,默认只有 master
  2. 最简方案:无需切换分支,直接执行 git push -u origin master 推送本地默认的 master 分支。
  3. 前置条件:推送前必须完成 git add . + git commit 提交,空仓库无法推送。
如果执行后还有报错,比如「权限问题」「仓库找不到」,把完整的错误提示贴出来,我帮你精准解决。

# git branch -M main (3.14.0) [root@yisu-691c50ab51530 pan_directory]# git branch * main (3.14.0) [root@yisu-691c50ab51530 pan_directory]# git push -u origin main To git@github.com:beylze/fanmulu.git ! [rejected] main -> main (fetch first) error: failed to push some refs to 'git@github.com:beylze/fanmulu.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first merge the remote changes (e.g., hint: 'git pull') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.


你现在遇到的 ! [rejected] main -> main (fetch first) 错误,核心原因是你的 GitHub 远程仓库里已经有了 main 分支的内容(比如创建仓库时勾选了 README/.gitignore 等文件),而本地 main 分支是刚重命名的空分支,Git 拒绝直接覆盖远程内容。下面我帮你分步骤解决,确保代码能顺利推上去。

第一步:先理解问题本质

GitHub 新建仓库时,如果你不小心勾选了「Add a README file」「Add .gitignore」等选项,远程仓库就会有初始提交记录;而你的本地分支虽然命名为 main,但和远程 main 分支没有共同的提交历史,Git 为了防止数据丢失,会拒绝推送。

第二步:解决方法(两种方案,选其一即可)

方案 1:拉取远程内容并合并(推荐,保留远程文件)

这个方案会把远程仓库的 README 等文件拉到本地,合并后再推送,不会丢失任何内容:
bash
运行
# 1. 先拉取远程 main 分支的内容(--allow-unrelated-histories 允许合并无关联的历史)
git pull origin main --allow-unrelated-histories

# 2. 若拉取后出现合并冲突(终端提示 conflict),先解决冲突:
#    - 打开冲突文件,删除 <<<<<<< HEAD、=======、>>>>>>> 等冲突标记,保留需要的内容
#    - 解决后重新添加并提交:
git add .
git commit -m "合并远程 README 文件,解决冲突"

# 3. 再次推送本地 main 分支到远程
git push -u origin main

方案 2:强制推送(覆盖远程内容,慎用)

如果远程仓库里只有自动生成的 README 等无关文件,你想直接用本地代码覆盖远程,可执行强制推送:
bash
运行
# 强制推送本地 main 分支到远程,覆盖远程内容
git push -u origin main --force
⚠️ 注意:强制推送会删除远程仓库里的所有现有内容,仅在确认远程无重要文件时使用!

第三步:验证推送结果

执行成功后,终端会输出类似内容:
plaintext
Enumerating objects: X, done.
Counting objects: 100% (X/X), done.
Writing objects: 100% (X/X), X bytes | X KiB/s, done.
Total X (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:beylze/fanmulu.git
   xxxxxxx..xxxxxxx  main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.

此时登录 GitHub 查看 fanmulu 私有仓库,就能看到本地代码和远程文件(方案 1),或只有本地代码(方案 2)。

总结

  1. 核心原因:远程 main 分支有初始提交(如 README),本地分支无关联历史,Git 拒绝普通推送。
  2. 推荐方案:用 git pull origin main --allow-unrelated-histories 拉取并合并远程内容,解决冲突后再推送。
  3. 应急方案:确认远程无重要内容时,用 --force 强制推送覆盖。
如果执行 git pull 时出现具体的冲突提示,或强制推送后仍有报错,把完整的终端输出贴出来,我帮你解决。
 

声明:本文网友投稿,观点仅代表作者本人,不代表鲁班SEO赞同其观点或证实其描述。

联系我们

在线咨询:点击这里给我发消息

微信号:

工作日:9:30-18:30,节假日休息