課程時間

🔧【Tools工具安裝】9:10:41

🎬【Preview導讀】3:41:55

🎬【GitEpisode7(第7篇)-GitObject、Blob、Tree、Commit、Tag、Compress、ShrinkRepository】10:37:02

課程章節

請按「Preview」預覽章節。

  關於本課程
Available in days
days after you enroll
  討論Blob、Tree、Commit這三個GitObject。討論Branch、HEAD、DetachedHead。討論RecoverCommit(復原提交)。討論FastForwardMerge(快進合併)和3WayMerge(三路合併)和ORIG_HEAD
Available in days
days after you enroll
  討論Fetch、Pull、Push。討論LocalBranch(本地分支)、RemoteTrackingBranch(遠端追蹤分支)、RemoteBranch(遠端分支)。討論LocalTag(本地標籤)、RemoteTag(遠端標籤)。討論git gc(壓縮物件)、git verify-pack -v(查看被壓縮的物件)、git unpack-objects(解壓縮物件)
Available in days
days after you enroll
  刪除DanglingGitObjects(懸空Git物件)
Available in days
days after you enroll
  ShrinkGitRepository(縮小Git代碼倉庫)
Available in days
days after you enroll
  關於Origin
Available in days
days after you enroll
  課程評價
Available in days
days after you enroll
請選付款方案

🔴如果您在HiSKIO上購買了課程,則無需在Teachable重新購買相同課程。

請注意,Teachable Pay的發票無法提供給台灣公司報稅,如果需要台灣發票報稅,請去HiSKIO購買。

Teachable可能會產大約5%的「海外交易費」(詳情請諮詢您的發卡機構),為了學生權益,請使用「10%off」折價券

「Bundle」(組合包)更划算!

#「Git」相關系列「Bundle」(組合包)

  • 🚀「包含9堂課」B-6-版控神器Git速成班、Git眉角學程第1-8篇(Click here)
  • 🚀「IT工具人學院全部課程」B-1-1-All Course Membership全能學生證(Click here)

Git Serious(學程)

注意: 因為此系列已經沒有新東西可以教了,所以這個學程不會再加入新內容了!

#請來這邊看「Git Serious(學程)」簡介(Click here)

🚀7-1-0-Git版控神器CrashCourse(速成班)(Click here)

🚀7-1-1-GitEpisode1(第1篇)-Stage、Commit(Click here)

🚀7-1-2-GitEpisode2(第2篇)-Branch、Merge(Click here)

🚀7-1-3-GitEpisode3(第3篇)-LocalBranch、RemoteTrackingBranch、RemoteBranch、AnnotatedTag、LightweightTag(Click here)

🚀7-1-4-GitEpisode4(第4篇)-Diff、Patch、GitIgnore、Stash、WorkTree、GitBlame、GitShow、GitBundle(Click here)

🚀7-1-5-GitEpisode5(第5篇)-Rebase、Revert、InsertCommit、UpdateCommit、DeleteCommit(Click here)

🚀7-1-6-GitEpisode6(第6篇)-BackUp GitConfig、GitHook、Jest、PreCommit、Husky、Eslint、EslintConfig、LintStaged(Click here)

🚀7-1-7-GitEpisode7(第7篇)-GitObject、Blob、Tree、Commit、Tag、Compress、ShrinkRepository(Click here)(👈😁你現在在此!!)

🚀7-1-8-GitEpisode8(第8篇)-GitHub、CentralizedWorkflow、FeatureBranchWorkflow、ForkingWorkflow、GitFlowWorkflow(Click here)

本課簡介

Hi My name is Kevin. 我是一名移民到澳大利亞的軟體工程師,個人專注於各種技術和使用者界面的開發與研究。

GitEpisode7(第7篇)-GitObject、Blob、Tree、Commit、Tag、Compress、ShrinkRepository】是一門銜接一門的「版控神器Git眉角學程」中其中一個課程。

您是否遇到Git靈異現象卻不知道從哪下手?深入Git底層觀念才能分析各種靈異現象。詳解GitObject(Git物件)包括Blob(團)和Tree(樹)和Commit(提交)和Tag(標籤)。討論Compress(壓縮)和ShrinkRepository(縮減倉庫)。

  • 討論在「.git/object」中的3種「GitObject-Blob、Tree、Commit」底層物件觀念。
  • 討論「Branch、HEAD、DetachedHead」(分支、頭、獨立頭)的底層觀念。
  • 討論「RecoverCommit」(復原提交)的底層觀念。
  • 討論「FastForwardMerge、3WayMerge、ORIG_HEAD」(快進合併、三路合併、原始頭)的底層觀念。
  • 討論「LocalBranch、RemoteTrackingBranch、RemoteBranch」(本地分支,遠端追蹤分支,遠端分支)底層觀念。
  • 討論「AnnotatedTag、LightweightTag」(標示標籤、輕量標籤)和「LocalTag、RemoteTag」(本地標籤、遠端標籤)底層觀念。
  • 討論「git push origin -u [branch1] [branch2]...etc」底層觀念,避免使用「git push --all、git push origin [Branch]」底層觀念。
  • 討論「git fetch、git pull」所產生的「FETCH_HEAD」底層觀念。
  • 討論「git fetch --prune、git fetch --prune --prune-tags 底層觀念。
  • 討論壓縮底層觀念,包括「git gc、git verify-pack -v "xxx.pack"、git unpack-objects」(壓縮物件、查看被壓縮的物件、解壓縮物件)。
  • 討論執行「git add」所造成的「DanglingBlob(懸空Blob)的底層觀念。
  • 討論執行「DeleteBranch(刪除分支)所造成的「DanglingCommit(懸空提交)的底層觀念。
  • 討論執行「git rebase」後,而舊的「Commit」(提交)會變成「DanglingCommit」(懸空提交)的底層觀念。
  • 討論執行「git reset」,而「DeletedCommits」(被刪除的提交)會變成「DanglingCommit」(懸空提交)的底層觀念。
  • 討論刪除「AnnotatedTag」(標示標籤)的底層觀念,這會刪除此「GitReference-.git/refs/tags/1.0.1」,然後「GitTagObject-.git/objects/XX/XXXX...」就會變成「DanglingTag」(懸空標籤)。
  • 討論所有的「DanglingCommit(懸空提交)都會連接到它自己的「Trees、Blobs」。
  • 示範刪除全部的「DanglingCommit(懸空提交)的底層觀念。
  • 討論如何「ResetGitRepository、ShrinkGitRepository」(重製Git代碼倉庫、縮小Git代碼倉庫)的底層觀念。
  • 討論「origin」的底層觀念。


Course Highlight(本課魔王)

本課程有三大魔王。

🍳Git7-(T48)討論Blob、Tree、Commit這三個GitObject。討論Branch、HEAD、DetachedHead。討論RecoverCommit(復原提交)。討論FastForwardMerge(快進合併)、3WayMerge(三路合併)、ORIG_HEAD

  • 討論在「.git/object」中的3種「GitObject-Blob、Tree、Commit」底層物件觀念。討論「Branch、HEAD、DetachedHead」(分支、頭、獨立頭)的底層觀念。討論「RecoverCommit」(復原提交)的底層觀念。討論「FastForwardMerge、3WayMerge、ORIG_HEAD」(快進合併、三路合併、原始頭)的底層觀念。

🍳Git7-(T49)討論Fetch、Pull、Push。討論LocalBranch(本地分支)、RemoteTrackingBranch(遠端追蹤分支)、RemoteBranch(遠端分支)。討論LocalTag(本地標籤)、RemoteTag(遠端標籤)。討論git gc(壓縮物件)、git verify-pack -v(查看被壓縮的物件)、git unpack-objects(解壓縮物件)

  • 討論「LocalBranch、RemoteTrackingBranch、RemoteBranch」(本地分支,遠端追蹤分支,遠端分支)底層觀念。討論「AnnotatedTag、LightweightTag」(標示標籤、輕量標籤)和「LocalTag、RemoteTag」(本地標籤、遠端標籤)底層觀念。討論「git push origin -u [branch1] [branch2]...etc」底層觀念,避免使用「git push --all、git push origin [Branch]」底層觀念。討論「git fetch、git pull」所產生的「FETCH_HEAD」底層觀念。討論「git fetch --prune、git fetch --prune --prune-tags 底層觀念。討論壓縮底層觀念,包括「git gc、git verify-pack -v "xxx.pack"、git unpack-objects」(壓縮物件、查看被壓縮的物件、解壓縮物件)。

😈Git7-第1魔王,🍳Git7-(T50)刪除DanglingGitObjects(懸空Git物件)

  • 討論執行「git add」所造成的「DanglingBlob(懸空Blob)的底層觀念。討論執行「DeleteBranch(刪除分支)所造成的「DanglingCommit(懸空提交)的底層觀念。討論執行「git rebase」後,而舊的「Commit」(提交)會變成「DanglingCommit」(懸空提交)的底層觀念。討論執行「git reset」,而「DeletedCommits」(被刪除的提交)會變成「DanglingCommit」(懸空提交)的底層觀念。討論刪除「AnnotatedTag」(標示標籤)的底層觀念,這會刪除此「GitReference-.git/refs/tags/1.0.1」,然後「GitTagObject-.git/objects/XX/XXXX...」就會變成「DanglingTag」(懸空標籤)。討論所有的「DanglingCommit(懸空提交)都會連接到它自己的「Trees、Blobs」。示範刪除全部的「DanglingCommit(懸空提交)的底層觀念。

😈Git7-第2魔王,🍳Git7-(T51)ResetGitRepository(重製Git代碼倉庫)

  • 討論如何「ResetGitRepository」(重製Git代碼倉庫)的底層觀念。

😈Git7-第3魔王,🍳Git7-(T52)ShrinkGitRepository(縮小Git代碼倉庫)

  • 討論「ShrinkGitRepository」(縮小Git代碼倉庫)的底層觀念。

🍳Git7-(T53)關於Origin

  • 討論「origin」的底層觀念。

想朝軟體工程師之路前進嗎?受夠了像是文字天書,艱深難懂的工具文件嗎?對自己的底子沒信心嗎?若你想扎實打底,本課程將讓你收穫滿滿!歡迎加入「IT工具人學院,帶你學到會」,一起練功吧!!顆顆。

工具安裝

🔧Git for Windows

🔧SourceTree

🔧TortoiseGit

🔧P4Merge

課前技能

✍只要有勇氣面對"GitBash"(終端機)鼻孔朝天,一副老子天下無敵的勇者,都非常適合上課。

單元簡介

導讀

  • (P0)Git(1to8)(版控神器)(眉角學程)
  • (P1)複習GitCommand(Git指令)
  • (P2)整個Git學程重點摘要複習
  • (P3)GitResource(Git資源)
  • (P4)Git課程使用說明書
  • (P5)Git學程導讀
  • (P5-1)整個學程簡介
  • (P5-2)GitEpisode1(第1篇)-Stage、Commit
  • (P5-3)GitEpisode2(第2篇)-Branch、Merge
  • (P5-4)GitEpisode3(第3篇)-LocalBranch、RemoteTrackingBranch、RemoteBranch、AnnotatedTag、LightweightTag
  • (P5-5)GitEpisode4(第4篇)-Diff、Patch、GitIgnore、Stash、WorkTree、GitBlame、GitShow、GitBundle
  • (P5-6)GitEpisode5(第5篇)-Rebase、Revert、InsertCommit、UpdateCommit、DeleteCommit
  • (P5-7)GitEpisode6(第6篇)-BackUp GitConfig、GitHook、Jest、PreCommit、Husky、Eslint、EslintConfig、LintStaged
  • (P5-8)GitEpisode7(第7篇)-GitObject、Blob、Tree、Commit、Tag、Compress、ShrinkRepository
  • (P5-9)GitEpisode8(第8篇)-GitHub、(Centralized、FeatureBranch、Forking、GitFlow)Workflow
  • (P5-10)Git(版控神器)CrashCourse(速成班)

討論Blob、Tree、Commit這三個GitObject。討論Branch、HEAD、DetachedHead。討論RecoverCommit(復原提交)。討論FastForwardMerge(快進合併)和3WayMerge(三路合併)和ORIG_HEAD

  • (T48)討論Blob、Tree、Commit這三個GitObject。討論Branch、HEAD、DetachedHead。討論RecoverCommit(復原提交)。討論FastForwardMerge(快進合併)、3WayMerge(三路合併)、ORIG_HEAD
  • (T48-1)Tutorial簡介
  • (T48-2)討論Plumbing和Porcelain。討論MD5,SHA1,SHA256,SHA512。討論Blob,Tree,Commit
  • (T48-3)1stCommit,討論Blob和Tree和Commit這三個GitObject
  • (T48-4)2ndCommit,討論Blob和Tree和Commit這三個GitObject
  • (T48-5)3ndCommit,討論Blob和Tree和Commit這三個GitObject
  • (T48-6)討論Branch(分支),HEAD
  • (T48-7)討論DetachedHead
  • (T48-8)RecoverCommit(復原提交)和Tree和Blob和Branch(分支)
  • (T48-9)簡介FastForwardMerge(快進合併)
  • (T48-10)實作FastForwardMerge(快進合併)
  • (T48-11)簡介3WayMerge(三路合併)
  • (T48-12)實作3WayMerge(三路合併),Conflict(衝突),Abort(放棄)
  • (T48-13)實作3WayMerge(三路合併),Conflict(衝突),P4Merge(解決衝突)
  • (T48-14)複習GitCommand和我的個人建議

討論Fetch、Pull、Push。討論LocalBranch(本地分支)、RemoteTrackingBranch(遠端追蹤分支)、RemoteBranch(遠端分支)。討論LocalTag(本地標籤)、RemoteTag(遠端標籤)。討論git gc(壓縮物件)、git verify-pack -v(查看被壓縮的物件)、git unpack-objects(解壓縮物件)

  • (T49)討論Fetch、Pull、Push。討論LocalBranch(本地分支)、RemoteTrackingBranch(遠端追蹤分支)、RemoteBranch(遠端分支)。討論LocalTag(本地標籤)、RemoteTag(遠端標籤)。討論git gc(壓縮物件)、git verify-pack -v(查看被壓縮的物件)、git unpack-objects(解壓縮物件)
  • (T49-1)Tutorial簡介
  • (T49-2)User1,複習Blob、Tree、Commit(1stTo3rdCommit)
  • (T49-3)User1,關於git push。討論LocalBranch(本地分支)、RemoteTrackingBranch(遠端追蹤分支)、RemoteBranch(遠端分支)
  • (T49-4)User1,git gc(壓縮物件),git verify-pack -v xxx.pack(查看被壓縮的物件)。git unpack-objects(解壓縮物件)
  • (T49-5)User2And3,關於GitClone、GitReferencePack、GitObjectPack
  • (T49-6)User2And3,關於FETCH_HEAD。關於git fetch、git pull
  • (T49-7)User2And3,關於git fetch --prune
  • (T49-8)複習AnnotatedTag(標示標籤)、LightweightTag(輕量標籤)
  • (T49-9)User2And3,關於LocalTag(本地標籤)、RemoteTag(遠端標籤)。關於PushTags、FetchTags
  • (T49-10)User2And3,關於git fetch --prune --prune-tags
  • (T49-11)複習GitCommand和我的個人建議

刪除DanglingGitObjects(懸空Git物件)

  • (T50)刪除DanglingGitObjects(懸空Git物件)
  • (T50-1)Tutorial簡介
  • (T50-2)討論DanglingBlob(懸空Blob)
  • (T50-3)刪除Branch(分支),產生DanglingCommit(懸空提交)並且其連接到Trees、Blobs
  • (T50-4)討論GitRebase,舊的Commit(提交)會變成DanglingCommit(懸空提交)並且其連接到Trees,Blobs
  • (T50-5)討論GitReset,DeletedCommit(被刪除的提交)會變成DanglingCommit(懸空提交)並且其連接到Trees、Blobs
  • (T50-6)刪除AnnotatedTag(標示標籤),這會產生DanglingTag(懸空標籤)
  • (T50-7)刪除DanglingGitObjects(懸空Git物件),git gc --prune
  • (T50-8)刪除DanglingGitObjects(懸空Git物件),git -c gc.XXX
  • (T50-9)刪除DanglingGitObjects(懸空Git物件)。git push。git clone
  • (T50-10)複習GitCommand和我的個人建議

ShrinkGitRepository(縮小Git代碼倉庫)

  • (T51)ResetGitRepository(重製Git代碼倉庫)
  • (T51-1)Tutorial簡介
  • (T51-2)前置準備
  • (T51-3)ResetGitRepository(重製Git代碼倉庫)
  • (T51-4)複習GitCommand和我的個人建議
  • (T52)ShrinkGitRepository(縮小Git代碼倉庫)

關於Origin

  • (T53)關於Origin
  • (T53-1)Tutorial簡介
  • (T53-2)複習Origin
  • (T53-3)深入理解Origin
  • (T53-4)複習GitCommand和我的個人建議

個人建議Git安裝步驟

# 工欲善其事,必先利其器。(請參考「工具安裝」- T18ToT26)

🍳 步驟1: 下載與安裝Git for Windows (or Git for Mac)

🍳 步驟2: 註冊Git Server

E.g. AzureDevOps、GitHub、GitLab、BitBucket

🍳 步驟3: 安裝Git GUI (Graphic User Interface 圖形介面)

E.g. SourceTree、TortoiseGit、GitHub Desktop、GitKraken、GitExtensions、SmartGit、Git in Visual Studio...etc

🍳 步驟4: 安裝Diff and Merge GUI (Graphic User Interface 圖形介面)

E.g. P4Merge、WinMerge、Meld、Beyond Compare、Araxis Merge、KDiff3、DeltaWalker、Code Compare、Integrations...etc

圖解「LocalBranch、RemoteTrackingBranch、RemoteBranch」(本地分支、遠端追蹤分支、遠端分支)

# 請參考【GitEpisode3(第3篇)-LocalBranch、RemoteTrackingBranch、RemoteBranch、AnnotatedTag、LightweightTag】(T19)LocalBranch和RemoteTrackingBranch和RemoteBranch;Fetch和Pull和Push

圖解「Tag」(標籤)

# 請參考【GitEpisode3(第3篇)-LocalBranch、RemoteTrackingBranch、RemoteBranch、AnnotatedTag、LightweightTag】(T22)關於Tag

圖解「Index、GitDiff、Patch」

# 請參考【GitEpisode4(第4篇)-Diff、Patch、GitIgnore、Stash、WorkTree、GitBlame、GitShow、GitBundle】(T25)關於index。關於GitDiff和Patch

圖解「GitHook」

# 請參考【GitEpisode6(第6篇)-BackUp GitConfig、GitHook、Jest、PreCommit、Husky、Eslint、EslintConfig、LintStaged】(T41)關於GitHook