复习一下上一篇提到 git 四个常使用的指令:
git status
: 查询目前目录的「状态」git add
:把档案交给 Git ,让 Git 开始「追踪」目录,此时内容加到暂存区git commit
:将暂存区的内容提交到储存库(Repository)保留git log
:检视 Git 纪录
这篇将会介绍
git commit
的主要意义。
先前我们提过 git add 是将档案暂存在暂存区,这时候的档案并还没有完全提交出去,还需要透过 git commit
指令才算是完整流程喔!
git commit
$ git commit # 将暂存区的档案提交到储存库储存
git commit
指令让暂存区的档案提交到储存库(Repository)後,代表档案能够完整永久保存。
这个动作以我们实际操作方式可以说是「完成一个存档(或备份)的动作」,也就是建立了一个「版本」。
git commit -m
"修改记录"$ git commit -m"init commit" # 说明这次的 commit 做了什麽事
git commit
指令後面常搭配 -m"修改记录"
,引号里面代表注解,告诉我们这一次 Git 做了什麽更新、新增什麽到本地端。
注意:注解可使用中、英文表示,但记得最主要是**「清楚」**,目的是让自己或其他合作者明白这次做了什麽动作,因此使用简单的文字说明即可。
💡 使用 git commit 指令请一定要加上 -m"修改纪录“
讯息
如果没有输入 -m
参数说明动作, Git 的预设是不会让你执行 Commit 这个动作。因为这则执行的目的是要告诉自己及其他人「这次的修改做了什麽」。
实际范例:
现在 git_practice 有以下这些档案|
使用上述指令提交到储存库里
按下 enter 後,终端机会显示这些回馈
从回馈里的讯息可以看到这些提交相关资讯
master
)1eb52d1
)这时候我们使用 git status
指令看一下档案状态
可以发现现在是没有档案可以提交的,这是因为先前所做的变更都已经被保存成另一个版本。
如果今天有新增的档案、或是更改档案,只要再使用
git add
指令加入暂存区,然後透过git commit
指令提交到储存库,就会是一个完整的流程罗!
上述的操作步骤,会发现到在我们执行 git commit
指令时,先前都会先执行一次 git add
指令。这是因为「git commit
只会处理暂存区里的内容」,也就是说如果今天新增档案或是更改什麽动作,没有先使用 git add
指令把档案提交到暂存区,那麽 git commit
指令就不会有所内容可以执行动作。
实际范例
新增档案後,直接执行 git commit
指令
$ touch index.html # 新增一个 index.html 档案
//enter
$ git commit # 提交档案到储存库
这时候终端机回馈的讯息是 index.html 是一个未被追踪的状态,所以没有办法提交。
因此我们在使用 git add
指令把档案加到暂存区,并使用 git status
指令检查档案状态。
这时候档案有成功被追踪了,接下来使用 git commit
指令提交到储存库。
讯息回馈有显示出这一次做了哪些动作,记录了新的版本。
💡 所以请记得: git commit 只会处理「暂存区」里的内容
📝 补充|觉得每次提交都要经过 git add
在使用 git commit
觉得很麻烦怎麽办?
git commit 里可以搭配使用 -a
参数,如此一来就即使没有先使用 add 也能完成 Commit 的动作罗!
$ git commit -a -m 'added new benchmarks'
但是要注意这种方式,只能用於已经存在於储存区 (Respository)里的档案有效,也就是已经有在储存区但有重新更新的档案,对於新加入的档案(Untracked file)是无法执行的唷!
📝 补充|使用二段式的好处
如果每一次更新就提交一次,会有太多零碎的 Commit 纪录,这样一来要查阅纪录会有太多版本,反而降低效率。所以可以将更新过的档案先放在暂存区,等到完成一个任务後,或是一天的工作完成後,再提交 Commit 就可以罗!
<<: 【设计+切版30天实作】|Day7 - 设计出无外框式的三栏式pros区块
>>: [Day21] 在 .NET 使用 Dapper 操作 MySQL
前一天讲到合约(Contracts)和启动器(Launcher)取代StartActivityFor...
if叙述 if叙述(if statement):是非结构。若条件运算式的结果为1(ture)则执行i...
连续 30 天不中断每天上传一支教学影片,教你如何用 React 加上 Firebase 打造社群...
思路 用dps从start点走一遍,然後检查end点有没有finish。 程序码 class Sol...
Python cv2 播Video 如有误,请指正。 VideoCapture Video file...