git init
执行git init语句,会在当前目录下创建一个.git文件夹,将当前目录下所有的文件快照储存在.git文件夹中,这个.git文件夹此时就作为本地仓库。
为了方便观察命令是否成功,我先使用了cd语句进入了桌面。使用mkdir语句创建了Test文件夹作为演示,进入Test文件夹touch新建一个index.html文件,成功以后使用git init语句创建一个本地库存储Test文件夹内所有文件快照,这时候,我们就可以看到Test文件夹内生成了一个.git文件夹。
当然我们也可以使用Cmder来查看文件,因为.git文件夹属于隐藏文件,所以ls无法查看到该文件,使用ls -a命令查看当前目录下所有文件,包含隐藏问价,这里的-a就是all的意思。我们可以看见除了index.html还多了一个.git文件夹。
git add
git add 的作用就是将当前更改完成的文件进行一个预保留,就像是开车等红灯时会有一个等候区,只要绿灯一亮我就可以出发了。
首先我们打开html文件,使用!+Table键快速将文件补充完整,并添加想增加的内容,此时左边文件后我们可以看见有个U形状的图标,表示没有上传。我们也可以再多创建一个css文件用于观察。
style.css的内容:
我们使用git add 语句上传index.html和style.css这两个文件,此时文件后面的U形图标变成了A形图标,表示已经加载成功。
.gitignore
如果我们有些文件不想上传到本地仓库.git文件夹里面怎么办,我们有两种办法,第一种不git add这个文件就好了,但是这个方法有个弊端,当你后面文件越来越多的时候,一个一个add会特别繁琐,我们可以使用 git add . (特别要注意后面有个.)表示将当前目录下的所有文件都进行添加。我们创建一个.gitignore文件,将不想上传的文件添加进去就好了,系统就会默认不上传该文件内所添加的文件名称的内容。
我创建了一个秘密文件,这里面有我的秘密,我谁都不想告诉,更不想上传,我又想直接用git add .命令,于是我在.gitignore文件中要添加秘密文件的名称,告诉电脑,这里面的东西不许上传。
然后我用Cmder输入git status语句查看当前状况,系统告诉我index.html与style.css文件已经完成了添加,但是我的.gitignore文件还没有添加。
于是我添加.gitignore文件,此时再用git status语句查看当前状况,发现三个文件都已经准备就绪,等待上传到本地仓库了,此时我们会发现VSCode中,秘密文件的文件名称变成了灰色,表示不会将文件上传至本地仓库。
常见不用提交的文件有node_modules .DS_Store .idea .vscode。
git commmit
git commit -m
当我们把需要上传的文件都准备好时,我们就可以使用git commit -m语句进行上传到我们的本地仓库了,在m的后面输入你想输入的字符串,我这里创建的就叫初代目,这里返回的信息告诉我们改变了22条信息。创建了index.html style.css .gitignore三个文件到.git文件。git add就好比红绿灯的黄灯,处在准备等候的一个阶段,而git commit就好像是绿灯,可以出发了。
git commit -v
上面我们用的git commit -m进行上传,这次我们使用git commit -v进行上传。首先我们给index,html进行一个更改,新增了一句 豆腐脑是吃咸的还是甜的?,然后使用git add与git commmit,但这次我们使用的是 -v,我们来看一下效果。
对index文件进行更改之后,我们使用git status(查看当前状态),电脑告诉我们index.html没有完成上传,于是我们使用git add与git commit将更改过的文件上传到本地仓库。
当我们使用完git commit -v语句之后,VSCode会打开COMMIT_EDITMSG文件,我们在首行写入我们需要的字符串,然后我们保存退出,此时电脑会收到我们输入的内容,此时我们更改后的文件也上传到.git文件了。在打开的COMMIT_EDITMSG文件中,新增的内容前会有一个 + 用来表示这是我们新增的内容,删除的内容则为 - 。
git log
我们可以通过git log语句来查看我刚上传到.git文件中的记录,以及每次git commit后的注释。
git reset --hard XXXXXX(提交号前六位)
做本地仓库的最终目的是为了版本控制,更方便的存取想要的文件,当我们把文件上传到.git文件夹后,如果我们想对于某个版本进行提取,就需要使用git reset --hard语句进行提取。切记:如果要使用git reset hard语句,一定要git commit成功之后在使用,否咋他会把git add 的文件删除。
首先我们对index.html进行几次的改动,然后git add和git commit上传至本地仓库,增加宋祖儿,希望破灭两个新版本。
现在我们一共有初代目,豆腐脑引战,宋祖儿,希望破灭四个版本,我如果想要回到豆腐脑引战版本,则需要输入git reset --hard 版本号。
此时我们回到VSCode会发现我爱宋祖儿和但是宋祖儿不爱我两个标题消失了,index.html的内容也和豆腐脑引战版本的内容一致,则VSCode完成了一次回滚。此时我们使用git log去查看,当前只有初代目和豆腐脑引战两个版本了。
git reflog
当我们回到了豆腐脑引战版本之后,git log去查看版本时,发现宋祖儿和希望破灭版本不见了,如果想找到这两个版本的版本号以及对.git的操作过程,就可以使用git reflog,git reflog就相当于历史记录,当然,我们也可以利用git reset --hard 语句在版本之间进行跳转。
git branch / git checkout /git merge
分支,即创建一个平行的线路,就可以完成两条线路同时开发。主线叫master,分支的线通过git branch 定义名称。一般两条线之间通过git checkout 线路的名称 来回切换。可以通过git merge语句合并两个分支,合并完成之后使用git branch -d 名称 删除不用的分支。