在正式介紹git命令之前,先介紹一下git 的基本命令和操作,對git命令有乙個總體的認識
示例:從git 版本庫的初始化,通常有兩種方式:
1)git clone:這是一種較為簡單的初始化方式,當你已經有乙個遠端的git版本庫,只需要在本地轉殖乙份
例如:git clone git: some_project
上面的命令就是將'git:'這個url位址的遠端版本庫,完全轉殖到本地some_project目錄下
2)git init 和 git remote:這種方式稍微複雜一些,當你本地建立了乙個工作目錄,你可以進入這個目錄,使用'git init'命令進行初始化;git以後就會對該目錄下的檔案進行版本控制,這時候如果你需要將它放到遠端伺服器上,可以在遠端伺服器上建立乙個目錄,並把可訪問的url記錄下來,此時你就可以利用'git remote add'命令來增加乙個遠端伺服器端,
例如:git remote add origin git:
上面的命令就會增加url位址為'git: ',名稱為origin的遠端伺服器,以後提交**的時候只需要使用 origin別名即可
現在我們有了本地和遠端的版本庫,讓我們來試著用用git的基本命令:
git pull:
從其他的版本庫(既可以是遠端的也可以是本地的)將**更新到本地,例如:'git pull origin master'就是將origin這個版本庫的**更新到本地的master主枝,該功能類似於svn的update
git add:
git rm:
git commit:
提交當前工作空間的修改內容,類似於svn的commit命令,例如'git commit -m story #3, add user model',提交的時候必須用-m來輸入一條提交資訊,該功能類似於svn的commit
git push:
將本地commit的**更新到遠端版本庫中,例如'git push origin'就會將本地的**更新到名為orgin的遠端版本庫中
git log:
檢視歷史日誌,該功能類似於svn的log
git revert:
還原乙個版本的修改,必須提供乙個具體的git版本號,例如'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20',git的版本號都是生成的乙個雜湊值
上面的命令幾乎都是每個版本控制工具所公有的,下面就開始嘗試一下git獨有的一些命令:
git branch:
對分支的增、刪、查等操作,例如'git branch new_branch'會從當前的工作版本建立乙個叫做new_branch的新分支,'git branch -d new_branch'就會強制刪除叫做new_branch的分支,'git branch'就會列出本地所有的分支
git checkout:
git rebase:
用下面兩幅**釋會比較清楚一些,rebase命令執行後,實際上是將分支點從c移到了g,這樣分支也就具有了從c到g的功能
將當前的工作目錄完全回滾到指定的版本號,假設如下圖,我們有a-g五次提交的版本,其中c的版本號是 bbaf6fb5060b4875b18ff9ff637ce118256d6f20,我們執行了'git reset
bbaf6fb5060b4875b18ff9ff637ce118256d6f20'那麼結果就只剩下了a-c三個提交的版本
將當前未提交的工作存入git工作棧中,時機成熟的時候再應用回來,這裡暫時提一下這個命令的用法,後面在技巧篇會重點講解
git config:
利用這個命令可以新增、更改git的各種設定,例如'git config branch.master.remote origin'就將master的遠端版本庫設定為別名叫做origin版本庫,後面在技巧篇會利用這個命令個性化設定你的git,為你打造獨一無二的 git
git tag:
可以將某個具體的版本打上乙個標籤,這樣你就不需要記憶複雜的版本號雜湊值了,例如你可以使用'git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20'來標記這個被你還原的版本,那麼以後你想檢視該版本時,就可以使用 revert_version標籤名,而不是雜湊值了
git 之所以能夠提供方便的本地分支等特性,是與它的檔案儲存機制有關的。git儲存版本控制資訊時使用它自己定義的一套檔案系統儲存機制,在**根目錄下有乙個.git資料夾,會有如下這樣的目錄結構:
有幾個比較重要的檔案和目錄需要解釋一下:head檔案存放根節點的資訊,其實目錄結構就表示乙個樹型結構,git採用這種樹形結構來儲存版本資訊,那麼head就表示根;refs目錄儲存了你在當前版本控制目錄下的各種不同引用(引用指的是你本地和遠端所用到的各個樹分支的資訊),它有heads、remotes、stash、tags四個子目錄,分別儲存對不同的根、遠端版本庫、git棧和標籤的四種引用,你可以通過命令'git show-ref'更清晰地檢視引用資訊;logs目錄根據不同的引用儲存了日誌資訊。因此,git只需要**根目錄下的這乙個.git目錄就可以記錄完整的版本控制資訊,而不是像svn那樣根目錄和子目錄下都有.svn目錄。那麼下面就來看一下git與svn的區別吧
四、 git 與svn 比較
svn(subversion)是當前使用最多的版本控制工具。與它相比較,git
最大的優勢在於兩點:易於本地增加分支和分布式的特性
。下面兩幅圖可以形象的展示git與svn的不同之處:
1)本地增加分支
圖中git本地和伺服器端結構都很靈活,所有版本都儲存在乙個目錄中,你只需要進行分支的切換即可達到在某個分支工作的效果
而svn則完全不同,如果你需要在本地試驗一些自己的**,只能本地維護多個不同的拷貝,每個拷貝對應乙個svn伺服器位址
舉乙個實際的例子:
使用svn作為版本控制工具,當正在試圖增強乙個模組,工作做到一半,由於會改變原模組的行為導致**伺服器上許多測試的失敗,所以並沒有提交**。
這時候假如現在有乙個很緊急的bug需要處理, 必須在兩個小時內完成。我只好將本地的所有修改diff,並輸出成為乙個patch檔案,然後回滾有關當前任務的所有**,再開始修改bug的任務,等到修改好後,在將patch應用回來。前前後後要完成多個繁瑣的步驟,這還不計中間**發生衝突所要進行的工作量。
可是如果使用git, 我們只需要開乙個分支或者轉回到主分支上,就可以隨時開始bug修改的任務,完成之後,只要切換到原來的分支就可以優雅的繼續以前的任務。只要你願意,每乙個新的任務都可以開乙個分支,完成後,再將它合併到主分支上,輕鬆而優雅。
2)分布式提交
git 可以本地提交**,所以在上面的圖中,git有利於將乙個大任務分解,進行本地的多次提交
而svn只能在本地進行大量的一次性更改,導致將來合併到主幹上造成巨大的風險
3)日誌檢視
git 的**日誌是在本地的,可以隨時檢視
當然分布式並不是說用了git就不需要乙個**中心伺服器,如果你工作在乙個團隊裡,還是需要乙個伺服器來儲存所有的**的。
五、 總結
上面簡單介紹了git 的基本概念、一些常用命令和原理,大家也可以嘗試動手,在google code 或 github 上建立乙個自己的開源專案
GIT常用命令詳解
origin 只是預設遠端倉庫名 master 遠端分支名 設定 在.git config中設定 gitignore 指定要忽略的檔案 比如 快取不上傳 1 新建 庫 2 配置 顯示當前的git配置 git config list 編輯git配置檔案 git config e global 設定提交...
git常用命令詳解
檢視當前系統是否安裝有git版本管理工具 檢視提交歷史。如果想簡化顯示,可以加上 pretty oneline,git log pretty oneline 檢視當前版本庫的狀態 檢視遠端分支資訊,引數 v可以檢視詳細資訊 設定全域性版本庫的使用者名稱 設定全域性版本庫的郵件位址。因為git是分布式...
Git常用命令詳解
1.建立版本庫 git clone 轉殖遠端版本庫 git init 初始化本地版本庫 通過 ls ah 可以看到隱藏的.git目錄 2.修改和提交 新增檔案readme.txt 在專案的目錄下新建乙個readme.txt 注意不要使用windows自帶的筆記本,用notepad 新建 寫一行文字 ...