创建版本库
1.初始化一个Git仓库,cd 到该目录下使用git init
命令。
2.添加文件到Git仓库,分两步:
- 使用命令
git add <file>
,注意,可反复多次使用,添加多个文件,添加全部修改的文件使用git add .
; - 使用命令
git commit -m <message>
,完成。
管理版本库
1.使用git status
来掌握仓库的状态。
2.使用git diff
来查看具体修改内容。
版本回退
1.使用git log
查看历史记录,记下你要回退
的版本号。
可以使用git log --pretty oneline
简化输出。
$ git log --pretty=oneline
1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append GPL
e475afc93c209a690c39c13a46716e8fa000c366 add distributed
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file
注意输出的一大串类似 1094abd… 是版本号即commit id
,它是用SHA1计算出来的16进制数字。
2.版本回退
在Git中我们使用HEAD
表示当前版本也就是 1094adb…
那么上一个版本就是HEAD^
,上上一个就是HEAD^^
,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
。
我们使用git reset --hard <commit id>
来回退版本。
使用如下指令回到上一个版本。
git reset --hard HEAD^
如果我们想去到未来
但不知道版本号,我们可以使用git reflog
来查看提交的历史记录。
工作区和暂存区
- 工作区(Working Directory)
就是你在电脑里能看到的目录,比如我的learngit
文件夹就是一个工作区。 - 版本库(Repository)
工作区有一个隐藏目录.git
,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage
(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向分支master
的一个指针叫HEAD
。
文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add
把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。
你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
Git跟踪并管理的是修改
,而非文件。
你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。
Git是如何跟踪修改的,每次修改,如果不用git add到暂存区,那就不会加入到commit中。
撤销修改
- 舍弃已
git add
到暂存区但还未git commit
的修改,但是该文件在工作区仍然是修改的状态。
git restore --staged <file>
#或者下面这条指令,HEAD表示最新的版本
git reset HEAD <file>
- 舍弃工作区的修改,让这个文件回到最近一次
git commit
或git add
时的状态。
git restore <file>
#下面这条指令是一样的意思,一定要加-- ,不然该指令为切换分支的意思
git checkout -- <file>
参考:廖雪峰的教程