版本库即须要交由Git进行版本控制的目录,其下全部文件的修改、删除,Git都能跟踪还原。java
说明:初始化后,当前目录下会多出来一个名为.git的隐藏目录,这个目录是Git用来跟踪管理版本库的,咱们切勿修改。git
前面说了,GIT会在初始化为仓库的目录下建立一个.git的隐藏目录,它是GIT的版本库。GIT的版本库里存放了不少东西,其中最重要的就是称之为stage或index的暂存区,另外一个是GIT为咱们建立的第一个分支master,以及指向master的一个指针head。工具
暂存区怎么理解呢?比如咱们去超时买菜,不可能每拿一个菜就去柜台结帐,咱们须要一个菜篮子,把须要的菜都先暂时保存起来,等到要走的时候最后拿去付钱,暂存区就至关于菜篮子,是Git用来保存一些临时文件的地方。学习
全部的版本控制系统,只能跟踪文本文件的改动,好比TXT文件、网页文件、程序代码等,GIT能够告诉你每次的改动,好比某行增长了一个内容。二进制文件的没法追踪具体的修改细节的,只能知道发生了修改操做。spa
编写一个Java类,输出Hello World版本控制
编译Test.java,并将Test.java,Test.class添加到版本库中。指针
说明:code
git add:告诉Git,把文件添加到暂存区。 blog
git commit -m "提交说明":告诉Git,把暂存区的全部内容提交到当前分支。it
我将Test.java文件中的输出改成Hello World!Good Night!让咱们看一下Git是否记录了咱们的操做!
很神奇,Git记录了被修改的文件,咱们也能够查看具体修改的内容
这步操做和第二步同样,此处不在赘述。
咱们能够用git log命令来打印输出咱们的提交记录。
固然,为了更加清晰直观的分析提交记录,咱们能够借助其余可视化工具,如GitHub的客户端,能够清晰的显示出每一次的提交的修改内容。
如今我发现,修改后的Test.java有一些问题,想要找回修改前的那一版,咱们可使用git reset命令。
首先,Git必须知道当前版本是哪一个版本,在Git中,用HEAD
表示当前版本,也就是最新的提交50267...
(注意个人提交ID和你的确定不同),上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,固然往上100个版本写100个^
比较容易数不过来,因此写成HEAD~100
。
从新查看Test.java文件,发现咱们的原先内容回来了。固然咱们也能够指定ID来到达某一个版本。
有时候,咱们有一些误操做,可是咱们又忘记了咱们作过的错,咱们就可使用git reflog命令来查看咱们敲过的命令