git - git:移动和更改 HEAD 之间的区别
问题描述
reset 要做的第一件事就是移动 HEAD 指向的东西。这与更改 HEAD 本身不同(这是 checkout 所做的);reset 移动 HEAD 指向的分支。
https://git-scm.com/book/en/v2/Git-Tools-Reset-Demystified
移动 HEAD 和改变 HEAD 有什么区别?
解决方案
引用描述了HEAD
指向分支的情况。假设master
点在CommitA
,并且dev
点在CommitB
。
前,
HEAD -> master -> CommitA
后git reset dev
HEAD -> master -> CommitB
后git reset CommitB
HEAD -> master -> CommitB
后git checkout dev
HEAD -> dev -> CommitB
后git checkout CommitB
HEAD -> CommitB
git reset
将提交HEAD
递归地从更改CommitA
为CommitB
。git checkout
更改HEAD
直接指向的内容,从master
todev
和 from master
to CommitB
。
HEAD
一开始就可以分离,
HEAD -> CommitA
在这种情况下,后git reset dev
HEAD -> CommitB
后git reset CommitB
HEAD -> CommitB
后git checkout dev
HEAD -> dev -> CommitB
后git checkout CommitB
HEAD -> CommitB
推荐阅读
- linux - 存储脚本及其输出的合适目录是什么?
- javascript - 图像组件未出现在 Android 模拟器上
- python - on_command_error() 缺少 1 个必需的位置参数:'exc'
- python - 在 Pycharm 中使用 iCloud 作为工作目录
- php - $.ajax 为数据返回 [object Object] (WordPress)
- c# - 获取所有列计数并将数字存储在变量中
- python - 删除和读取小部件后的 KivyMD MDList 间距布局问题
- postgresql - pgcrypto:无法正常用户
- list - 如何创建一个包含一个元素但具有给定深度的列表?
- react-native - 反应原生深层链接不需要的组件渲染,即使有清理功能