一、提交版本库
1、向readme.txt文件中新增加一些内容,然后使用git status查看当前仓库的状态。
新增内容:git is a distributed version control system.
git is free software.
该结果显示修改的文件还没有提交。
2、如果想要知道修改了哪些内容,可以使用git diff查看
从上面的信息可以看出"---"那行为修改前的内容,"+++"那行为修改后的内容,这样可以很清楚的知道修改的内容。
3、将修改后的文件添加到版本库,然后查看状态
提示可以提交修改的内容到版本库。
4、提交修改的文件到版本库,然后查看状态。
从输出信息可以看出目前没有要提交的内容,工作区是干净的。
二、版本回退
有时我们对文件进行多次修改提交到版本库后,如果想要查看以前的版本文件,可以使用git reset 命令回退到以前的版本。
1、使用git log命令查看历史版本信息
其中长串的字符数字是版本号,HEAD是当前版本,master是主分支。
2、使用git reset --hard命令回退到之前的版本,上一个版本是HEAD^,上上一个是HEAD^^,如果版本太多可以用数字表示,如要回退到上10个版本可以使用HEAD~10表示。
从输出信息可以看出已经回退到上一个版本了。
3、从老版本回退到新版本,可以通过版本的id号进行还原,git relog会记录使用过的命令,通过该命令可以找到版本对应的id号,然后使用git reset --hard 进回退。
git 的版本回退速度很快,因为Git内部有一个HEAD指针,指向当前版本,当回退版本的时候,Git只是把HEAD从指向"append GPL"改为指向"add distributed", 如下图所示。
执行git reset --heard HEAD^命令之后:
工作区和暂存区
工作区:当前能看到的目录,如git_learn。
版本库:工作区中有一个隐藏的目录.git。
git版本库里存了很多东西,其中最为重要的是称为stage的暂存区,还有git创建的第一个master分支,以及指向master的HEAD指针。
三、管理修改
当我们修改工作区的文件后,必须先用git add命令将其保存到暂存区,才能使用git commit命令将其提交到版本库,如果直接提交到版本库,则不会通过。可以使用git diff HEAD 命令查看工作区和版本库中最新版本的区别。
撤销修改
1、当我们在对工作区中的内容进行修改后,可以使用git checkout --文件 命令丢弃工作区中修改的内容,
a) 如果文件修改后没有用add命令添加到暂存区,那么撤销修改后将回到和版本库一样的状态。
b) 如果文件修改后添加到了暂存区后又做了修改,那么撤销修改后将回退到添加到暂存区后的状态。
2、可以使用git reset HEAD readme.txt命令将暂存区中的修改撤销掉,重新放回工作区。git reset命令既可以回退版本,也可以把暂存区中的修改退回工作区,当使用参数HEAD时表示最新的版本。
删除文件
在Git中,删除也是一种修改,我们可以直接在工作区中用rm命令删除文件。当你删除文件后,工作区和版本库就不一样了,git status可以显示哪些文件被删除了。
现在有两个选择,一种是确实要从版本库中删除该文件,可以直接使用git rm删除,并且使用git commit进行提交
另一种情况是误删了文件,需要从版本库中拷贝一份,可以使用git checkout --test.txt。
git rm命令用于删除一个文件,如果文件已经提交到版本库了,那不用担心误删,但是恢复文件只能恢复到最近一次提交后的内容。