Git 入门实操实例:从安装到远程仓库全流程

0. 安装 Git

在 Ubuntu 环境下,使用 apt 包管理器安装 Git,并通过查看版本号确认安装成功。

bash 复制代码
sudo apt install git
git version          # 查看版本确认安装成功

1. 配置用户名邮箱

首次使用 Git 前,需要配置全局用户名和邮箱,后续所有提交都会带上这些信息。

bash 复制代码
git config --global user.name "testuser"
git config --global user.email "test@126.com"

2. 创建项目,初始化本地仓库

创建一个项目目录,并在其中执行 git init 将其初始化为 Git 仓库。初始化后目录下会生成隐藏的 .git 文件夹,用于存放版本控制数据。

bash 复制代码
mkdir git_demo
cd git_demo
git init                 # 初始化为git仓库,生成隐藏文件夹 .git
ls -a                    # 可以看到 .git

3. 文件操作、add、commit、status、log

创建代码文件,通过 git status 观察文件状态变化,使用 git add 将文件加入暂存区,再通过 git commit 提交到本地仓库。

bash 复制代码
# 创建代码文件
vi main.c
main.c写入:
#include <stdio.h>
int main(){
return 0;
}
git status                # 此时main.c状态:Untracked 未跟踪
git add main.c            # 加入暂存区,状态变为Staged
git status
git commit -m "版本1:基础main框架"   # 提交到本地仓库
git log                               # 查看提交日志
git log --pretty=oneline              # 单行简洁查看日志

4. git diff 查看差异;git checkout 丢弃工作区修改

修改文件后,使用 git diff HEAD 对比工作区与最新提交的差异;若想放弃修改,使用 git checkout 恢复到仓库版本。

bash 复制代码
# 修改main.c
vi main.c
# 添加一行 #include <stdlib.h>
git diff HEAD          # 对比工作区和最新提交,能看到+新增行
git status             # Modified 已修改,未暂存
git checkout main.c   # 丢弃工作区修改,恢复到仓库版本
cat main.c             # 刚才新加的内容消失

5. git reset HEAD filename:取消暂存

当文件已加入暂存区但想撤销暂存时,使用 git reset HEAD 将改动保留在工作区,状态从 Staged 变回 Modified。

bash 复制代码
vi main.c
# 修改main.c,增加printf语句
git add main.c         # 添加到暂存区 Staged
git status
git reset HEAD main.c  # 撤销暂存,改动保留在工作区,状态变回Modified
git status

6. git rm 删除文件

使用 git rm 删除文件,删除操作会进入暂存区,提交后文件从仓库中移除。

bash 复制代码
git add main.c
git commit -m "版本2:添加printf打印"
git rm main.c          # 删除文件,改动进入暂存
git status
git commit -m "版本3:删除main.c文件"
ls                     # 目录看不到main.c

7. git reflog + git reset --hard 版本回退

git reflog 可以查看所有操作记录,拿到各个 commit 编号;git reset --hard HEAD^ 可回退到上一个提交版本。

bash 复制代码
git reflog             # 查看所有操作记录,可以拿到各个commit编号
# HEAD@{0}: commit: 版本3:删除main.c文件
# HEAD@{1}: commit: 版本2:添加printf打印
# HEAD@{2}: commit (initial): 版本1:基础main框架
HEAD^ 代表上一个版本,回退到上一个提交
git reset --hard HEAD^
ls                     # main.c回来了!

⚠️ git reset --hard 会丢弃本地未保存改动,生产环境谨慎!


8. 分支全套实操:创建、切换、合并、冲突

分支是 Git 的核心能力。先查看当前分支,创建并切换到 dev 分支进行修改,再切回 master 分支制造冲突,最后合并并解决冲突。

bash 复制代码
# 查看分支,默认只有master
git branch
git branch dev           # 创建dev分支
git branch               # *代表当前分支,现在*在master
git checkout dev         # 切换到dev分支
git branch
在dev分支修改main.c
vi main.c
dev分支写:printf("来自dev分支\n");
git add main.c
git commit -m "dev分支:增加dev打印"
git checkout master      # 切回master分支
master分支修改同一个文件的同一行,制造冲突
vi main.c
master分支写:printf("来自master分支\n");
git add main.c
git commit -m "master分支:增加master打印"
在master分支合并dev,触发冲突
git merge dev
提示自动合并冲突!main.c有冲突

解决冲突

打开 main.c,Git 会标记冲突标记 <<<<<<< ======= >>>>>>>。手动修改文件,删掉冲突标记,保存,然后提交。

bash 复制代码
git add main.c
git commit -m "解决dev与master合并冲突"
git log --graph       # 图形化查看分支合并历史

删除不需要的分支:

bash 复制代码
git checkout master
git branch -d dev     # 删除dev分支

9. git stash 贮藏现场

场景:代码写一半,还不想提交,需要切换别的分支处理 bug。此时直接切换分支会报错,使用 git stash 贮藏当前工作现场即可。

bash 复制代码
# 在master分支修改main.c,不提交
vi main.c
# 随便写几行测试代码,不要git add
git status
现在直接切换分支会报错,本地修改会被覆盖
git checkout dev  会报错!
git stash                # 贮藏当前工作现场,工作区变干净
git status
git stash list           # 查看保存的贮藏列表
git checkout dev         # 现在可以正常切换分支
在dev分支做一点修改
vi main.c
git stash                # dev也贮藏一份
git stash list           # 现在有两个stash记录
git checkout master
git stash pop stash@{1} # 恢复master那一份贮藏,pop取出之后列表就删除这条记录
git stash list

提示:尽量回到当初贮藏的分支再 pop,避免莫名其妙冲突。


10. SSH 密钥配置

生成 RSA 密钥对,将公钥内容复制并粘贴到 Gitee/GitHub 的 SSH 公钥设置页面,然后测试连通性。

bash 复制代码
# 生成rsa密钥对
ssh-keygen -t rsa -C "test@126.com"
# 一路回车,不需要密码
查看公钥,复制全部内容
cat ~/.ssh/id_rsa.pub

把复制的公钥粘贴到 Gitee/GitHub 的 SSH 公钥设置页面。连通测试:

bash 复制代码
ssh -T git@gitee.com
# 出现Hi xxx! 代表成功

11. 远程仓库操作

在 Gitee 网页新建一个空仓库,复制 SSH 地址,将本地仓库关联远程仓库并推送。

bash 复制代码
# 将本地仓库关联远程仓库
git remote add origin git@gitee.com:xxx/git_demo.git
git push -u origin master   # -u 设置跟踪关系,推送本地master到远程
git pull origin master      # 拉取远程更新到本地
git clone git@gitee.com:xxx/git_demo.git  # 演示克隆(可以新建文件夹执行)

12.知识点对照表

命令 作用
git init 初始化仓库
git add 加入暂存区
git commit -m "***" 提交本地仓库
git status 查看状态
git diff HEAD 查看改动差异
git checkout filename 丢弃工作区修改
git reset HEAD filename 取消暂存
git rm 删除文件
git log / --pretty=oneline 查看提交记录
git reflog 全部操作日志
git reset --hard HEAD^ 版本回退
git branch 查看 / 创建 / 删除分支
git checkout 切换分支
git merge 合并分支,解决冲突
git log --graph 图形分支历史
git stash / stash list / pop 贮藏现场
ssh-keygen 生成密钥
git push / pull / clone 远程推送拉取克隆

13.重要易错总结

  1. 切换分支:要么 commit 提交,要么 git stash 贮藏,否则报错。
  2. git reset --hard 会丢本地未提交修改,不要随便执行。
  3. merge 出现冲突必须手动修改文件,add+commit 完成合并。
  4. SSH 推送必须把公钥配置到码云 / GitHub 网页,否则 push 失败。
相关推荐
具身AGI5 小时前
ARR还是交付量,物理AI 国产 的三种收入口径
大数据·人工智能
小淮AI5 小时前
在职医生备考主治医师,我的资料搭配思路
学习
计算机源码社5 小时前
基于大数据技术的城市空气质量时序趋势与站点特征分析系统 面向监测站点的城市空气污染时空异质性分析与可视化系统
大数据·机器学习·数据挖掘·数据分析·毕业设计·课程设计·数据可视化
IT大白鼠5 小时前
搜索系列 · 第 07 篇——调优实战:写入、查询与监控
elasticsearch·nosql
知产xiao_xin5 小时前
了解商号权
经验分享·笔记·知识产权
AC赳赳老秦5 小时前
OpenClaw 数据引用规范自动生成:为公开数据构建可信来源标注与标准引用体系
大数据·开发语言·汇编·数据库·人工智能·deepseek·openclaw
进击的横打5 小时前
【人工智能】卡片笔记法:从原子化思考到知识网络构建
笔记
乐迪信息5 小时前
AI防爆摄像机,监测港口船舶航行偏航隐患
大数据·人工智能·深度学习·算法·计算机视觉
AOI小白新手上路6 小时前
韦东山《ARM 架构与编程》基于I.MX6ULL 3-1 硬件知识_LED 原理图 · 学习笔记
arm开发·学习·架构
西索斯coding6 小时前
grok-4.7 调用一直 429 怎么办?不是额度用完——是 RPM 和 TPM 双桶限流,附响应头读取代码和退避策略
大数据·人工智能·机器学习·ai