这是一个新建的Angualr专案,完全没有任何异动。
初始的git状态
输入git status
看看git status所显示的讯息是什么。
on branch master
表示目前所在的分支(master分支),预设分支。
nothing to commit, working tree clean
表示目前没有任何异动需要commit,这边的commit是指每次异动的版本,或称作节点。
working tree clean表示目前正在工作的资料夹非常乾净,因为完全没有任何增删修。
删除档案
删除3个档案
透过git status,看看讯息有何变化。
Changes not staged for commit:
表示,这次所变更的资料(红字),还无法加入到这次的commit之中。
档名前面的deleted,表示这次的变更是删除档案。
如果执行commit的话,会失败,并收到错误讯息。
讯息会再次警告,这次的改变并没有加入commit之中(no changes added to commit),从log可以看出,确实没有commit。
回到刚刚git status那张图,git已经有给提示:
(use "git add/rm <file>..." to update what will be committed)
表示可以透过add(新增)/rm(移除)档案,将这次的异动update至commit中。
使用add指令只将README.md加入commit之中。
add完之后,再次输入git status,发现讯息有所改变:
Changes to be committed:
表示删除README.md的操作(绿色),準备加入commit之中。
但下面的2个档案操作(红色),依旧是同样的警告。
再次执行commit。
确实建立一个只包含这次删除README.md的commit。
执行git status。
只剩下未加入commit的资料删除操作。
至于删除README.md的操作已加入commit之中,所以这次就不会再显示了。
接下来,把剩下的操作都加入commit,这次在add之后空一格再加点(.),表示将所有的异动操作都加入。
OK!已成功加入。
但,如果想回复这次的操作呢?
取消已被add的档案
git有给提示:(use "git reset HEAD <file>..." to unstage)
将所有的异动,回复到unstage状态。
<file>,档名是选择性输入。
HEAD表示指向目前工作目录的最新版本,最近一次的commit。
此时,又回复到刚刚的状态。
该指令,只是回复异动状态,无法改变资料夹的档案结构,删除的档案不会回复。
救回误删的档案
如果,真的手残,把档案误删,git也有办法将档案救回来。
(use "git checkout -- <file>..." to discard changes in working directory)
表示我们可以取消这次的变更(discard changes),在工作目录中(working directory)
将tslint.json救回来
目前只剩一个档案的操作是unstage状态
从资料夹看出,档案确实救回来了
回复修改的程式码
现在,我们来修改tslint.json内容,将每行长度改为150。
"max-line-length": [ true, 150 ]
异动的操作状态变成modified
万一把档案改坏,反悔了,一样可以使用git checkout -- tslint.json回复修改前的内容
只剩一个unstage状态。
这时刚刚修改的内容,会回复到最初的140。
"max-line-length": [ true, 140 ]
结论
看懂git status的讯息提示,是学好git的第一步,
在遇到问题时,才不会毫无头绪,不知如何解决。
本文为观看网路教学的学习笔记。