本系列基於pro git介紹如何使用git進行源**管理,以及後期如何使用git進行專案管理。
系列初步目錄如下:
1. git基本概念
2. git分支操作
後續待定。
git的歷史就不在這裡進行介紹了,網上隨處都可以找到,以下是在使用git的時候的一些基本概念和方法
git有三種狀態,檔案可能處於其中之一:已提交(committed)、已修改(modified)和已暫存(staged).已提交表示資料已經安全的儲存在本地資料庫中。已修改表示已經修改了檔案,但還沒有儲存在資料庫中。已暫存表示對乙個已修改檔案的當前版本做了標記,使之包含現在下次提交的快照中。
由此引入git專案的三個工作區域的概念:git倉庫、工作目錄以及暫存區域
初次執行git之前的配置
通過git自帶的git config命令來完成git的初始化工作,配置主要儲存在三個不同位置
/ect/gitconfig檔案:包含系統上每乙個使用者及倉庫的通用配置,如果使用--system選項時,就會從此檔案讀寫配置變數
~/.gitcongig或~/.config/git/config檔案:只針對當前使用者,可以使用--global選項讀寫配置變數
當前使用倉庫的git目錄中的config檔案(就是.git/config檔案):針對該倉庫
配置使用者資訊
git config --global user.name "john doe"git config --global user.email [email protected]
檢查配置資訊
git config --list檢視git的所有配置資訊或是使用git config 來檢視特定的資訊
初始化倉庫
git init
向倉庫中新增檔案並提交
1 git add *.c2git add readme
3 git commit -m "
initial project
"
記錄更新到倉庫
使用git的時候檔案的生命週期如下:
檢查當前檔案狀態
1 git status
跟蹤新檔案
git add 檔名 此時檔案處於stage狀態
暫存已修改的檔案
git add 已修改的檔案, 此時檔案處於stage狀態
恢復處於modified狀態的檔案
git checkout — 《檔名》 會將已經修改的檔案但是並沒有提交到緩衝區的檔案重置為原來的狀態
將處於緩衝區的檔案重置到工作區
git reset head 《檔名》 或是 git reset 《檔名》
使用忽略檔案 .gitignore,具體規則如下:
乙個.gitignore檔案的例子:
# no .a file*.a
#but do track lib.a, even though you』re ignoring .a files above
!lib.a
# only ignore todo file in the currency directory, not subdir /todo
/todo
#ignore all files in the build/ dictionary
build/
#ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
#ignore all .pdf files in the doc/ directory
dic/**/*.pdf
git diff命令比較的是工作目錄中當前檔案和暫存區域之間的差異,也就是修改之後還沒有暫存起來的內容的變化。若要檢視已暫存的將要新增到下次提交的內容,可以使用git diff--cached命令或是git diff —staged
跳過使用暫存區域
在使用git commit進行提交修改的時候,可以使用命令引數-a從而跳過將修改提交到暫存區,直接提交到版本庫中,從而省略git add的過程
檢視提交歷史
通過使用git log命令可以檢視之間提交的歷史,使用-p引數顯示每次提交的差異。另外乙個常用的選項是git log —pretty=oneline將每個提交都在一行的形式進行顯示。下面是git log的常用選項
選項說明
-p按補丁形式顯示每個更新之間的差異
--stat
顯示每次更新的檔案修改統計資訊
--shortstat
只顯—stat中最後的行數修改新增移除統計
--name-only
僅在提交資訊後顯示已修改的檔案清單
--name-status
顯示新增、修改、刪除的檔案清單
--abbrev-commit
僅顯示sha-1的前幾個字元,而非所有的40字元
--relative-date
使用較短的相對時間顯示
--graph
顯示ascii圖形便是德分支合併歷史
--pretty
使用其他格式顯示歷史提交資訊。可用的選項包括online、short、full、fuller和format
撤銷操作
當提交完成之後發現漏掉檔案沒有提交或者提交資訊寫錯了,可以使用git commit —amend選項的命令嘗試重新提交
git commit -m 「init repo」git add forgotten_file
git commit —amend
最終只會有乙個提交,第二次提交將替換第一次的提交
標籤操作
列出現在已有的標籤: git tag. 可以使用特定的模式來檢視特定的標籤,例如:git tag -l 「v1.1」
git使用兩種主要標籤:輕量標籤(lightweight)和附註標籤(annotated),乙個輕量標籤只是一次提交的引用,附註標籤是儲存在git資料庫中的乙個物件,包含建立者,時間等資訊,因此推薦使用附註標籤。
使用git tag -a v1.4 -m 「my version 1.4」來建立附註標籤,使用命令git show來顯示標籤的相關資訊。直接使用git tag v1.4來建立輕量標籤。也可以對之前的某個提交打標籤,使用命令git tag -a v1.4 9fceb02
檢出標籤
使用命令git checkout -b [branchname] [tagname]在特定的標籤上建立乙個新分支
GIT基本概念
工作區是個工作目錄,實質上就是我們的在開發過程中對其進行新增 編輯的源 包括標頭檔案 原始檔和配置檔案 在工作區中有乙個隱藏檔案 git 它不屬於工作區,而是git版本庫。該檔案下包括很多其他檔案,其中重要的是暫存區 git index 物件庫 git objects 分支 master分支和其他分...
git 基本概念
理解git首先要對它自己的主要概念理解清楚,這個我看了一邊後又重新梳理了一邊思路,提取了幾個自己很容易誤解和難區分的概念,在這裡詳細介紹下 工作區 就是你在電腦裡能看到的目錄,比如我的learngit資料夾就是乙個工作區。暫存區 工作區有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫。gi...
git基本概念
為了便於管理,git要求每個遠端主機都必須指定乙個主機名。git remote命令就用於管理主機名。不帶選項的時候,git remote命令列出所有遠端主機。一旦遠端主機的版本庫有了更新 git術語叫做commit 需要將這些更新取回本地,這時就要用到git fetch命令。預設情況下,git fe...