Git教程
Git标签管理
Git分支
Git操作
Git应用
GitHub应用
IDEA对于Git&GitHub的支持
Git与GitHub使用注意事项

Git版本管理

文件版本控制方式

将工作目录的代码先提交到暂存区,然后再由暂存区提交到本地仓库。

文件版本基础管理

git status:查看工作区、暂存区状态

测试:

⒈在一个已经初始化的目录下(例如test目录下)创建文件test01.txt

⒉在里面写点初始内容

例如:

⒊通过Git Bash Here打开Git的命令行工具

执行命令git status,查看效果

文件标识红色表示文件还没有被添加到Git中进行管理

接下来将文件添加到暂存区

git add [file name]:将工作区的信息(变化)添加到暂存区

再次观察效果,文件变成绿色表示

git commit -m "msg" [file name]:将暂存区的内容提交到本地库

将文件提交到本地库之后,查看状态,没有任何文件展现,说明工作区,暂存区,本地库中的文件信息处于同步(相同)状态。

将本地库中的文件进行修改,添加bbb

查看状态,文件又变红了,说明工作区有新内容,待添加到暂存区

重复首次操作,继续add,然后继续commit

最后查看状态,确保工作区,暂存区,本地库再次同步。

git log:查看本地库更新历史记录

观察到我们一共为本地库,有提交过两次记录的记载

我们可以观察到两次提交,分别对应两个40位的哈希值,这就是我们提交后记录的版本号

这种形式查看历史日志是最原始的查看方式

接下来我们也可以通过其他两种方式来查看历史

git log --oneline:查看本地库更新历史记录(简化版)

这样做可以很简单的展现历史信息

这种形式展现的哈希值为简化形式,通过也简化了提交的日期时间以及作者。

git reflog:查看本地库更新历史记录(展现HEAD指针)

这种形式可以展现HEAD指针编号位置,我们以后可以通过该位置定位到我们想要的版本历史。

版本前进后退管理

准备工作,在原有aaa和bbb的基础上

新增历史记录ccc、ddd、eee、fff、ggg

可以使用git commit -am"msg"进行添加和提交一次性操作

准备工作后,开始前进和后退的操作

git reset --hard [局部索引值]:基于索引值的操作

通过以上操作,先以观察哈希值的方式查看历史

通过git reset --hard eee的哈希 回到历史

最后观察vi test01.text 文件是回到了eee的历史版本

同时可以通过以上的方式,回到最新历史版本ggg

观察又回到了ggg的版本

在次观察历史

观察到前进和回退的操作也会被忠实的记录下来

git reset --hard HEAD^ :表示后退操作

一个^表示后退一步,N个^表示后退N步

观察以上操作,我们通过后退的方式,后退到了fff

在进行以下操作前,可以先回到最新版本ggg

删除文件并找回的方式

前提:删除前,文件存在时的状态提交到了本地库

通过以上方式查看状态,表示工作区、暂存区和本地库处于同步状态。

接下来,将test01.txt文件删除

查看test文件夹状态

通过以上观察,表示工作区中少了文件,和本地库不同步了,此时根据提示,我们可以将这次的删除操作添加到暂存区,并提交的本地库。

注意:删除文件后的git操作,和添加文件后的git操作方式是一致的,也是先add,再commit

我们现在相当于彻底将这个文件删除了,最新提交到本地库的历史也是处于将这个文件删除的状态了。

现在我们要将该文件找回!

由于我们以前提交过的每一个历史版本都被忠实的记录下来的,所以我们现在回到历史就可以将文件找回了。(文件是被删除了,但是历史永远不会被删除)

查看历史版本

通过以上历史版本我们观察到,最后一个版本af1eb78是删除了文件,但是我们可以看到最新的加入ggg的版本为c8f70b0,此时还是有test01.txt这个文件的,我们可以回到c8f70b0这个版本。

通过我们以上学习过的 git reset --hard [版本号] 就可以实现了

通过以上操作,观察test文件夹中又有test01.txt这个文件了

以上的操作是删除文件后,已经将删除状态提交到本地库了。

如果文件删除后,删除文件状态只是在工作区,或者刚刚到暂存区,还没有提交到本地库,如何恢复文件呢?

使用 git reset --hard HEAD来进行恢复

比较文件的方式

git diff 文件名 : 将工作区中的文件和暂存区进行比较

测试前,首先确保工作区,暂存区,本地库处于同步状态

观察当前最新版本(例如以下最新版本为ggg)

工作区新增hhh

接下来比较工作区中的该文件和暂存区的差别

通过观察,看出工作区比暂存区多了hhh

还可以与本地库的历史版本进行比较

git diff 本地库中历史版本 文件名