git是乙個開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的專案,也算是程式設計師必備技能了。
一般工作流程如下:
流程圖如下:
我們先來理解下git 工作區、暫存區和版本庫概念
關係圖如下:
圖中左側為工作區,右側為版本庫。在版本庫中標記為 "index" 的區域是暫存區(stage, index),標記為 "master" 的是 master 分支所代表的目錄樹。
圖中我們可以看出此時 "head" 實際是指向 master 分支的乙個"游標"。所以圖示的命令中出現 head 的地方可以用 master 來替換。
圖中的 objects 標識的區域為 git 的物件庫,實際位於 ".git/objects" 目錄下,裡面包含了建立的各種物件及內容。
當對工作區修改(或新增)的檔案執行 "git add" 命令時,暫存區的目錄樹被更新,同時工作區修改(或新增)的檔案內容被寫入到物件庫中的乙個新的物件中,而該物件的id被記錄在暫存區的檔案索引中。
當執行提交操作(git commit)時,暫存區的目錄樹寫到版本庫(物件庫)中,master 分支會做相應的更新。即 master 指向的目錄樹就是提交時暫存區的目錄樹。
當執行 "git reset head" 命令時,暫存區的目錄樹會被重寫,被 master 分支指向的目錄樹所替換,但是工作區不受影響。
當執行 "git rm --cached " 命令時,會直接從暫存區刪除檔案,工作區則不做出改變。
當執行 "git checkout ." 或者 "git checkout -- " 命令時,會用暫存區全部或指定的檔案替換工作區的檔案。這個操作很危險,會清除工作區中未新增到暫存區的改動。
當執行 "git checkout head ." 或者 "git checkout head " 命令時,會用 head 指向的 master 分支中的全部或者部分檔案替換暫存區和以及工作區中的檔案。這個命令也是極具危險性的,因為不但會清除工作區中未提交的改動,也會清除暫存區中未提交的改動。
git基本操作
git init
用 git init 在目錄中建立新的 git 倉庫。 你可以在任何時候、任何目錄中這麼做,完全是本地化的。
git clone
使用 git clone 拷貝乙個 git 倉庫到本地,讓自己能夠檢視該專案,或者進行修改。
git add
git add 命令可將該檔案新增到快取
git status
git status 以檢視在你上次提交之後是否有修改。 -s 引數,以獲得簡短的結果輸出。如果沒加該引數會詳細輸出內容。
git diff
執行 git diff 來檢視執行 git status 的結果的詳細資訊。
git diff 命令顯示已寫入快取與已修改但尚未寫入快取的改動的區別。git diff 有兩個主要的應用場景。
git commit
使用 git add 命令將想要快照的內容寫入快取區, 而執行 git commit 將快取區內容新增到倉庫中。
git 為你的每乙個提交都記錄你的名字與電子郵箱位址,所以第一步需要配置使用者名稱和郵箱位址。
git config --global user.name 'name'
git config --global user.email [email protected]
git reset head
git reset head 命令用於取消已快取的內容。
git rm
如果只是簡單地從工作目錄中手工刪除檔案,執行 git status 時就會在 changes not staged for commit 的提示。
要從 git 中移除某個檔案,就必須要從已跟蹤檔案清單中移除,然後提交。可以用以下命令完成此項工作
git mv
git mv 命令用於移動或重新命名乙個檔案、目錄、軟連線。
幾乎每一種版本控制系統都以某種形式支援分支。使用分支意味著你可以從開發主線上分離開來,然後在不影響主線的同時繼續工作。
有人把 git 的分支模型稱為"必殺技特性",而正是因為它,將 git 從版本控制系統家族裡區分出來。
建立分支命令:
git branch (branchname)
切換分支命令:
git checkout (branchname)
當你切換分支的時候,git 會用該分支的最後提交的快照替換你的工作目錄的內容, 所以多個分支不需要多個目錄。
合併分支命令:
git merge
你可以多次合併到統一分支, 也可以選擇在合併之後直接刪除被併入的分支。
列出分支基本命令:
git branch
沒有引數時,git branch 會列出你在本地的分支。
刪除分支命令:
git branch -d (branchname)
git基礎教程
在windows下安裝git軟體,安裝完之後開啟git bash 初始配置命令 git config global user.name name git config global user.email email address 這兩條對使用git倉庫的本機進行標識,因為我們可能在多台機器使用不同...
Git基礎教程
此部落格僅針對windows使用者 一,安裝git 1,配置自己的身份 命令列如下 git config global user.name tony 使用者名字 git config golbal user.email tony mail.com 使用者郵箱2,建立 庫 首先利用cd命令到你的專案下...
git基礎教程
git是一款分布式版本控制系統,方便 或者文件管理 存檔 還原恢復 同時它支援本地伺服器版本控制系統,一台電腦乙個伺服器。svn版本控制系統,需要 伺服器,然後如果網路存在問題,則不能同步版本到線上。設定你的git預設賬戶 git config global user.name xianweb gi...