【git | 01】 git add、git commit

git的基本介绍

 

Git是分布式版本控制系统,所以需要绑定一个用户名和邮箱;以后我们每次提交代码都是用自己的用户提交的,这样就达到了在公司中,分辨多个开发人员提交的代码。

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

 

 

 

git本地仓库的使用教程

1. 下载git,使用命令:

sudo yum install -y git

2. 配置git:

git config --global user.name "Your Name"
git config --global user.email "email@example.com"
#查看配置是否生效
git config --list

3. 使用git创建本地仓库

#创建目录
mkdir gitspace
cd gitspace
git init

 4. 使用命令 git add readme.txt 将文件加入到暂存区,然后使用 git commit -m "first commit readme.txt" 从暂存区提交到版本库。

注意:

提交时,git用暂存区域的文件创建一个新的提交,并把此时的节点设为父节点。然后把当前分支指向新的提交节点。下图中,当前分支是main。 在运行命令之前,main指向ed489,提交后,main指向新的节点f0cec并以ed489作为父节点。

git commit系列命令

git reset系列命令

1. 通过命令 git status 查看当前仓库的状态。

 

 

 

 

 

 

3.对 readme.txt 总共进行了修改提交,想要查看一下历史该怎么查找呢?

  • 使用 git log 查看历史版本

 

还可以按照每一次版本变更为一行内容显示,使用 git log --pretty=oneline 命令。

 

 

 现在我需要版本回退,想把当前的版本回退到上一个版本,可以使用如下两种命令:

①  git reset --hard HEAD^ 回到上一个版本, git reset --hard HEAD^^ 回退到上上一个版本,以此类推;

② 如果回退到前50个版本的话,使用方法①就显得不太明智了,我们可以使用简便命令操作: git reset --hard HEAD~50 就可以了。

HEAD 说明:

  • HEAD 表示当前版本

  • HEAD^ 上一个版本

  • HEAD^^ 上上一个版本

  • HEAD^^^ 上上上一个版本

  • 以此类推...

可以使用 ~数字表示

  • HEAD~0 表示当前版本

  • HEAD~1 上一个版本

  • HEAD^2 上上一个版本

  • HEAD^3 上上上一个版本

  • 以此类推...

 

当前readme.txt文件内容如下:(使用Linux中的cat方法可以查看)

 

 如果现在又想回到刚才回退之前的最新版本,但是使用 git log --pretty=oneline 查看的是比当前老的版本,我们只能通过 git reflog 来查看比当前新的版本, 这时候我们看每一行都有一串黄色的字符,这个是每次的版本号

 

 

实质上,reset 这个指令虽然可以用来撤销 commit ,但它的实质行为并不是撤销,而是移动 HEAD ,并且「捎带」上 HEAD 所指向的 branch(如果有的话)。也就是说,reset 这个指令的行为其实和它的字面意思 "reset"(重置)十分相符:它是用来重置 HEAD 以及它所指向的 branch 的位置的。

而 reset --hard HEAD^ 之所以起到了撤销 commit 的效果,是因为它把 HEAD 和它所指向的 branch 一起移动到了当前 commit 的父 commit 上,从而起到了「撤销」的效果:

 

 

 所以同理,reset --hard 不仅可以撤销提交,还可以用来把 HEAD 和 branch 移动到其他的任何地方。

1

git reset --hard branch2

 

 

 

 撤销操作

撤销操作包括两类:

 git checkout -- <file>  :撤销对工作区修改;这个命令是以最新的存储时间节点(add和commit)为参照,覆盖工作区对应文件file;这个命令改变的是工作区。

  git reset HEAD -- <file> : 清空add命令向暂存区提交的关于file文件的修改(Ustage);这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何改变。

参考资料

1. git详解使用教程

2. git reset命令

3. github学习

4. 图解git

5. Git Reset 三种模式

 

相关推荐:

Python pre-commit 的 hooks 配置

.pre-commit-config.yaml必须放在项目根目录,文件名严格为该名称且后缀为.yaml;rev字段须填确定的commithash或tag,不可用分支名;pythonhooks需显式声明language_version;运行时应指定--hook-stagepre-commit以匹配gi...

Python commit message 的 Conventional Commits 规范

必须用conventionalcommits,因semantic-release等工具依赖feat:、fix:、chore:等前缀自动判定变更类型并生成changelog和版本号;python项目需小写前缀+英文冒号空格,范围用具体技术如poetry、black,避免模糊词与废话。 commitme...

Python black + isort + autoflake 的 pre-commit 链

正确顺序只能是:autoflake→isort→black,因autoflake删未用代码、isort重排import、black统一格式,顺序颠倒会导致重复操作或语法错误。 pre-commit配置里black、isort、autoflake的执行顺序为什么重要 三者都改代码格式,但改的不是同一层...

PythonAI初学者避坑教程_转型过程中常见错误

入门AI应先做完整小项目而非啃理论书,用scikit-learn实现房价预测全流程;慎用Jupyter,优先写.py脚本练结构;勿迷信AutoML,先手写LR+标准化流程;起步即用venv和Git规范工程;提问StackOverflow需提供最小复现代码、版本与完整报错。 别一上来就啃《深度学习》 ...

Python单元测试项目实战教程_覆盖率分析与断言应用

Python单元测试需兼顾覆盖率与精准断言:用pytest-cov生成HTML报告查漏补缺,聚焦missedlines;用原生assert验证返回值、异常和状态变化;通过parametrize覆盖边界与异常场景;在CI中设fail_under阈值强制保障质量。 写Python单元测试不只是让代码“跑...

Python模块包管理进阶教程_依赖解析与虚拟环境实践

Python依赖解析需解决版本兼容性、传递依赖与平台约束,现代工具采用回溯式解析;推荐pip-tools分层管理(requirements.in+pip-compile生成带哈希的requirements.txt)或Poetry一体化处理,确保环境可复现与协作一致性。 理解依赖解析的本质 Pytho...

PythonAI实战驱动学习教程_边做项目边成长

学Python做AI要动手做项目,从最小可行项目起步,边做边查文档和报错,小步迭代优化,并用Git记录每次改进过程。 学Python做AI,光看理论没用,得动手做项目。项目不是为了炫技,而是帮你把零散知识点串起来,遇到问题倒逼自己查文档、调代码、读报错——这才是真实的学习节奏。 从“能跑通”开始:选...