(插一句,Git是目前世界上最先进的分布式版本控制系统(没有之一)。)
创建版本库(本地仓库)
进入一个要将其变成本地仓库的文件夹,右键git-bash在命令行中输入:
$ git init
瞬间Git就把仓库建好了,可以发现当前目录下多了一个.git
的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
(如果你没有看到.git
目录,那是因为这个目录默认是隐藏的,用ls -ah
命令就可以看见)
将文件提交到仓库
在提交该文件之前,一定要把该文件放到Git仓库下,然后:
第一步,将文件添加到仓库:
$ git add 文件
第二步,将文件提交到仓库:
$ git commit -m"注释"
查看仓库当前的状态
$ git status
如果想查看具体修改了什么内容,如下:
$ git diff 文件
版本回退
在实际工作中,一个文件可能会被修改提交commit好几次,而你又记不清每次改了啥,就要翻历史记录:
$ git log
git log 命令显示从最近到最远的提交日志(会显示你每次提交的注释,版本号,用户,时间)
如果嫌眼花缭乱,加上--pretty=oneline参数
$ git log --pretty=oneline
其中一大串十六进制数字是commit id(版本号),是一个SHA1计算出来的一个非常大的数字。
要回退到哪一个版本,就要知道该版本号,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写HEAD~100。
回退用该命令:
$ git reset --hard HEAD^
如果回退到上一个版本又想回到最新版本,只要上面的命令行窗口还没关掉,就可以根据commit id回到未来的某个版本:
$ git reset --hard 1094a
版本号没必要写全,前几位够辨别就行了。
现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?
$ git reflog
就可以看到命令历史,以便回到未来的哪个版本。
撤销修改
在准备提交前,你想撤销修改,如下:
$ git checkout --文件
把该文件在工作区的修改全部撤销,这里有两种情况:
一种是文件自修改以后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态。
一种是文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次 git commit 或 git add 的状态。
当文件已经 add 到暂存区了,还没有提交:
$ git reset HEAD 文件
git reset 命令既可以回退版本,也可以把暂存区的修改回退到工作区。(HEAD表示最新的 commit 版本)
删除修改
在一个文件提交了以后,一般情况下,你通常直接在工作区中把没用的文件删了,或者直接用 rm 命令删了:
$ rm 文件
这时,工作区和版本库就不一致了, git status会告诉你哪些文件被删除了。
现在要么确实要从版本库中删除该文件,那就用命令 git rm 删除掉,并且 git commit,这样该文件就从版本库中消失了。
要么你删错了,因为版本库中还有,所以如下:
$ git checkout --文件
git checkout 其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。