Git&GitHb学习记录
源自:廖雪峰Git教程:https://www.liaoxuefeng.com/wiki/896043488029600
Git和GitHub是什么?
Git是版本控制工具,GitHub是储存代码的网站
Git官方文档:https://git-scm.com/
- 创建版本库/仓库,repository
可简单理解为一个目录,这个目录里所有文件都可本Git管理起来,Git能追踪每个文件的修改和删除
第一步,创建一个版本库,就是创建一个空文件夹
$ mkdir learngit $ cd learngit
第二步,通过git init命令,把这个仓库变成Git可管理的仓库
$ git init
此时当前目录下会出现 .git的新目录,这个目录是Git跟踪管理版本库的,不能随便修改。用 ls -ah 可以显示默认隐藏目录 .git
2.把文件添加到版本库中
创建readme.txt文件,并把它放入learngit文件夹下,learngit是一个Git仓库,放在其他地方Git找不到
Git is a version control system. Git is a free software.
类比大象放冰箱,把一个文件放入Git仓库只需要两步。
第一步,用命令git add告诉Git,把文件添加到仓库。
git add readme.txt
第二步,用命令 git commit 告诉Git,把文件提交到仓库:
$ git commit -m "wrote a readme file" [master (root-commit) eaadf4e] wrote a readme file //git commit命令执行成功后 1 file changed, 2 insertions(+) create mode 100644 readme.txt
-m 后面输入的是本次提交的说明(提交说明最好是有意义的,方便从历史记录里方便地改动记录)
1 file changed, //一个文件被改动(即新添加的文件)
2 insertions(+) //插入两行内容(readme.txt)有两行内容
修改readme.txt文件的内容,用git status命令可时刻查看仓库文件的内容
readme.txt已经被修改了
Changes not staged for commit:改变尚未提交
要想看看readme.txt具体修改了什么内容,需要用git diff命令
知道readme.txt坐了什么修改之后,在把他提交到仓库,提交修改和提交新文件是一样的两步
- 随时掌握工作区状态,使用 git status 命令
- 如果git status 告诉你有文件被修改过,用git diff 可以查看修改的内容
查看修改的历史记录,有哪些版本,用git log命令查看
3.Git版本回退
把readme.txt回退到上一个版本。Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本是HEAD^^,往上100个版本写100个^比较容易写不过来,所以要写成HEAD~100
例,把append GPL回退到上一个版本 add distributed,可使用git reset命令
git reset --hard HEAD^
结果:
HEAD is now at 7c1acd8 add distributed
此时,打开readme.txt文件,里面的内容也被还原了
想恢复到最新版本,找不到新版本的commit id怎么办?
Git提供了一个命令 git reflog用来记录你的每一次命令
可看出 append GPL的提交id 是7a6c7cf(简写,其实提交id还很长)
回到append GPL版本
git reset --hard 7a6c7cf
结果:
HEAD is now at 7a6c7cf append GPL
小结:
- HEAD指向的版本就是当前版本。Git允许我们在版本的历史之间穿梭,使用命令 git reset --hard commit_id
- 穿梭前,用git log 可以查看提交历史,以便确定回到哪个版本
- 要重返未来,用git reglog查看命令示例,以便确定要回到未来的哪个版本。