Git是目前世界上最先进的分布式版本控制系统,以其方便的版本控制、允许个人电脑操作的优势、以及强大的分支管理而备受关注。
安装:
在linux上直接执行:
sudo apt-get install git
在windows上:从https://git-for-windows.github.io下载,然后默认安装。
创建版本库:
注:在进行任何Git操作之前,都要切换到Git仓库目录
打开Git Bash,在合适的目录下创建一个文件夹:
$ mkdir learngit
$ cd learngit
用 git init
命令把这个目录变成Git可以管理的仓库。
一些基本的命令:
再创建好文件后,
先用命令git add <file>
告诉Git,把文件添加到仓库,
再用命令git commit
告诉Git,把文件提交到仓库
$ git commit -m "描述文件的说明"
在成功添加并提交文件后,可运行git status
命令看看结果:而git diff <file>
可以查看具体修改了那些内容,然后就可以放心提交了。不过这两个命令要在git commit
之前,因为git diff
只能比较提交之前的文件。
说明:在git的版本库中(文件中的.git文件),包括暂存区(stage)和当前工作的分支(master)等。第一步是用git add
把文件添加进去,实际上就是把文件修改添加到暂存区;第二步是用git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。而git status
就是查看暂存区的状态,当我们git commit
之后,再git status
就没有内容了。
版本回退:
用git log
命令可查看历史记录,其中的commit为版本号,每当提交一次代码后,git就会给这个版本生成一个commit。
git log --pretty=oneline
加这个参数来查看简略的历史记录,包括commit id(版本号)和提交的说明。
在git中用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,第前100个版本可以写为HEAD~100。
可以用git reset
退回指定版本:
$ git reset --hard HEAD^
当我们退回几个版本后,也可以用同样的命令回到已经退过的版本(此时的未来版本),不过这时就需要commit id(版本号)了,当然commit id也不用写全,有前几位就好了。
$ git reset --hard 版本号
如果已经关闭了命令窗口,还可以用git reflog
来查看已经执行的命令来寻找版本号。
只要没有删除版本就可以这样操作,因为当前HEAD只是指向这些版本的指针。
撤销修改:
当我们修改了文件,或者在git add
之后修改了文件(git mommit
之后就只能退回版本了),可以通过命令来撤销操作。这里有两种情况:
第一种:修改后还没有被放到暂存区,也就是还没有git add
,现在,撤销修改就回到和版本库一模一样的状态,执行命令:git checkout -- file
。
第二种:已经添加到暂存区后,又作了修改,这时先用命令git reset HEAD
file可以把暂存区的修改撤销掉,再执行git checkout -- file
删除及撤回
当rm文件之后,版本库里的文件还存在,可以用命令git rm
删掉,并且git commit
删除版本库的文件:
$ git rm test.txt
$ git commit -m "remove test.txt"
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
$ git checkout -- file
也就是说git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
下一次将介绍GitHub、Git的远程操作及分支管理。