Day7|【Git】提交档案至储存库 - git commit

复习一下上一篇提到 git 四个常使用的指令:

  1. git status : 查询目前目录的「状态
  2. git add :把档案交给 Git ,让 Git 开始「追踪」目录,此时内容加到暂存区
  3. git commit :将暂存区的内容提交到储存库(Repository)保留
  4. 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 有以下这些档案|

https://ithelp.ithome.com.tw/upload/images/20210918/20141010BC2NfT44bU.png

使用上述指令提交到储存库里

https://ithelp.ithome.com.tw/upload/images/20210918/20141010L61zipPKjG.png

按下 enter 後,终端机会显示这些回馈

https://ithelp.ithome.com.tw/upload/images/20210918/20141010bTQpstxRsR.png

从回馈里的讯息可以看到这些提交相关资讯

  • 提交到哪个分支(master
  • 提交的 SHA-1 校验码(1eb52d1
  • 有多少档案被更动
  • 统计此提交有多少列被新增和被移除

这时候我们使用 git status 指令看一下档案状态

https://ithelp.ithome.com.tw/upload/images/20210918/20141010iAKLjmOq1s.png

可以发现现在是没有档案可以提交的,这是因为先前所做的变更都已经被保存成另一个版本。

如果今天有新增的档案、或是更改档案,只要再使用 git add 指令加入暂存区,然後透过 git commit 指令提交到储存库,就会是一个完整的流程罗!

切记|git commit 只会处理「暂存区」里的内容

上述的操作步骤,会发现到在我们执行 git commit 指令时,先前都会先执行一次 git add 指令。这是因为「git commit 只会处理暂存区里的内容」,也就是说如果今天新增档案或是更改什麽动作,没有先使用 git add 指令把档案提交到暂存区,那麽 git commit 指令就不会有所内容可以执行动作。

实际范例

新增档案後,直接执行 git commit 指令

$ touch index.html # 新增一个 index.html 档案
//enter
$ git commit # 提交档案到储存库

https://ithelp.ithome.com.tw/upload/images/20210918/20141010T9b70S0q3z.png

https://ithelp.ithome.com.tw/upload/images/20210918/20141010nkzSZKMwFe.png

这时候终端机回馈的讯息是 index.html 是一个未被追踪的状态,所以没有办法提交。

因此我们在使用 git add 指令把档案加到暂存区,并使用 git status 指令检查档案状态。

https://ithelp.ithome.com.tw/upload/images/20210918/20141010MSqXjl79ZB.png

这时候档案有成功被追踪了,接下来使用 git commit 指令提交到储存库。

https://ithelp.ithome.com.tw/upload/images/20210918/20141010KlBNk6vU1b.png

讯息回馈有显示出这一次做了哪些动作,记录了新的版本。

💡 所以请记得: 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

110/02 - 只有 StartActivityForResult 可以用吗?

前一天讲到合约(Contracts)和启动器(Launcher)取代StartActivityFor...

DAY28 学习30天的c++

if叙述 if叙述(if statement):是非结构。若条件运算式的结果为1(ture)则执行i...

前端工程师也能开发全端网页:挑战 30 天用 React 加上 Firebase 打造社群网站|Day25 阻挡会员路由

连续 30 天不中断每天上传一支教学影片,教你如何用 React 加上 Firebase 打造社群...

Leetcode: 1971. Find if Path Exists in Graph

思路 用dps从start点走一遍,然後检查end点有没有finish。 程序码 class Sol...

Python cv2 播Video

Python cv2 播Video 如有误,请指正。 VideoCapture Video file...