在上一家公司的时候都是使用git在命令行下直接进行操作,换了工作后就一直使用SourceTree进行代码提交。虽然可视化工具操作起来很方便,但是git的一些命令也不能忘,所以预计通过几篇文章将自己的学习(复习)过程记录下来,便于以后的查看。学习的途径主要为廖雪峰老师的git教程,更为详细的教程可点击进行查看。
以下操作均在windows环境下进行操作。
一、创建版本库
在任意新建文件夹(如:在桌面创建名为GitTest的文件夹),打开新建的文件夹,在文件夹空白处右击,选择Git Bash Here。在弹出的Bash窗口中输入命令git init来初始化git仓库:
$ git init
命令执行完后,文件夹中会多出一个.git文件夹。该文件夹默认是隐藏的,在windows下可以更改文件夹属性来查看。或者在bash窗口中使用ls -al命令查看。.git文件夹中文件用于管理控制仓库,在不清楚的情况下,不能轻易修改。
新建test.txt,打开并随意输入一行文字,保存后退出。
使用命令git add test.txt,将文件添加到仓库,然后使用命令git commit -m “add test.txt”命令将文件提交到仓库。如果有多个文件可以多次执行git add 命令将这些文件加入到仓库,也可以执行git add .将所有文件加入到仓库。-m参数后写的是本次提交的说明。
$ git add test.txt
$ git commit -m 'add test.txt'
二、版本回退
- 查看仓库当前状态
使用命令git status查看当前仓库状态,如新添加了一个空的text1.txt文件后,使用命令,
$ git status
结果显示如下:
可以看到git提示Untracked files,因为test1.txt为新增的文件。
将新增的文件加入仓库,然后再次使用git status查看仓库状态,
$ git add test1.txt
$ git status
这时git提示我们存在可以提交的内容。
将新增的文件提交到到版本库:
$ git commit -m 'add new file named test1.txt'
- 查看文件具体变化内容
在新增的test1.txt文件中新增一行文字,使用git status显示test1.txt文件发生了修改,但是没用提示修改了什么内容,这时就可以通过命令git diff查看具体修改的内容:
$ git diff test1.txt
可以看到提示增加了一行文字。
- 版本回退
在版本回退前,可以使用git log查看最近的提交记录,如果提交记录太多,可以使用git log –pretty =oneline(注意:pretty前为两个“-”)将显示简化:
$ git log
可以看到有四次提交,最近两次分别为“edit file test1.txt”(在文件中添加了一行文字),“add new file named test1.txt”(新增了一个文件test1.txt)。commit后面一长串为这次提交的commit id,git 会为每次提交自动生成一个commit id。
在git中,HEAD表示当前版本,此时的版本为cmmmit id为d82683aa……25580bf2的这个版本。上个版本表示为HEAD^,上上个版本为HEAD^^,前第100个版本可以用HEAD~100表示。所以这时我们想退回到上个版本,“add new file new named test1.txt”这个版本,可以使用命令:
$ git reset --hard HEAD^
再次查看提交记录,发现还是三条提交记录,版本回到了“add new file named test1.txt ”这个版本。查看文件发现新加的一行文字也消失了。如果想接着回退可以再次使用上面的命令。
如果这时发现回退错了版本,我们想获得增加了一行文字的那个版本,可以使用下面的命令:
$ git reflog
git reflog命令可以显示命令记录,可以看到编辑test1.txt文件的那个版本号为d82683a,这时使用命令回到该版本:
$ git reset --hard d82683a
这时版本又回到了test1.txt被修改过后的状态,查看test1.txt发现添加的一行文字又回来了。
未完待续……