在服务器管理和开发领域,将 CentOS 系统与 GitHub 结合使用是一种非常高效和专业的实践,GitHub 不仅是一个代码托管平台,更是版本控制、协作开发和自动化部署(CI/CD)的核心枢纽,本文将详细介绍如何在 CentOS 环境下安装、配置 Git,并连接到 GitHub 进行日常操作,帮助您构建一个稳定、安全的工作流。
环境准备与系统更新
在开始安装任何软件之前,确保您的 CentOS 系统是最新的状态,这是一个良好的运维习惯,这可以避免因系统组件过旧而导致的依赖问题或安全漏洞。
通过以下命令更新系统软件包,对于 CentOS 7 及更早版本,使用 yum
;对于 CentOS 8 及以上版本,推荐使用 dnf
。
# 对于 CentOS 7 sudo yum update -y # 对于 CentOS 8/Stream sudo dnf update -y
更新完成后,建议安装“开发工具”组,它包含了编译软件所需的一系列基础工具,如 gcc
, make
等,这在后续从源码编译 Git 时会用到。
sudo yum groupinstall "Development Tools" -y # 或 sudo dnf groupinstall "Development Tools" -y
安装 Git 客户端
Git 是与 GitHub 交互的命令行工具,在 CentOS 上,我们有两种主要的安装方式。
通过官方软件仓库安装(推荐)
这是最简单、最快捷的方法,软件仓库中的 Git 版本虽然不是最新的,但足够稳定,能满足绝大多数使用场景。
sudo yum install git -y # 或 sudo dnf install git -y
安装完成后,可以通过以下命令验证 Git 是否安装成功并查看其版本:
git --version
从源代码编译安装
如果您需要使用 Git 的最新版本,或者官方仓库中的版本无法满足您的需求,可以从源代码编译安装。
安装依赖:确保已安装上文提到的“开发工具”组,并额外安装一些必要的库,如
curl-devel
,expat-devel
,gettext-devel
,openssl-devel
,zlib-devel
等。sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel -y # 或 sudo dnf install curl-devel expat-devel gettext-devel openssl-devel zlib-devel -y
下载源代码:访问 Git 官网 获取最新版本的 tar.gz 包下载链接,然后使用
wget
下载。wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.40.1.tar.gz
(请替换为最新版本号)
解压、编译和安装:
tar -zxf git-2.40.1.tar.gz cd git-2.40.1 make configure ./configure --prefix=/usr/local make all sudo make install
编译安装完成后,您可以通过 /usr/local/bin/git --version
来验证新版本。
配置 Git 基本信息
安装好 Git 后,第一步是配置您的用户名和电子邮件地址,这些信息会嵌入到您每一次的提交记录中,用于标识作者是谁。
git config --global user.name "您的用户名" git config --global user.email "您的邮箱@example.com"
使用 --global
参数意味着这台机器上的所有 Git 仓库都会默认使用这个配置,您也可以为特定项目设置不同的用户名和邮箱,只需去掉 --global
参数并在项目目录下执行即可。
连接 GitHub:SSH 与 HTTPS
连接 GitHub 主要有两种协议:HTTPS 和 SSH,SSH 更安全、更便捷,推荐在开发和服务器环境中使用。
使用 SSH 密钥连接
SSH 使用公钥加密技术进行认证,无需每次推送或拉取代码时都输入密码。
生成 SSH 密钥:
在终端中输入以下命令,并一路回车使用默认设置即可。ssh-keygen -t ed25519 -C "您的邮箱@example.com"
这会在您的用户主目录下的
.ssh
文件夹中生成两个文件:id_ed25519
(私钥,必须妥善保管)和id_ed25519.pub
(公钥,需要提供给 GitHub)。将公钥添加到 GitHub:
复制公钥文件的内容:cat ~/.ssh/id_ed25519.pub
登录您的 GitHub 账户,进入右上角的
Settings
>SSH and GPG keys
,点击New SSH key
,将刚才复制的内容粘贴到Key
文本框中,并为这个密钥起一个便于识别的标题(如 “My CentOS Server”),然后保存。测试连接:
在 CentOS 终端中执行以下命令来测试 SSH 连接是否成功。ssh -T git@github.com
首次连接时,系统会询问您是否信任 GitHub 的指纹,输入
yes
即可,如果看到 “Hi xxx! You’ve successfully authenticated…” 的欢迎信息,说明连接已经建立成功。
使用 HTTPS 连接
HTTPS 方式相对简单,直接使用 GitHub 的用户名和密码(或 Personal Access Token,个人访问令牌)进行认证,出于安全考虑,GitHub 已于 2021 年 8 月停止支持使用密码进行 Git 操作,推荐使用 Personal Access Token (PAT)。
您需要在 GitHub 的 Settings
> Developer settings
> Personal access tokens
中生成一个具有适当权限(如 repo
)的令牌,在操作 Git 时,当提示输入密码时,输入这个令牌即可。
常用 Git 工作流程
配置完成后,您就可以开始在 CentOS 上与 GitHub 进行交互了,以下是一个基本的克隆、修改、提交、推送的工作流程。
克隆仓库:
使用git clone
命令将 GitHub 上的仓库复制到本地。# 使用 SSH 方式克隆(推荐) git clone git@github.com:用户名/仓库名.git # 使用 HTTPS 方式克隆 git clone https://github.com/用户名/仓库名.git
日常操作:
进入项目目录后,您可以进行修改、添加文件等操作。
命令 | 描述 | 示例 |
---|---|---|
git status | 查看当前工作区的状态,了解哪些文件被修改或新增 | git status |
git add <文件> | 将文件的更改添加到暂存区,准备提交 | git add README.md |
git commit -m "提交信息" | 将暂存区的更改提交到本地仓库,并附上说明 | git commit -m "Fix a bug" |
git push | 将本地仓库的提交推送到远程 GitHub 仓库 | git push origin main |
git pull | 从远程仓库拉取最新的更改到本地,并自动合并 | git pull origin main |
掌握以上核心步骤,您就已经成功在 CentOS 上搭建了与 GitHub 协同工作的基础环境,您可以根据项目需求,进一步学习 Git 的分支管理、变基(rebase)、以及利用 GitHub Actions 实现更强大的自动化部署流程。
相关问答FAQs
Q1: 我在使用 git push
时,系统提示 “Permission denied (publickey). fatal: Could not read from remote repository.”,这是什么原因造成的?我该如何解决?
A1: 这是一个非常典型的 SSH 认证失败问题,它意味着 GitHub 服务器无法通过您提供的 SSH 密钥来验证您的身份,请按照以下步骤排查:
- 检查本地密钥是否存在:确认
~/.ssh/
目录下是否有id_ed25519
(或id_rsa
)私钥文件,如果不存在,说明您可能没有生成密钥,或者密钥文件丢失了,需要重新运行ssh-keygen
生成。 - 检查 SSH Agent 是否加载了私钥:在某些情况下,您需要将私钥添加到
ssh-agent
中,可以执行以下命令:eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519
如果提示 “Identity added”,则说明加载成功。
- 检查公钥是否正确添加到 GitHub:登录 GitHub,进入
Settings
>SSH and GPG keys
,仔细核对您添加的公钥内容是否与cat ~/.ssh/id_ed25519.pub
的输出完全一致,注意不要有多余的空格或换行符。 - 确认使用了正确的仓库 URL:在您克隆或添加远程仓库时,要确保使用的是
git@github.com:...
开头的 SSH 格式 URL,而不是https://github.com/...
格式,您可以用git remote -v
查看当前配置的远程地址。
Q2: 我之前一直使用 HTTPS 协议,现在想切换到 SSH 协议,应该怎么操作,而不需要重新克隆整个仓库?
A2: 您完全不需要重新克隆仓库,Git 提供了非常方便的命令来修改远程仓库的 URL,操作如下:
确认您当前仓库的远程仓库名称,通常默认为
origin
。git remote -v
您会看到类似下面的输出,显示了抓取 和推送 两个操作的 URL。
origin https://github.com/用户名/仓库名.git (fetch) origin https://github.com/用户名/仓库名.git (push)
使用
git remote set-url
命令将 URL 从 HTTPS 格式更改为 SSH 格式。git remote set-url origin git@github.com:用户名/仓库名.git
请务必将
用户名/仓库名.git
替换为您自己的实际信息。再次执行
git remote -v
进行验证,您会看到 URL 已经成功更改为 SSH 格式。origin git@github.com:用户名/仓库名.git (fetch) origin git@github.com:用户名/仓库名.git (push)
完成以上步骤后,您下一次执行
git pull
或git push
时,Git 就会尝试通过 SSH 协议与 GitHub 通信了,前提是您已经按照前文所述配置好了 SSH 密钥。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复