git checkout、reset、commit命令

HEAD和master

HEAD:HEAD可以指向分支名也可以指向具体的提交点(commit),当HEAD指向具体的提交点的时候,处于分离状态(Detached HEAD)。我们姑且把HEAD指向分支名的状态称为绑定的状态。
无论HEAD是指向分支还是提交点,最终来说,HEAD还是指向某一个提交点。处于绑定状态的HEAD,只是多了分支名这一个媒介而已。
既然HEAD指向某一提交点,那么HEAD的作用是什么?
答案是:标记当前工作区是在哪一个提交的基础上进行操作的。

master:分支名,它指向某一个具体的提交点。

checkout指令

checkout指令的作用是:移动HEAD,使其指向某个分支或提交点。如果HEAD切换后的提交点与切换前的提交点不同,则会强制使用新提交点的内容覆盖当前工作区的内容。如果切换前后提交点相同,则不会覆盖当前工作区的修改。
注意:checkout指令,仅仅移动HEAD,不会移动分支名,无论HEAD处于什么状态(分离或绑定)。该指令是使得HEAD进入分离状态的唯一指令。

reset指令

reset指令的作用是:移动HEAD到指定的提交点。当HEAD处于绑定状态时,会同时移动与HEAD关联的分支名,并保留HEAD的绑定状态。当HEAD处于分离状态时,则只会移动HEAD,不移动分支名。该方法不会强制覆盖当前工作区的内容,除非使用–hard参数。

commit指令

commit指令的作用是:在当前commit的基础上新增一个commit,并将HEAD移动到新的commit上。如果HEAD处于绑定状态,同时移动分支名,并保留HEAD的绑定状态,否则,仅仅移动HEAD。

-----------------补充--------------------

detached Status

当Head并没有指向任意分支时,就是所谓的分离状态。在分离状态,用户依然可以提交commit,但是需要注意的是,Head切换到某一分支前,必须对分离状态时提交的commit创建一个新的分支,否则,分离状态时提交的commit都会在切换分支后丢失。可以这么理解,对于git来说,不处于某个分支上的commit都会被丢弃。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部