这个文章用来记录学习如何使用Git
git就像游戏的存档点,你手动存档,手动读档
设置名称和邮箱--global
代表本机所有git项目都会使用相同的设置, --list
查看所有git相关设置
git config --global user.name "myname"
git config --global user.email "my@email.com"
git config --list
创建一个Cats
文件夹并且初始化git
mkdir Cats
cd Cats
git init
新建一个文件index.html
通过git status
查看状态,
touch index.html
git status
目前属于untracked(未追踪)
,也就是说不关心这个文件的变化
git add .
添加当前目录所有文件,可以在new file里面看到已经追踪
现在完成了文件的追踪,通过git commit
提交一次吧 -m
后面代表注释的内容方便大家查看
当我对文件进行了修改并且保存后,再次查看文件状态git status
,此时属于modiried
已修改但是未提交,一般成为 暂存
通过git commit -a -m "注释"
提交所有更改
git log --oneline
能够查看我们进行过提交的所有修改,--oneline
显示简略信息,左侧的字符串是哈希值的缩写,可以认为是唯一标识符
我们再次对文件进行修改然后保存. 通过git diff
查看当前状态和上次提交的差别
可以看到记录了 第一行被删除了(红色), 添加了11行(绿色)
再次通过git commit -a -m "注释"
提交所有更改
如果有不想追踪的文件类型怎么办,通过.gitignore
文件过滤他们
然后再次对index.html文件进行修改后查看状态git status
index.html
显示为已修改
,.gitignore
文件显示为未追踪
,通过git add -A
把所有当前未追踪的文件追踪
通过git commit -am "注释信息"
保存. -am
是-a -m
的缩写
如果想要追踪空的文件夹,可以在里面新建一个.git-keep
的文件(也可以是.keep
之类的).不需要任何后缀,也不需要任何内容,日后有内容以后就可以删除掉这个占位的文件了.
此时可以看到我现在先创建了占位文件,然后创建了style.css
样式表,加入git追踪,再删除了占位文件,还修改了html
文件
如果不小心写错了一个字母,当我给他修改以后,我又要提交,这次提交和上次的注释甚至都一样.如果每次这样都进行一个提交虽然很好,但是日后当你看着上百个提交记录很可能会崩溃.所以我们引入一个新的指令,效果就是 替代上一次的提交,注释都不用修改git commit --amend --no-edit
结果就是我修复了这个小错误但是没有多余的提交,最新的提交已经包含了这个修复小错误
如果我不小心删除了某个文件怎么办, 比如我不小心删除了index.html
可以简单的通过git checkout -- 文件名
进行恢复
如果使用了git rm
指令把文件从git追踪踢出去了怎么办(这会同时从git和磁盘中删除文件)
我们需要先把文件从当前的commit
里面添加回git
,然后再执行上面的checkout
就好
git reset HEAD index.html
如果捅娄子了怎么办,提交了一个错误的commit
只能用git reset --hard HEAD^
硬重置到 HEAD的前一次提交,也就是这次错误提交的前一次提交
然后再用git checkout -- CSS/style.css
进行恢复
可以看到git进行了时光回溯,把当前分支从a17e424回到了8550041 然后通过checkout找回当前commit时候的文件状态
不过这样感觉风险太大了.万一我又反悔了怎么办,此时分支a17e424已经没有了
这次我想恢复到8550041分支,但是现在最新的分支也有用,该怎么办?
可以采用git revert --no-edit HEAD
可以看到我们同样也回溯到了上一个分支,不过这次进行了一个新的提交5dcef89 他和8550041的内容完全一样,不过算成了两个分支,这样方便观察.慎用git reset
指令
如果我想回到42f75ef怎么办.只需要简单的
git checkout 对应分支的哈希值
比如git checkout 42f75ef
确认这个分支没问题以后记得git commit -m
“注释内容” 进行提交.
如果在这个分支上还有新的改动.记得加上-a