openEuler 是华为推出的开源操作系统,基于 Linux 内核,完全兼容 Git 的所有核心功能。本教程从 Git 安装、配置到日常开发全流程(提交、分支、远程仓库、冲突解决),覆盖新手到进阶的核心操作,适配 openEuler 20.03/22.03 等主流版本。
一、Git 安装与环境检查
- 安装 Git
openEuler 官方源已内置 Git 包,通过 dnf 命令一键安装:
bash
运行
升级系统包(可选,推荐)
sudo dnf update -y
安装 Git
sudo dnf install git -y
- 验证安装
安装完成后,检查版本确认安装成功:
bash
运行
git --version
输出示例:git version 2.31.1(不同版本数值略有差异)
二、Git 基础配置(首次必做)
Git 需配置用户信息(用户名、邮箱),用于标识提交者身份,全局配置只需执行一次。
- 全局用户配置
bash
运行
设置用户名(替换为你的名称)
git config --global user.name "YourUsername"
设置邮箱(替换为你的邮箱,建议与代码平台(Gitee/GitHub)一致)
git config --global user.email "your@email.com"
- 配置默认编辑器(可选)
默认编辑器为 vim,如需改为 nano 或其他:
bash
运行
设置默认编辑器为 nano
git config --global core.editor "nano"
如需改回 vim
git config --global core.editor "vim"
- 查看配置信息
验证配置是否生效:
bash
运行
查看所有全局配置
git config --global --list
输出示例:
user.name=YourUsername
user.email=your@email.com
core.editor=nano
三、Git 核心操作(本地仓库)
- 初始化本地仓库
新建项目目录并初始化 Git 仓库:
bash
运行
创建项目目录
mkdir my-openeuler-project
cd my-openeuler-project
初始化 Git 仓库(生成 .git 隐藏目录)
git init
输出:Initialized empty Git repository in /home/xxx/my-openeuler-project/.git/
- 文件追踪与暂存
Git 需先将文件加入「暂存区」,再提交到仓库,核心命令:
bash
运行
1. 创建测试文件
echo "openEuler Git Tutorial" > README.md
2. 查看文件状态(红色表示未追踪)
git status
3. 将指定文件加入暂存区
git add README.md
4. 将所有未追踪/修改文件加入暂存区
git add .
5. 撤销暂存(如误加文件)
git reset HEAD README.md
- 提交代码到本地仓库
暂存区文件需「提交」才会被 Git 永久记录,提交时必须写备注(-m 参数):
bash
运行
基础提交(必填备注)
git commit -m "init: 添加README.md,初始化项目"
若暂存+提交一步完成(仅适用于已追踪的文件)
git commit -am "update: 修改README.md内容"
- 查看提交记录
bash
运行
简洁版记录(每行一个提交)
git log --oneline
完整版记录(含作者、时间、哈希值)
git log
查看指定文件的提交记录
git log README.md
四、分支管理(核心进阶)
分支是 Git 最强大的功能,用于并行开发(如功能分支、修复分支),默认分支为 master/main(openEuler 部分仓库默认 main)。
- 分支基础操作
bash
运行
查看所有分支(* 表示当前分支)
git branch
创建新分支(如 feature-dev)
git branch feature-dev
切换到新分支
git checkout feature-dev
创建+切换分支(一步完成,推荐)
git checkout -b feature-dev
合并分支(如将 feature-dev 合并到 master)
git checkout master # 先切回主分支
git merge feature-dev # 合并feature-dev到当前分支
删除分支(开发完成后)
git branch -d feature-dev # 已合并的分支
git branch -D feature-dev # 强制删除未合并的分支
- 解决分支合并冲突
当两个分支修改同一文件的同一行时,合并会触发冲突,需手动解决:
bash
运行
合并时提示冲突(示例)
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
1. 打开冲突文件,找到冲突标记
<<<<<<< HEAD # 当前分支(master)的内容
openEuler Git Tutorial
======= # 待合并分支(feature-dev)的内容
openEuler Git Guide
feature-dev
2. 修改为最终内容(删除冲突标记)
openEuler Git Tutorial & Guide
3. 重新暂存+提交
git add README.md
git commit -m "merge: 解决README.md冲突,合并feature-dev分支"
五、远程仓库操作(对接 Gitee/GitHub/GitLab)
- 关联远程仓库
先在代码平台(如 Gitee)创建远程仓库,再关联本地仓库:
bash
运行
添加远程仓库(origin 为仓库别名,可自定义)
git remote add origin https://gitee.com/yourname/my-openeuler-project.git
查看已关联的远程仓库
git remote -v
若需修改远程仓库地址
git remote set-url origin https://github.com/yourname/my-openeuler-project.git
- 推送本地代码到远程
bash
运行
首次推送(-u 绑定本地分支与远程分支)
git push -u origin master
非首次推送(直接推送当前分支)
git push
推送指定分支
git push origin feature-dev
- 拉取远程代码
bash
运行
拉取远程最新代码(不合并)
git fetch origin
拉取并合并远程代码(常用)
git pull origin master
若本地有未提交的修改,拉取前可暂存
git stash # 暂存修改
git pull origin master # 拉取代码
git stash pop # 恢复暂存的修改
- 克隆远程仓库到本地
若本地无仓库,直接克隆远程仓库:
bash
运行
git clone https://gitee.com/yourname/my-openeuler-project.git
克隆到指定目录
git clone https://gitee.com/yourname/my-openeuler-project.git my-project-dir
六、Git 常用进阶技巧
- 版本回滚
bash
运行
查看提交哈希值(前7位即可)
git log --oneline
回滚到指定版本(保留修改,可重新提交)
git reset --soft 1a2b3c4
回滚到指定版本(删除所有修改,谨慎使用)
git reset --hard 1a2b3c4
推送到远程(回滚后强制推送)
git push -f origin master
- 忽略文件(.gitignore)
创建 .gitignore 文件,指定无需追踪的文件(如日志、编译文件):
bash
运行
在项目根目录创建.gitignore
touch .gitignore
编辑.gitignore(示例内容)
cat >> .gitignore << EOF
忽略日志文件
*.log
忽略编译目录
target/
忽略系统隐藏文件
.DS_Store
忽略配置文件
config.ini
EOF
将.gitignore加入追踪并提交
git add .gitignore
git commit -m "config: 添加.gitignore,忽略无用文件"
- 配置 SSH 免密登录(推荐)
每次推送输入账号密码繁琐,配置 SSH 密钥可免密访问:
bash
运行
生成SSH密钥(一路回车,无需设置密码)
ssh-keygen -t rsa -C "your@email.com"
查看公钥内容(复制到Gitee/GitHub的SSH密钥配置中)
cat ~/.ssh/id_rsa.pub
测试SSH连接(以Gitee为例)
ssh -T git@gitee.com
输出:Hi yourname! You've successfully authenticated... 表示成功
七、openEuler 下 Git 常见问题解决
- 安装 Git 提示「无可用包」
原因:源配置问题,重新配置 openEuler 官方源:
bash
运行
备份原有源
sudo mv /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/openEuler.repo.bak
下载官方源配置(以22.03 LTS为例)
sudo wget -O /etc/yum.repos.d/openEuler.repo https://repo.openeuler.org/openEuler-22.03-LTS/repo/openEuler.repo
清理缓存并重新安装
sudo dnf clean all
sudo dnf makecache
sudo dnf install git -y
- 推送代码提示「权限拒绝」
检查远程仓库地址是否正确(HTTPS/SSH 区分);
SSH 方式:确认公钥已添加到代码平台,且本地私钥未被修改;
HTTPS 方式:确认账号密码正确,或切换为 SSH 方式。
- Git 中文乱码
openEuler 下默认字符集为 UTF-8,若出现中文乱码,添加如下配置:
bash
运行
git config --global core.quotepath false
git config --global i18n.commit.encoding utf-8
git config --global i18n.logoutputencoding utf-8
export LESSCHARSET=utf-8 # 临时生效,可写入~/.bashrc永久生效
八、总结
本教程覆盖 openEuler 下 Git 的核心使用场景:
安装与基础配置是前提,需确保用户信息与远程平台一致;
本地仓库操作(add/commit/log)是日常开发基础;
分支管理是多场景开发的核心,需熟练掌握合并与冲突解决;
远程仓库对接(push/pull/clone)是团队协作的关键;
SSH 免密、.gitignore 等技巧可大幅提升效率。
如需深入学习,可参考 Git 官方文档(git help 命令)或 openEuler 社区的代码管理规范。