Git学习笔记

Git 版本管理速查与学习笔记

本文整理自廖雪峰的 Git 教程( https://liaoxuefeng.com/books/git/time-travel/working-stage/index.html ),按照自己的使用习惯重新编排,方便日常查阅。

使用说明:文中的 你的邮箱、你的昵称、你的GitHub用户名 请替换为自己的信息。


速查表

场景 命令
初始化仓库 git init
添加到暂存区 git add 文件名 或 git add .
提交 git commit -m "说明"
查看状态 git status
查看历史 git log --pretty=oneline --abbrev-commit
查看修改内容 git diff 文件名
回退版本 git reset --hard 版本号
查找被回退的版本 git reflog
撤销工作区修改 git checkout -- 文件名
删除文件 git rm 文件名
绑定远程仓库 git remote add origin 仓库地址
上传到远程 git push origin 分支名
下载远程仓库 git clone 仓库地址
创建并切换分支 git switch -c 分支名
合并分支 git merge 分支名
创建标签 git tag 标签名
推送标签 git push origin --tags

目录

  1. 创建版本库
  2. 全局配置
  3. 查看历史与提交新版本
  4. 版本回退
  5. 撤销修改与删除文件
  6. 远程仓库
  7. 分支管理
  8. 标签管理

核心概念:文件在 Git 中的三个区域

在学习命令之前,先理解文件的流转过程:

工作区(你能看到和编辑的文件夹)
   │  git add
   ▼
暂存区(准备提交的文件列表)
   │  git commit
   ▼
版本库(保存了所有历史版本)
   │  git push
   ▼
远程仓库(例如 GitHub)

提示:大部分命令都围绕这条流程展开。记住"修改 → 加入暂存区 → 提交"三步,就能掌握日常使用的 80% 内容。


1. 创建版本库

本节目标

把一个普通文件夹变成 Git 可以管理的仓库。

1.1 创建工作目录

mkdir learngit        # 创建一个文件夹
cd learngit           # 进入该文件夹
touch ReadMe.txt      # 创建一个文本文件
pwd                   # 显示当前所在的目录

提示:Windows 系统下路径形如 /c/Users/...,表示 C 盘的用户目录。

1.2 初始化仓库

git init              # 把当前文件夹初始化为 Git 仓库

执行后会生成一个隐藏的 .git 文件夹,Git 的所有记录都保存在这里。

1.3 添加文件并提交

git add ReadMe.txt                         # 把文件放入暂存区
git commit -m "wrote a readme file"        # 从暂存区提交到版本库,-m 后为本次说明

提示:git add 时直接写文件名即可,不需要额外处理后缀。文件名要与实际一致,大小写也要相同。


2. 全局配置

本节目标

设置提交时显示的邮箱和昵称。只需配置一次,之后所有仓库都会使用。

git config --global user.email "你的邮箱"
git config --global user.name "你的昵称"

提示:这里的邮箱和昵称会出现在每一次提交记录中,与远程平台(如 GitHub)账号对应时建议保持一致。


3. 查看历史与提交新版本

3.1 查看状态与历史

命令 作用
git log 查看完整的提交历史
git log --pretty=oneline --abbrev-commit 以一行一条的简洁格式查看历史
git status 查看当前哪些文件被修改、哪些已加入暂存区
git diff 文件名 查看某个文件具体改了什么(尚未提交时使用)
git log
git log --pretty=oneline --abbrev-commit
git status
git diff ReadMe.txt

3.2 修改后提交新版本

修改文件后,按以下三步提交:

git add .                        # 把当前目录下所有修改加入暂存区
git commit -m "修改内容备注"      # 提交新版本

提示:git add . 中的 . 表示当前目录。如果只想提交某一个文件,写文件名即可。每次提交的备注应简要说明改了什么,方便日后查找。


4. 版本回退

本节目标

把文件恢复到之前的某个版本。

4.1 回退到上一个或若干个版本

git reset --hard HEAD^        # 回退到上一个版本
git reset --hard HEAD~100     # 回退到往前 100 个版本

符号含义:

写法 含义
HEAD 当前最新版本
HEAD^ 上一个版本
HEAD~100 往前数第 100 个版本

4.2 三种回退模式的区别

reset 命令有三种模式,区别在于"回退后,之前的修改去了哪里":

模式 版本指针 暂存区 工作区(文件内容)
--soft 回退 保留,修改仍在暂存区 保留
--mixed(默认) 回退 清空,修改变为未暂存 保留
--hard 回退 清空 清空,修改全部丢失

注意:--hard 会丢弃未提交的修改,执行前请确认这些修改不需要保留。

4.3 回到某个指定版本

git log --pretty=oneline --abbrev-commit    # 先查看历史版本号(commit id)
git reset --hard 版本号前几位                # 例如 git reset --hard f52c633

提示:版本号只需写前 6 到 7 位,Git 会自动匹配。只要记得某个版本的版本号,就可以随时跳转回去。

如果回退后又想回到较新的版本,可以使用:

git reflog        # 查看每一次 HEAD 移动的记录,包括已被回退的版本号

找到想要的版本号后,再执行 git reset --hard 版本号。


5. 撤销修改与删除文件

5.1 撤销工作区的修改

git checkout -- ReadMe.txt       # 撤销该文件在工作区的所有修改
# 新版 Git 也可使用:git restore ReadMe.txt

注意:

  • 如果修改已通过 git add 加入暂存区,需要先执行 git restore --staged ReadMe.txt 取消暂存,再撤销修改。
  • 如果修改已经 git commit,此命令无法撤销,需要使用版本回退。

5.2 删除文件

git rm test.txt                          # 删除文件,并把删除操作加入暂存区
git commit -m "确认删除文件 test.txt"      # 确认删除

5.3 恢复误删的文件

根据删除后是否已提交,选择不同方法:

情况 恢复命令
执行了 git rm,但还未提交 git restore --staged test.txt 后再执行 git checkout -- test.txt
已经提交了删除操作 git checkout HEAD^ -- test.txt(从上一个版本取回该文件)

提示:git rm 后直接执行 git checkout -- 文件名 只适用于未提交的情况。


6. 远程仓库

本节目标

把本地仓库与 GitHub 等远程平台连接,实现备份和多设备同步。

6.1 配置 SSH 密钥

SSH 密钥用于让本地电脑安全地登录 GitHub,无需每次输入密码。

第一步:检查是否已有密钥

到用户主目录下的 .ssh 文件夹中查看是否存在 id_rsa 和 id_rsa.pub 两个文件。

第二步:如果没有,创建密钥

ssh-keygen -t rsa -C "你的邮箱"      # 一路按回车即可,无需设置密码

第三步:复制公钥内容

cat ~/.ssh/id_rsa.pub                # 显示公钥内容,完整复制

第四步:添加到 GitHub

登录 GitHub,进入账户设置(Settings)中的 SSH and GPG keys,新建一个 SSH Key,名称随意,内容粘贴刚才复制的公钥。

注意:id_rsa.pub 是可以公开给 GitHub 的公钥,而 id_rsa 是私钥,绝不能泄露给他人。

6.2 创建远程仓库并关联

  1. 登录 GitHub,新建一个仓库,例如命名为 LearningforGit。
  2. 在本地仓库目录中执行:
git remote add origin git@github.com:你的GitHub用户名/LearningforGit.git    # 绑定远程仓库,origin 为远程仓库的别名
git push -u origin main                                                       # 第一次上传

提示:如果执行时提示分支不存在,先用 git branch 查看本地分支名。较早创建的仓库默认分支可能是 master,此时将命令中的 main 替换为 master。

6.3 日常同步

git push origin main          # 后续上传新提交(分支名与上面保持一致)

6.4 其他远程操作

命令 作用
git remote -v 查看当前绑定的远程仓库地址
git remote rm origin 解除与远程仓库的绑定
git clone git@github.com:你的GitHub用户名/LearningforGit.git 把远程仓库下载到本地

7. 分支管理

本节目标

在不影响主线的情况下独立开发新功能,完成后再合并回来。

7.1 创建与切换分支

git branch                  # 查看所有分支,当前分支前面有 * 号
git switch -c dev           # 创建并切换到 dev 分支(-c 即 create)
git switch main             # 切换回主分支(旧版本仓库可能是 master)

提示:旧版教程使用 git checkout -b dev 实现同样的效果,git switch 是更直观的新写法。

7.2 合并分支

git switch main             # 先切换到要接收修改的分支
git merge dev               # 把 dev 分支的修改合并到当前分支

7.3 删除已合并的分支

git branch -d dev           # 删除 dev 分支(已合并后才能删除)

8. 标签管理

本节目标

给重要版本(例如 v1.0)打上易记的名字,方便之后快速找到。

8.1 创建标签

git switch main             # 先切换到主分支
git tag v1.0                # 给最新版本打标签

提示:标签默认打在最新提交上。如果要给历史版本打标签,需要在后面加上该版本的 commit id:

git tag v0.9 f52c633                               # 给历史版本 f52c633 打轻量标签
git tag -a v0.9 -m "version 0.9 released" f52c633  # 打带说明的标签,-a 指定标签名,-m 为说明文字

8.2 查看标签

git tag                     # 查看所有标签
git show v0.9               # 查看某个标签的详细信息

8.3 删除标签

git tag -d v0.1             # 删除本地标签

8.4 推送标签到远程

git push origin v0.1        # 推送某一个标签
git push origin --tags      # 一次性推送所有尚未推送的本地标签

8.5 删除远程标签

git tag -d v0.1                        # 先删除本地标签
git push origin --delete v0.1          # 再删除远程标签

提示:旧写法 git push origin :refs/tags/v0.1 也能删除远程标签,效果相同。


参考来源:廖雪峰的 Git 教程,https://liaoxuefeng.com/books/git/time-travel/working-stage/index.html

posted @ 2026-11-02 17:28  微光低语  阅读(4)  评论(0)    收藏  举报