close
1.集中式版本控管 v.s. 分散式版本控管
集中式版本控管 : 專案所有版本的檔案都存在單一伺服器上,開發者畚箕端只會儲存最新版本的歷史紀錄,因此若想提交(commit)新版本、查詢各版本差異或修改歷史紀錄都需要透過網路連上伺服器才能執行。
好處: 可限制開啟目錄的權限
壞處: 對網路依賴度高
分散式版本控管 : 遠端儲存庫和每一個開發者本機端儲存庫上各有一份完整的歷史檔案,遠端儲存庫只是提供一個供多人同步專案資料用的共享版本,開發者不須透過網路便能提交新版本的程式碼到本機端儲存庫,等到需要將本機端儲存庫的資料同步到遠端儲存庫時才需要用到網路
2. 減少空間
git會為專案資料建立快照(snapshot),若是專案內沒有變更的檔案就不會多儲存一份來佔用磁碟空間,而只是增加了一筆這個檔案的對應連結,開發者開以新版本存取這個檔案時,實際上還是開啟先前的舊版檔案而非新副本
3. git 工作流程
step1 : 建立開發專案=>建立目錄(Working Directory)及儲存庫(Repository)
Working Directory: 開發專案所有的檔案都儲存在這個目錄下,執行與專案相關的git指令也都是在工作目錄下執行
Repository:下達建立儲存庫的指令(git init)後會在工作目錄下建立一個.git資料目錄,用來儲存所有版本變更所需資訊,G在.git目錄下會建立一個名稱為index的索引檔案,用來記錄專案所有檔案的處理狀態(ex: committed:已提交;modified:已修改;staged:在已修改檔案中標記出要做為提交到下一版本用的已暫存)
step2 : 在專案目錄下新增或修改檔案
step3 : 告一個段落時提交一個專案新版本到Git本地端儲存庫
將需要提交的檔案標記為staged,then commit
若要使用GitHub來和其他人共享專案則需要以下指令:
(1)push:將本地端儲存庫的特定版本專案推到遠端儲存庫上整併
(2)pull:從遠端儲存庫將新版程式碼取回本地端儲存庫
(3)checkout:從本地端儲存庫放入工作目錄中
4.branch and merge
對Git而言開發的專案版本並無master(主幹與branch(分支)的差別,每個分支都是等價關係,是開發者自行來對各分支做命名,一般習慣將穩定版本稱為主幹,其他開發中的版本則稱作分支
指令:
branch:建立分支,可以將某個歷史版本複製一份,獨立成為另一個新的分支版本
merge:將兩個不同的分支版本合併到其中一個分支上
5.分版指令
clone: 把專案在遠端儲存庫上的所有內容複製到本地,建立起本機儲存庫及工作目錄
fork:把別人專案的遠端儲存庫內容複製一份到自己的遠端儲存庫
[範例] 看到有興趣的她專案可以執行fork指令,把別人專案的遠端儲存庫複製到自己的遠端儲存庫,再執行clone,把自己遠端儲存庫的整個專案的所有內容(包括各版本)複製到本機端儲存庫
6.同步指令
push:將自己目前本機端儲存庫的相關檔案上傳到遠端儲存庫
pull:把遠端儲存庫的最新版本下載至自己的本機端,並將遠端分支合併到本地分支
<比較> pull並不像clone會下載完整專案各版本內容
pull request:主動要求第三方開發者納入自己開發的程式,將本地端儲存庫上的程式碼整併到對方的儲存庫上
[範例] A成員可透過pull request要求B成員將A成員修改後的程式碼併入B成員的開發專案中
7. git bash 指令
git touch XXX :若沒有XXX這個檔案則會創一個出來,若有則是更改timestamp
git add XXX: 將XXX列為staged狀態
git add . : 把所有剛剛修改過或新增加的檔案加進stage狀態
git commit : 把staged的檔案都commit
git commit -m "message": 把staged的檔案都commit,"message"為給這次commit的訊息
資料來源: http://www.ithome.com.tw/news/95283
http://gogojimmy.net/2012/01/17/how-to-use-git-1-git-basic/
另外可參考:
https://ihower.tw/git/basic.html
http://rubyist.marsz.tw/blog/2012-01-17/git-reset-and-revert-to-rollback-commit/
https://ihower.tw/git/remote.html
集中式版本控管 : 專案所有版本的檔案都存在單一伺服器上,開發者畚箕端只會儲存最新版本的歷史紀錄,因此若想提交(commit)新版本、查詢各版本差異或修改歷史紀錄都需要透過網路連上伺服器才能執行。
好處: 可限制開啟目錄的權限
壞處: 對網路依賴度高
分散式版本控管 : 遠端儲存庫和每一個開發者本機端儲存庫上各有一份完整的歷史檔案,遠端儲存庫只是提供一個供多人同步專案資料用的共享版本,開發者不須透過網路便能提交新版本的程式碼到本機端儲存庫,等到需要將本機端儲存庫的資料同步到遠端儲存庫時才需要用到網路
2. 減少空間
git會為專案資料建立快照(snapshot),若是專案內沒有變更的檔案就不會多儲存一份來佔用磁碟空間,而只是增加了一筆這個檔案的對應連結,開發者開以新版本存取這個檔案時,實際上還是開啟先前的舊版檔案而非新副本
3. git 工作流程
step1 : 建立開發專案=>建立目錄(Working Directory)及儲存庫(Repository)
Working Directory: 開發專案所有的檔案都儲存在這個目錄下,執行與專案相關的git指令也都是在工作目錄下執行
Repository:下達建立儲存庫的指令(git init)後會在工作目錄下建立一個.git資料目錄,用來儲存所有版本變更所需資訊,G在.git目錄下會建立一個名稱為index的索引檔案,用來記錄專案所有檔案的處理狀態(ex: committed:已提交;modified:已修改;staged:在已修改檔案中標記出要做為提交到下一版本用的已暫存)
step2 : 在專案目錄下新增或修改檔案
step3 : 告一個段落時提交一個專案新版本到Git本地端儲存庫
將需要提交的檔案標記為staged,then commit
若要使用GitHub來和其他人共享專案則需要以下指令:
(1)push:將本地端儲存庫的特定版本專案推到遠端儲存庫上整併
(2)pull:從遠端儲存庫將新版程式碼取回本地端儲存庫
(3)checkout:從本地端儲存庫放入工作目錄中
4.branch and merge
對Git而言開發的專案版本並無master(主幹與branch(分支)的差別,每個分支都是等價關係,是開發者自行來對各分支做命名,一般習慣將穩定版本稱為主幹,其他開發中的版本則稱作分支
指令:
branch:建立分支,可以將某個歷史版本複製一份,獨立成為另一個新的分支版本
merge:將兩個不同的分支版本合併到其中一個分支上
5.分版指令
clone: 把專案在遠端儲存庫上的所有內容複製到本地,建立起本機儲存庫及工作目錄
fork:把別人專案的遠端儲存庫內容複製一份到自己的遠端儲存庫
[範例] 看到有興趣的她專案可以執行fork指令,把別人專案的遠端儲存庫複製到自己的遠端儲存庫,再執行clone,把自己遠端儲存庫的整個專案的所有內容(包括各版本)複製到本機端儲存庫
6.同步指令
push:將自己目前本機端儲存庫的相關檔案上傳到遠端儲存庫
pull:把遠端儲存庫的最新版本下載至自己的本機端,並將遠端分支合併到本地分支
<比較> pull並不像clone會下載完整專案各版本內容
pull request:主動要求第三方開發者納入自己開發的程式,將本地端儲存庫上的程式碼整併到對方的儲存庫上
[範例] A成員可透過pull request要求B成員將A成員修改後的程式碼併入B成員的開發專案中
7. git bash 指令
git touch XXX :若沒有XXX這個檔案則會創一個出來,若有則是更改timestamp
git add XXX: 將XXX列為staged狀態
git add . : 把所有剛剛修改過或新增加的檔案加進stage狀態
git commit : 把staged的檔案都commit
git commit -m "message": 把staged的檔案都commit,"message"為給這次commit的訊息
資料來源: http://www.ithome.com.tw/news/95283
http://gogojimmy.net/2012/01/17/how-to-use-git-1-git-basic/
另外可參考:
https://ihower.tw/git/basic.html
http://rubyist.marsz.tw/blog/2012-01-17/git-reset-and-revert-to-rollback-commit/
https://ihower.tw/git/remote.html
全站熱搜
留言列表