git(讀音為/gɪt/。)是乙個開源的分布式版本控制系統,可以有效、高速的處理從很小到非常大的專案版本管理。分布式相比於集中式的最大區別在於開發者可以提交到本地,每個開發者通過轉殖(git clone),在本地機器上拷貝乙個完整的git倉庫
git和其他版本控制系統如svn的乙個不同之處就是有暫存區的概念,暫存區是git非常重要的概念,弄明白了暫存區,就弄明白了git的很多操作到底幹了什麼。
為什麼git比其他版本控制系統設計得優秀,因為git跟蹤並管理的是修改,而非檔案。
你會問,什麼是修改?比如你新增了一行,這就是乙個修改,刪除了一行,也是乙個修改,更改了某些字元,也是乙個修改,刪了一些又加了一些,也是乙個修改,甚至建立乙個新檔案,也算乙個修改。
什麼是版本庫呢?版本庫又名倉庫,英文名repository,你可以簡單理解成乙個目錄,這個目錄裡面的所有檔案都可以被git管理起來,每個檔案的修改、刪除,git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以「還原」。
1:yum install git 安裝git
2:git config --global user.name "your name"
git config --global user.email "[email protected]"
3:mkdir learngit 建立個人倉庫,即工作區
4:git init 把新建立的目錄變成git可以管理的倉庫,工作區有乙個隱藏目錄.git,是git的版本庫。
git的版本庫里最重要的就是稱為stage(或者叫index)的暫存區,還有git為我們自動建立的第乙個分支master,以及指向master的乙個指標叫head
5:git add readme.txt 告訴git把檔案新增到倉庫,實際是將檔案內容儲存到暫存區。
6:git commit -m "the first commit" 告訴git把檔案提交到倉庫,-m 後面是本次提交的說明,可以是任意內容,當然最好是有意義,這樣你就能從歷史記錄裡方便地找到改動記錄。
7:git status 檢視倉庫當前的狀態,執行命令後會看到,readme.txt被修改過了,但還沒有準備提交的修改。
$ git status# on branch master
# changes not staged for commit:
# (use "git add
<
file
>
..." to update what will be committed)
# (use "git checkout --
<
file
>
..." to discard changes in working directory)
## modified:readme.txt(此處顯示的是內容發生過變動過且未提交的檔案)
#no changes added to commit (use "git add" and/or "git commit -a")
8:git diff 檢視檔案對比修改的內容,git diff head --readme.txt 檢視某個特定檔案的修改內容。
把檔案往git版本庫里新增的時候,是分兩步執行的:
第一步是用 git add 把檔案新增進去,實際上就是把檔案修改新增到暫存區
第二步是用 git commit 提交更改,實際上就是把暫存區的所有內容提交到當前分支。
提交後,用 git diff head -- readme.txt 命令可以檢視工作區和版本庫裡面最新版本的區別
9:git log 命令顯示從最近到最遠的提交日誌,如果嫌輸出資訊太多,看得眼花繚亂的,可以試試加上 --pretty=oneline 引數
10: git reset --hard commit_id (版本號) 恢復到指定的以前的版本
git必須知道當前版本是哪個版本,在git中,用head
表示當前版本,也就是最新的提交3628164...882e1e0
(注意我的提交id和你的肯定不一樣),上乙個版本就是head^(大寫),
上上乙個版本就是head^^
,當然往上100個版本寫100個^
比較容易數不過來,所以寫成head~100
。
版本號沒必要寫全,前幾位就可以了,git會自動去找。當然也不能只寫前一兩位,因為git可能會找到多個版本號,就無法確定是哪乙個了。
11: git reflog 檢視命令歷史,以便確定要回到未來的哪個版本。
12: git checkout -- file 可以丟棄工作區的修改,也可恢復已刪除的檔案。
把readme.txt
檔案在工作區的修改全部撤銷,這裡有兩種情況:
一種是readme.txt
自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態
一種是readme.txt
已經新增到暫存區後,又作了修改,現在,撤銷修改就回到剛新增到暫存區後的狀態
總之,就是讓這個檔案回到最近一次git commit
或git add
時的狀態。
另外也可以恢復從本地工作區中誤刪除版本庫中存在的檔案。git checkout
其實是用版本庫里的版本替換工作區的版本,無論工作區是修改還是刪除,都可以「一鍵還原」。
13: git reset head file 可以把暫存區的修改撤銷掉(unstage),重新放回工作區。我們用head
時,表示最新的版本
14: git rm file 從版本庫中刪除該檔案,並且git commit
Git 使用方法
git 常用命令 git init here 建立本地倉庫 repository 將會在資料夾下建立乙個 git 資料夾,git 資料夾裡儲存了所有的版本資訊 標記等內容 git remote add origin git github.com winter1991 helloworld.git 把...
Git 使用方法
git 常用命令 git init here 建立本地倉庫 repository 將會在資料夾下建立乙個 git 資料夾,git 資料夾裡儲存了所有的版本資訊 標記等內容 git remote add origin git github.com winter1991 helloworld.git 把...
Git使用方法
最近專案用到了git,開始,覺得非常難用,後來,也就習慣了。現在,簡單概括下git的常用操作吧,後續的話我會繼續補充的。1 clone 的檢出,使用git轉殖,可以使用圖形化介面,也可以使用命令。2 pull 使用這個命令,可能用svn的人不太習慣,但可以放心,你選擇單個檔案,或者這個專案來pull...