在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Java/ Git 內(nèi)幕:直接處理 Git 對象
創(chuàng)建沖突
暫存更改
創(chuàng)建項(xiàng)目
Git 內(nèi)幕:.git 目錄
撤銷本地更改
移動文件
移除 oops 標(biāo)簽
何為 Origin
再談結(jié)構(gòu)
撤銷暫存的更改
修正提交
別名
檢查狀態(tài)
給版本打標(biāo)簽
撤銷提交的更改
拉下共享的更改
變基
暫存與提交
合并
合并拉下的更改
更改而非文件
更改原始倉庫
重置 master 分支
回顧克隆的倉庫
變基 VS 合并
共享倉庫
導(dǎo)航分支
重置 greet 分支
添加跟蹤的分支
獲得舊版本
克隆倉庫
Git 內(nèi)幕:直接處理 Git 對象
再談設(shè)置
遠(yuǎn)程分支
從分支移除提交
合并回 master
查看分叉的分支
添加遠(yuǎn)程倉庫
拉下更改
歷史
在 master 中更改
裸倉庫
做更改
高級/將來的主題
推送更改
多個(gè)倉庫
設(shè)置
提交更改
取得更改
托管你的 Git 倉庫
創(chuàng)建分支
解決沖突

Git 內(nèi)幕:直接處理 Git 對象

目的

瀏覽對象存儲的結(jié)構(gòu)。學(xué)習(xí)如何使用 SHA1 哈希來查找倉庫中的內(nèi)容。

現(xiàn)在讓我們使用一些工具來直接探究 Git 對象。

查找最新的提交

$ git hist --max-count=1

這應(yīng)當(dāng)顯示倉庫中所做的最新提交。在你的系統(tǒng)中的 SHA1 哈希也許與我的不同,但應(yīng)該看起來類似。

$ git hist --max-count=1
* 96ee164 2013-04-13 | Added a Rakefile. (HEAD, master) [Jim Weirich]

轉(zhuǎn)存最新的提交

使用上面所列提交的 SHA1 哈希。

$ git cat-file -t <hash>
$ git cat-file -p <hash>

這兒是我的輸出:

git cat-file -t 96ee164
commit
$ git cat-file -p 96ee164
tree 096b74c56bfc6b40e754fc0725b8c70b2038b91e
parent 0f36766e05bc55d765ec8afe288430edc69fceea
author Jim Weirich <jim (at) neo.com> 1365880844 -0400
committer Jim Weirich <jim (at) neo.com> 1365880844 -0400

Added a Rakefile.

注意:如果你在別名實(shí)驗(yàn)中定義了 typedump 別名,那么你可以輸入 git typegit dump,而不是更長的 cat-file命令(我從未記住過)。

這是 master 分支頭提交對象的轉(zhuǎn)存結(jié)果。它看起來很像先前介紹的提交對象。

查找 Tree

我們可以轉(zhuǎn)存提交中的目錄樹引用。這應(yīng)當(dāng)是我們項(xiàng)目中的文件的說明。使用上面所列“tree”那行的 SHA1 哈希。

$ git cat-file -p <treehash>

這兒是我的目錄樹看起來的樣子……

$ git cat-file -p 096b74c
100644 blob 28e0e9d6ea7e25f35ec64a43f569b550e8386f90    Rakefile
040000 tree e46f374f5b36c6f02fb3e9e922b79044f754d795    lib

是的,我看到了 Rakefile 和 lib 目錄。

轉(zhuǎn)存 lib 目錄

$ git cat-file -p <libhash>
$ git cat-file -p e46f374
100644 blob c45f26b6fdc7db6ba779fc4c385d9d24fc12cf72    hello.rb

這是 hello.rb 文件。

轉(zhuǎn)存 hello.rb 文件

$ git cat-file -p <rbhash>
$ git cat-file -p c45f26b
# Default is World
# Author: Jim Weirich (jim@somewhere.com)
name = ARGV.first || "World"

puts "Hello, #{name}!"

你已經(jīng)有它了。我們直接從 Git 倉庫轉(zhuǎn)存了提交對象、樹對象、以及 blob 對象。blob、樹及提交就是全部了。

瀏覽你自己的 Git 倉庫

手動瀏覽你自己的 Git 倉庫??纯词欠衲芡ㄟ^遵循最新提交的 SHA1 哈希引用來從第一個(gè)提交找出最初的 hello.rb 文件。