網際內容管理第六組

課程筆記 << Previous Next >> 課程內容

Git筆記重點整理

線上觀看手冊

https://git-scm.com/book/zh-tw/v2

開始

版本控制系統

利用RCS指令可控制任一版本資料,其工作原理是在硬碟上保存一堆特殊格式的補丁集合,通過套用功能,便可以重新產生出每個版本的檔案內容。

Git控制方法分成集中化與分散式版本控制系統

集中化版本控制系統

好處:

1.清楚了解分組內各成員所做進度
2.管理員統一控制所有開發者權限
3.各用戶端統一使用統一版本系統,好管理
壞處:
1.中央伺服器發生故障,各開發者便無法協同合作
2.統一集中資料會有遺失資料風險

分散式版本控制系統

因集中化控制的不便,進而衍化出分散式控制系統


優點:
1.任一協同伺服器故障,事後都能以任一用戶端鏡像還原
2.能與許多遠端倉儲互動,使不同地方群組能在不一樣的地方完成同一專案協同合作
3.階層式的分工合作

Git完整性


1.Git 中所有的物件在儲存前都會被計算校驗碼(checksum)並以校驗碼參照物件。
2.計算較驗碼機制稱為 SHA-1 雜湊演算法。 一個校驗碼是由 40 個 16 進位的字母(0–9 和 a–f)所組成,Git 會根據檔案的內容和資料夾的結構來計算。 
3. Git 的資料庫內,每個檔案都是用其內容的校驗碼來儲存,而不是使用檔名。

Git狀態

1.已提交(committed):
檔案己安全地存在你的本地端資料庫。

2.已修改(modified):
檔案已被修改但尚未提交到本地端資料庫。 

3.已預存(staged):
已預存代表這檔案將會被存到下次你提交的快照中。

Git工作流程

1.你在你工作目錄修改檔案。

2.預存檔案,將檔案的快照新增到預存區。

3.做提交的動作,這會讓存在預存區的檔案快照永久地儲存在 Git 目錄中。

Git booK L9


9.1Git as a Client

git svn:Git中所有Subversion橋接指令的基本指令都是git svn它需要相當多的指令,因此我們將在完成一些簡單的工作流程時展示最常見的指令。當用戶使用git svn時,需特別注意避免同時與Git遠端倉儲交互操作使用。


10.1Plumbing and Porcelain

Plumbing and Porcelain


10.2Git Objects

Git Objects

cat -file 從Git 取回資料

update - ref更新引用


10.3Git References

Git References

如何知道最後一次提交?:

執行  git branch 

$ cat .git/HEAD


ref: refs/heads/master


執行 git checkout test

$ cat .git/HEAD

ref: refs/heads/test

也可以手動編輯此文件,但同樣可以執行更安全的命令:

執行symbolic-ref

$ git symbolic-ref HEAD

refs/heads/master

設置HEAD:


$ git symbolic-ref HEAD refs/heads/test

$ cat .git/HEAD

ref: refs/heads/test



10.4Packfiles
10.5The Refspec


10.4Packfiles

使用 git cat-file 命令查看這個文件大小


使用git gc打包文件




10.5The Refspec

The Refspec

.git / config文件中添加遠端origin的名稱,遠程存儲庫的URL以及用於獲取的refspec

[remote "origin"]
	url = https://github.com/schacon/simplegit-progit
	fetch = +refs/heads/:refs/remotes/origin/

如果想一次性執行某些操作,也可以在命令行中指定refspec
$ git fetch origin master:refs/remotes/origin/mymaster

指定多個refspec

$ git fetch origin master:refs/remotes/origin/mymaster \
	 topic:refs/remotes/origin/topic
From git@github.com:schacon/simplegit
 ! [rejected]        master     -> origin/mymaster  (non fast forward)
 * [new branch]      topic      -> origin/topic

刪除
refspec
git push origin :topic

git push origin -- delete topic


10.6Transfer Protocols

Transfer Protocols--傳輸協議

Git可以透過兩種主要方式在兩個倉儲之間傳輸數據:“啞吧”協議與“智能”協議。本章重點著重於介紹這兩個主要協議的運作方式。

The Dumb Protocol--啞巴協議

該協議稱為“啞巴協議”,是因為它在傳輸過程中不需要服務端的Git特定代碼; 獲取過程是一系列HTTP GET請求,使用者可以自由的呈現Git倉儲的安排。


10.7Transfer Protocols

本章重點在介紹Git內部的維護和數據的恢復,有時Git會自動執行一個名為“auto gc”的指令,大多數情況下,此指令不執行任何操作,但如果有過多的packfiles,則Git會執行git gc的指令,此指令會刪除不必要的文件。

不小心遺失提交則可使用git long和git master兩個指令來進行恢復。


10.8Environment Variables

Git總是在bashshell中運行,並使用許多shell環境變量來確定它的行為方式。

GIT_EXEC_PATH:可透過運行檢查當前設置git --exec-path

HOME:它是Git查找全局配置文件的地方。

GIT_CONFIG_NOSYSTEM:如果您的系統配置干擾了您的指令,但是您無權更改或刪除它,這將非常有用。

GIT_COMMITTER_NAME 設置提交者的名字

GIT_COMMITTER_EMAIL 是“提交者”字段的電子郵件地址。

GIT_COMMITTER_DATE 用於“提交者”字段中的日期。


10.9Summary

Git為一個非常強大的系統工具,可以輕鬆使用它作為VCS。本章介紹了許多管道指令 - 這些指令使用戶在使用上更家簡單。


課程筆記 << Previous Next >> 課程內容