学习git的第一步
Git是世界上最先进的分布式控制系统,通俗的来说就可以利用Git来控制github库和利用hexo挂载在github上的博客文章等内容
版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
1 | $ mkdir learngit |
pwd
命令用于显示当前的目录
git init
命令把这个目录变成Git可以管理的仓库:1 | $ git init |
多出来的.git
是git来追踪管理版本库的,不能手动修改这个目录的文件,容易把Git仓库破坏
如果没有看到.git
目录,那是因为这个目录默认是隐藏的,用ls -ah
命令就可以看见。
编写一个readme.txt
文件放到learngit
目录下,注意只有在这个目录下git才能找到
添加文件到Git仓库,分两步:
使用命令git add <file>
,注意,可反复多次使用,添加多个文件;
使用命令git commit -m <message>
,完成。
git commit
命令,-m
后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
要随时掌握工作区的状态,使用git status
命令。
如果git status
告诉你有文件被修改过,用git diff
可以查看修改内容。
git diff
顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到
如果有文件已经被修改需要提交,就使用上面的步骤
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。
HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
commit_id
指代的是版本号,确定要返回的版本,可以只写前几位穿梭前,用git log
可以查看提交历史,以便确定要回退到哪个版本。
如果嫌输出信息太多,看得眼花缭乱,可以试试加上--pretty=oneline
参数:
1 | $ git log --pretty=oneline |
要重返未来,用git reflog
查看命令历史,以便确定要回到未来的哪个版本。
参考廖雪峰老师的git教程
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013745374151782eb658c5a5ca454eaa451661275886c6000
git是跟踪并管理修改的,如果你对文件做了第一次修改,并git add
在做第二次修改,在进行git commit
会出现第二次修改没有被提交的情况,因为当你用git add
命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit
只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。
正确的顺序应该为:
第一次修改 -> git add
-> 第二次修改 -> git add
-> git commit
用git diff HEAD -- readme.txt
命令可以查看工作区和版本库里面最新版本的区别
git checkout -- file
。git reset HEAD <file>
,就回到了场景1,第二步按上面的步骤操作。当想要删除一个文件时,使用rm
命令删除以后
此时工作区和版本库不一致,git status
命令会告诉你那些文件被删除了:
确实要从版本库中删除该文件,那就用命令git rm
删掉,并且git commit
删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
1 | $ git checkout -- test.txt |
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
以上参考廖雪峰老师的Git教程,感谢廖老师