Git是什么
Git是目前世界上最先进的分布式版本控制系统。
工作原理 / 流程:
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
SVN与Git的区别
1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
初始化版本库
-
通过命令 git init 把这个目录变成git可以管理的仓库。
文件的创建、提交、修改
-
使用命令 git add test.txt添加到暂存区里面去。
-
用命令 git commit告诉Git,把文件提交到仓库。
-
通过命令git status来查看是否还有文件未提交。
-
继续来改下test.txt内容,继续使用git status来查看下结果。
上面的命令告诉我们 test.txt文件已被修改,但是修改未被提交。
-
查看test.txt文件到底改了什么内容 ,使用git diff test.txt
上面的命令告诉我们 test.txt文件的修改是从1111 修改为了1111 2222
-
知道了test.txt文件的具体修改后,我们可以选择的提交到仓库。
提交修改和提交文件是一样的2步(第一步是git add 第二步是:git commit)
版本回退
-
继续对test.txt文件进行修改并提交,修改为333333
-
到目前为止已经对test.txt文件做了三次修改了,查看历史记录可以使用git log。
-
版本回退操作,要使用什么命令呢?
第一种是:git reset --hard HEAD^
可以看到文件已经由版本3的“333333”变回了“1111 2222”版本2的状态
-
继续使用git log 来查看下历史记录信息
可以看到最后一次提交的版本3的记录没有了
-
想回退到最新的版本,“333333“的内容要如何恢复呢?我们可以通过版本号回退。
先通过git reflog 命令,获取到版本号。
可以看到版本3的版本号是f608216(看到我这个commit 典型的脑残案例昂,每次都是一样的commit然后就分不出版本了,喵唔唔...)
然后使用git reset --hard f608216来恢复。
使用 cat test.txt 惊喜的发现版本3 回来了hhhhh
内容参考