赞
踩
git一共有三个区域,HEAD(记录点指针),INDEX(修改暂存区),Working目录(电脑文件)
假设我们创建一个新的文件夹使用命令git init
,在其中创建了一个文件a.txt,先写入
Hello
git add .
,INDEX <- Working目录中的内容(表示INDEX中的内容变为了Working目录中的内容)git commit -m "commit 1"
,INDEX中的内容会成为第一个commit结点,HEAD指针放在了该结点处。我们再对文件a.txt进行修改,变成版本2
Hello
Hello1
git add .
,INDEX <- Working目录中的内容(表示INDEX中的内容变为了Working目录中的内容)git commit -m "commit 2"
,INDEX中的内容会成为第二个commit结点,HEAD指针移动到了该结点。那么,现在再次对文件a.txt进行修改,变成版本3
Hello
Hello1
Hello2
接下来问题来了,我们对于当前的改动不满意,想退回到以前的commit点。该如何实现?使用git reset
函数即可。但我们可能有三种需求。
git reset --mixed HEAD~1
,在下图中可以就进行对比。【–mixed为默认】git reset --hard HEAD~1
git add .
添加入INDEX,在INDEX与Working和HEAD都不同的情况下,我们希望将HEAD移动到第一个commit,也不想破坏INDEX中的内容。git reset --soft HEAD~1
Changes
目录下为Working和INDEX的不同,Staged Changes
目录下为INDEX和HEAD的不同。参考:https://davidzych.com/difference-between-git-reset-soft-mixed-and-hard/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。