2016年8月16日 星期二

[學習] 保哥30天精通Git版控(06) + (07)

(06) 介紹物件結構和相關指令

cmd

mkdir demo-git         產生一個demo-git資料夾
cd demo-git
git init            建立repository儲存庫
echo 1 > a.txt         建立一個檔案a.txt內容是1
copy a.txt b.txt        複製a.txt叫b.txt
git add .           將檔案加入git中
git hash-object a.txt       查看blob物件,是用a.txt的內容1生成一個hash雜湊碼,前兩碼是資料夾名稱,後面是檔名,點進去看內容會是被壓縮編譯過的內容(原來是1)
git commit -m "註解說明"    提交目前版本
git log            查看commit物件雜湊碼
git cat-file -p master       查看tree物件的雜湊碼
git cat-file -p 'tree物件的雜湊碼'  查看tree物件底下的blob物件


(07) 講解索引staged結構、說明指令並講解Git檔案的生命週期(看保哥網站)

----索引就是staged狀態,Git儲存庫的運作,是將工作目錄裡的變化,透過更新索引的方式,將資料寫入成Git物件。

----git status 就會看到檔案狀態

----git show master:filename 可以看檔案內容~

----新增檔案用 git add filename 會變成等待被commit狀態(也就是staged索引),同時該檔案會屬於unmodified的狀態(不難理解,剛加入是最新的狀態),但add不是commit。

----刪除剛add但還沒commit的檔案,使用git rm filename,會出錯,因為,add的檔案雖然有被丟到等待commit的索引,但最新版裡面並沒有這個檔案,所以rm指令執行去比對索引跟最新版本後會出錯。一邊有一邊沒有這樣。

-----git rm --cached filename,這樣就可以把上述add的檔案從指名從索引中刪除,退回untracked狀態。

----如果是modified的檔案,就可以直接用git rm filename將刪除該檔案寫入索引,不過還是要git commit才會真的把該檔案刪掉。

----只要不再staged狀態的檔案,git commit是不會更新上去的,git reset --hard回復到上一版本會把該檔刪掉


沒有留言:

張貼留言