課程時間
🔧【Tools工具安裝】9:10:41
🎬【Preview導讀】3:41:55
🎬【GitEpisode7(第7篇)-GitObject、Blob、Tree、Commit、Tag、Compress、ShrinkRepository】10:37:02
課程章節
請按「Preview」預覽章節。
- FAQ-Handout,SampleCode(常見問題-講義、範例程式碼)
- (P0)Git(1to8)(版控神器)(眉角學程) (4:20)
- (P4)Git課程使用說明書 (29:23)
- (P5-1)整個學程簡介 (51:22)
- (P5-2)GitEpisode1(第1篇)-Stage、Commit (7:28)
- (P5-3)GitEpisode2(第2篇)-Branch、Merge (7:05)
- (P5-4)GitEpisode3(第3篇)-LocalBranch、RemoteTrackingBranch、RemoteBranch、AnnotatedTag、LightweightTag (19:20)
- (P5-5)GitEpisode4(第4篇)-Diff、Patch、GitIgnore、Stash、WorkTree、GitBlame、GitShow、GitBundle (14:53)
- (P5-6)GitEpisode5(第5篇)-Rebase、Revert、InsertCommit、UpdateCommit、DeleteCommit (16:37)
- (P5-7)GitEpisode6(第6篇)-BackUp GitConfig、GitHook、Jest、PreCommit、Husky、Eslint、EslintConfig、LintStaged (18:15)
- (P5-8)GitEpisode7(第7篇)-GitObject、Blob、Tree、Commit、Tag、Compress、ShrinkRepository (23:28)
- (P5-9)GitEpisode8(第8篇)-GitHub、(Centralized、FeatureBranch、Forking、GitFlow)Workflow (17:02)
- (P5-10)Git(版控神器)CrashCourse(速成班) (12:32)
- (T48-1)Tutorial簡介 (11:23)
- (T48-2)討論Plumbing和Porcelain。討論MD5,SHA1,SHA256,SHA512。討論Blob,Tree,Commit (32:36)
- (T48-3)1stCommit,討論Blob和Tree和Commit這三個GitObject (28:10)
- (T48-4)2ndCommit,討論Blob和Tree和Commit這三個GitObject (15:51)
- (T48-5)3ndCommit,討論Blob和Tree和Commit這三個GitObject (23:11)
- (T48-6)討論Branch(分支),HEAD (33:10)
- (T48-7)討論DetachedHead (18:50)
- (T48-8)RecoverCommit(復原提交)和Tree和Blob和Branch(分支) (27:58)
- (T48-9)簡介FastForwardMerge(快進合併) (7:50)
- (T48-10)實作FastForwardMerge(快進合併) (15:24)
- (T48-11)簡介3WayMerge(三路合併) (12:14)
- (T48-12)實作3WayMerge(三路合併),Conflict(衝突),Abort(放棄) (27:06)
- (T48-13)實作3WayMerge(三路合併),Conflict(衝突),P4Merge(解決衝突) (21:13)
- (T48-14)複習GitCommand和我的個人建議 (9:35)
- (T49-1)Tutorial簡介 (11:10)
- (T49-2)User1,複習Blob、Tree、Commit(1stTo3rdCommit) (20:45)
- (T49-3)User1,關於git push。討論LocalBranch(本地分支)、RemoteTrackingBranch(遠端追蹤分支)、RemoteBranch(遠端分支) (25:23)
- (T49-4)User1,git gc(壓縮物件),git verify-pack -v xxx.pack(查看被壓縮的物件)。git unpack-objects(解壓縮物件) (18:51)
- (T49-5)User2And3,關於GitClone、GitReferencePack、GitObjectPack (28:51)
- (T49-6)User2And3,關於FETCH_HEAD。關於git fetch、git pull (32:51)
- (T49-7)User2And3,關於git fetch --prune (18:37)
- (T49-8)複習AnnotatedTag(標示標籤)、LightweightTag(輕量標籤) (30:01)
- (T49-9)User2And3,關於LocalTag(本地標籤)、RemoteTag(遠端標籤)。關於PushTags、FetchTags (33:51)
- (T49-10)User2And3,關於git fetch --prune --prune-tags (13:21)
- (T49-11)複習GitCommand和我的個人建議 (23:30)
- (T50-1)Tutorial簡介 (11:03)
- (T50-2)討論DanglingBlob(懸空Blob) (14:48)
- (T50-3)刪除Branch(分支),產生DanglingCommit(懸空提交)並且其連接到Trees、Blobs (18:34)
- (T50-4)討論GitRebase,舊的Commit(提交)會變成DanglingCommit(懸空提交)並且其連接到Trees,Blobs (33:05)
- (T50-5)討論GitReset,DeletedCommit(被刪除的提交)會變成DanglingCommit(懸空提交)並且其連接到Trees、Blobs (5:51)
- (T50-6)刪除AnnotatedTag(標示標籤),這會產生DanglingTag(懸空標籤) (11:31)
- (T50-7)刪除DanglingGitObjects(懸空Git物件),git gc --prune (6:49)
- (T50-8)刪除DanglingGitObjects(懸空Git物件),git -c gc.XXX (5:08)
- (T50-9)刪除DanglingGitObjects(懸空Git物件)。git push。git clone (8:19)
- (T50-10)複習GitCommand和我的個人建議 (10:55)
🔴如果您在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