一、管理修改
git管理的是修改,而不是文件。修改可以是新增一行、删除一行、添加某些字符、删除某些字符、删除文件或新建文件等。
- 现在我们修改文件sample.txt,然后使用git add命令将文件提交至暂存区:
vim sample.txt
cat sample.txt
git add sample.txt
git status
- 可以看到添加了“git tracks changes”这一行,然后再次对文件sample.txt进行修改,然后使用git commit进行提交:
vim sample.txt
cat sample.txt
git commit -m "git tracks changes"
git diff
git status
- 再次修改的文件内容最后一行添加了一个单词"of"。提交后使用git diff查看本地库和工作区的区别,发现第二次修改的内容并没有被递交到本地库。使用git status命令发现,本地库的文件被修改了,但是还没有提交到暂存区。想要将第二次修改也提交到本地库,需要使用git add命令首先将其交到暂存区,然后使用git commit命令。
二、撤销修改
2.1未add时
上面第二次修改还没有使用git add命令交到暂存区,此时我们想要放弃在工作区的修改,该如何做呢
- 其实上面使用git status后,git告诉我么git restore 命令会将工作区的文件恢复到上一次 commit 的时候这个文件的样子。
git restore sample.txt
cat sample.txt
- 可以看到,工作区的文件sample.txt恢复到了上一次commit的样子。即git restore 命令的作用是在 git add 之前,放弃工作区中对文件的所有修改。
2.2已add时
如果已修改的文件已经使用git add命令提交到了暂存区,但是我想要放弃暂存区的修改,该如何做呢。
- 首先我们先对文件sample.txt进行修改,然后使用git add命令提交到暂存区:
vim sample.txt
cat sample.txt
git add sample.txt
git status
- 使用git status命令后,git告诉我们git restore --staged 命令可以放弃暂存区的内容。
可以发现,工作区的内容没有变,只是使用git status命令后发现文件sample.txt的状态变为没有git add之前的状态了。即git restore --staged 命令的作用是将 git add 的文件变成 git add 之前的状态。
如果此时还想放弃工作区的内容,就再使用git restore 命令。
2.3已commit时
已经使用git commit命令提交到本地库的文件
想要恢复到git add时的状态可以使用git reset --soft HEAD
想要恢复到git add之前的状态可以使用git reset --mixed HED 或者git reset HEAD
想要恢复到没有修改之前的状态可以使用git reset --hard HEAD
三、删除文件
删除文件也是修改的一种。
- 现在我们先创建一个新文件test.txt,然后使用git add和git commit提交到本地库:
touch test.txt
git add test.txt
git commit -m "add test.txt"
- 这时候,我们将文件test.txt删除掉,再查看本地库的状态:
rm test.txt
git status
- git告诉我们可以是使用git rm 将文件删除:
git rm test.txt
git stauts
- 文件被成功删除了。
四、总结
1.只有使用git add命令交到暂存区的文件,才能再使用git commit提交到本地库。
2.git restore 命令的作用是在 git add 之前,放弃工作区中对文件的所有修改。
3.git restore --staged 命令的作用是将 git add 的文件变成 git add 之前的状态。
4.已经使用git commit命令提交到本地库的文件:
想要恢复到git add时的状态可以使用git reset --soft HEAD 。
想要恢复到git add之前的状态可以使用git reset --mixed HED 或者git reset HEAD 。
想要恢复到没有修改之前的状态可以使用git reset --hard HEAD 。
5.想要删除掉已经提交到本地库的文件,可以使用git rm 直接删除。
版权归原作者 qyqyqyi 所有, 如有侵权,请联系我们删除。