专题一:Git 回退与恢复操作流程指南

本指南适用于需要将项目回退到某个历史版本,或在回退后恢复误删提交的开发者。

一、查看提交历史

1
git log --oneline

输出示例:

1
2
3
a1b2c3d4 初始化项目
e5f6g7h8 添加首页样式
9i0j1k2l 修复字体问题

二、回退到指定版本

方式一:彻底回退(删除之后的提交与代码改动)

1
git reset --hard 提交ID

示例:

1
git reset --hard e5f6g7h8

方式二:回退提交记录,但保留改动(改动会出现在暂存区)

1
git reset --soft 提交ID

方式三:取消暂存但保留工作区修改

1
git reset 提交ID

三、恢复已回退的版本

如果你使用了 --hard,但后悔了:

查看 HEAD 的移动记录

1
git reflog

输出示例:

1
2
abc1234 HEAD@{0}: reset: moving to e5f6g7h8
xyz9876 HEAD@{1}: commit: 修复字体问题

回退到之前的状态(例如 HEAD@{1})

1
git reset --hard HEAD@{1}

1
git reset --hard xyz9876

四、补充建议

  • 建议使用前先执行 *\*\* 和 \*\** 观察当前状态
  • 如非必要,不要频繁使用 *``*,谨慎操作以防数据丢失。
  • 可以先使用 git stash 备份当前工作区:
1
git stash save "临时保存当前工作"

回退完成后恢复:

1
git stash pop

命令速查表

1
2
3
4
5
6
git log --oneline               # 查看提交历史
git reset --hard 提交ID # 强制回退
git reset --soft 提交ID # 回退提交保留改动
git reset 提交ID # 取消暂存保留工作区
git reflog # 查看 HEAD 历史
git stash / git stash pop # 暂存和恢复改动

专题二 Git概述与常见命令

1.Git工作机制

img

2.Git常用命令

命令名称 作用
git config --global user.name 用户名 设置用户签名
git config --global user.email 邮箱 设置用户邮箱
git init 初始化本地库
git status 查看本地库状态
git add 文件名 添加到暂存区
git commit -m “日志信息” 文件名 提交到本地库
git reflog 查看历史记录
git reset --hard 版本号 版本穿梭

设置用户签名

基本语法

1
2
git config --global user.name 用户名
git config --global user.email 邮箱

案例实操

全局范围的签名设置:

1
2
3
4
git config --global user.name yhm
git config --global user.email yaohm7788@163.com
git config --list # 查看全局配置
cat ~/.gitconfig # cat linux中查看文本的命令 ~ 家 [你当前用户的家]/ .gitconfig

说明:

签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码。

※注意:这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系。

3.实操

初始化本地库

1
git init

案例实操

img

结果查看

img

查看本地库状态

基本语法

1
git status

案例实操

(1)首次查看(工作区没有文件)

img

(2)新增文件

img

img

(3)再次查看(检测到未追踪文件)

img

添加暂存区

将工作区的文件添加到暂存区

(1)基本语法

1
git add 文件名

(2)案例实操

img

查看状态(检测到暂存区有新文件)

img

提交本地库

暂存区文件提交到本地库

(1)基本语法

1
git commit -m "日志信息" 文件名

(2)案例实操

img

查看状态(没有文件需要提交)

img

修改文件(hello.txt)

查看状态(检测到工作区有文件被修改)

img

将修改的文件再次添加暂存区

img

查看状态(工作区的修改添加到了暂存区)

img

将暂存区文件提交到本地库

img

历史版本

查看历史版本

(1)基本语法

1
2
3
git reflog 查看版本信息
git reflog -n 数量
git log 查看版本详细信息

(2)案例实操

img

版本穿梭

(1)基本语法

1
git reset --hard 版本号

(2)案例实操

–首先查看当前的历史记录,可以看到当前是在48f4e22这个版本

img

–切换到之前版本,8ca80d7版本,也就是我们第一次提交的版本

img

–切换完毕之后再查看历史记录,当前成功切换到了8ca80d7版本

img

–然后查看文件hello.txt,发现文件内容已经变化

img

Git切换版本,底层其实是移动的HEAD指针。

专题三 Git客户端操作

Gitee(略)

GitHub远程仓库(略)

idea使用Git将java项目上传到GitHub

1.github如何修改默认分支为master

img

2.把项目上传github上(在终端用命令行)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#初始化本地仓库
git init

#将所有文件添加到暂存区
git add .

#提交更改并添加描述
git commit -m "消息描述"

#添加远程仓库URL
git remote add origin git 地址url

#将从远程仓库拉取更新,并使用rebase将本地的修改应用到这些更新之上
git pull --rebase origin master

#如果你是第一次将本地仓库推送到GitHub上(不是第一次去掉-u)
git push -u origin master

或者可以用idea自带的操作

img

忽略文件

概念:.gitignore 文件可以让 git 彻底忽略跟踪指定文件

目的:让 git 仓库更小更快,避免重复无意义的文件管理

例如:

  • 1.系统或软件自动生成的文件
  • 2.编译产生的结果文件
  • 3.运行时生成的日志文件,缓存文件,临时文件等
  • 4.涉密文件,密码,秘钥等文件

创建:

  • 1.项目根目录新建 .gitignore 文件
  • 2.填入相应配置来忽略指定文件

注意:如果文件已经被暂存区跟踪过,可以从暂存区移除即可

分支的概念

概念:本质上是指向提交节点的可变指针,默认名字是 master

注意:HEAD 指针影响工作区/暂存区的代码状态

img

img

场景:开发新需求 / 修复 Bug,保证主线代码随时可用,多人协同开发提高效率

例如:

在现有代码上创建新分支完成内容列表业务

突然需要紧急修复 Bug - 单独创建分支解决 Bug

img

需求:创建内容列表 content 分支,并产生 3 次提交记录

步骤:

  1. 创建分支命令:git branch 分支名

img

  1. 切换分支命令:git checkout 分支名

img

  1. 工作区准备代码并暂存提交,重复 3 次

img

1.什么是 Git 分支?

指针,指向提交记录

2.HEAD 指针的作用?

影响暂存区和工作区的代码

3.如何创建和切换指针?

1
2
git branch 分支名
git checkout 分支名