备注:
本文参考于廖雪峰老师的博客Git教程。按照其博客进行学习和记录,感激其自私分享,也欢送各位查看原文。
知识点
- Git跟踪和治理的的是批改,而不是文件
git checkout -- file
,会将文件撤销到和git add
时的状态一样,即git checkout -- file
会将工作区的文件撤销到与暂存区(stage)统一git checkout -- file
命令中,如果没有--
,就变成了“切换到另一个分支”的命令git reset HEAD file
既能够回退版本,也能够把增加到暂存区的批改回退到工作区,HEAD
示意最新版本- 删除文件,
git rm file
,git commit -m"..."
治理批改
Git不同于其余版本控制系统,Git跟踪和治理的的是批改,而不是文件
新增一行、删除一行、批改字符、删除又减少内容、创立新文件等,都是批改
Git通过提交放入暂存区的批改,用来治理批改,而不是治理原文件。
## 撤销批改
在理论中,(尽管不常产生)总是会呈现产生一些问题须要撤销批改。
- 比方:在文件中增加一行无意义的特殊字符
liu@liu-virtual-machine:~/gitTest$ cat readme.txt`this is a test that I learning and use git version control systemthis is a beginningi Add a new line information in the end of readme.txt file$%^%&^*&&(**)(*)*&^*(*&&*&YTRYYIN
没有git add
增加到暂存区时的撤销
- 此时,查看
git status
如下:
liu@liu-virtual-machine:~/gitTest$ git status位于分支 master尚未暂存以备提交的变更: (应用 "git add <文件>..." 更新要提交的内容) (应用 "git checkout -- <文件>..." 抛弃工作区的改变) 批改: readme.txt批改尚未退出提交(应用 "git add" 和/或 "git commit -a")
Git提醒,
git checkout -- file
能够抛弃工作区的改变git checkout -- readme.txt
git checkout -- readme.txt
会把readme.txt
文件在工作区的批改全副撤销。
git checkout -- file
,会将文件撤销到和git add
时的状态一样,即git checkout -- file
会将工作区的文件撤销到与暂存区(stage)统一
git checkout -- file
作用在暂存区(stage),当git add增加到暂存区后,git status不在显示git checkout -- file
命令提醒
可自行测试
- 此时文件内容就回到了原来状态
$ cat readme.txt`this is a test that I learning and use git version control systemthis is a beginningi Add a new line information in the end of readme.txt file
git checkout -- file
命令中,如果没有--
,就变成了“切换到另一个分支”的命令
git add
增加到暂存区后的撤销
当咱们git add
后,发现须要撤销,此时查看git status
状态
$ git status位于分支 master要提交的变更: (应用 "git reset HEAD <文件>..." 以勾销暂存) 批改: readme.txt
Git提醒,应用 git reset HEAD file
能够把增加到暂存区的批改撤销(unstage
)
$ git reset HEAD readme.txt重置后勾销暂存的变更:M readme.txt
git reset
既能够回退版本,也能够把增加到暂存区的批改回退到工作区,HEAD
示意最新版本- 此时查看
git status
,暂存区没有批改,是洁净的,工作区有批改。
$ git status位于分支 master尚未暂存以备提交的变更: (应用 "git add <文件>..." 更新要提交的内容) (应用 "git checkout -- <文件>..." 抛弃工作区的改变) 批改: readme.txt批改尚未退出提交(应用 "git add" 和/或 "git commit -a")
- 当初能够应用
git checkout -- readme.txt
抛弃工作区的批改。而后查看,批改的文件曾经回到原来状态
$ git checkout -- readme.txt$ cat readme.txt`this is a test that I learning and use git version control systemthis is a beginningi Add a new line information in the end of readme.txt file
撤销胜利
git commit提交后的撤销
对于曾经commit
提交到版本库的撤销,能够应用版本回退更改。
如果你提交了近程仓库,则须要另行解决。
删除文件
Git中,删除也是一个批改操作.
首先新建一个test.txt
文件,增加并提交到仓库
- 当咱们把目录下的文件删除后
$ rm test.txt
- 此时,工作区和版本库变得不统一
$ git status位于分支 master尚未暂存以备提交的变更: (应用 "git add/rm <文件>..." 更新要提交的内容) (应用 "git checkout -- <文件>..." 抛弃工作区的改变) 删除: test.txt批改尚未退出提交(应用 "git add" 和/或 "git commit -a")
git status
指出删除了test.txt
文件。
- 当初有两种操作:1、确定从版本库中删除文件,2、从暂存区把误删的文件复原
确定从版本库中删除文件
- 应用
git rm
删除文件并git commit提交
$ git rm test.txtrm 'test.txt'$ git status位于分支 master要提交的变更: (应用 "git reset HEAD <文件>..." 以勾销暂存) 删除: test.txt$ git commit -m"remove test.txt"[master 6a0f133] remove test.txt 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test.txt$ git status位于分支 master无文件要提交,洁净的工作区
从暂存区把误删的文件复原
- 应用
git checkout -- file
从暂存区复原误删的文件(实质还是抛弃工作区的改变)
$ git checkout -- test.txt
参考
Git教程:https://www.liaoxuefeng.com/w...