什麼是git?
git是一款開源的分佈式版本控制工具
在世界上全部的分佈式版本控制工具中,git是最快、最簡單、最流行的
git的起源
做者是Linux之父:Linus Benedict Torvalds
當初開發git僅僅是爲了輔助Linux內核的開發(管理源代碼)
git的現狀
在國外已經很是普及,國內並未普及(在慢慢普及)
愈來愈多的開源項目已經轉移到git
git
其餘版本控制工具
CVS
最先的開源、免費的集中式版本控制工具
自身設計有問題,會形成提交文件不完整,版本庫莫名其妙損壞的狀況
SVN
修正了CVS的一些穩定性問題,是目前用得最多的集中式版本庫控制工具
ClearCase
收費的集中式版本控制工具,安裝比Windows還大,運行比蝸牛還慢
能用ClearCase的通常是世界500強,他們有個共同的特色是財大氣粗或者人傻錢多
VSS
微軟的集中式版本控制工具,集成在Visual Studio中
集中式版本控制
github
分佈式版本控制
數據庫
git和SVN的簡單對比
速度
在不少狀況下,git的速度遠遠比SVN快
結構
SVN是集中式管理,git是分佈式管理
其餘
SVN使用分支比較笨拙,git能夠輕鬆擁有無限個分支
SVN必須聯網才能正常工做,git支持本地版本控制工做
舊版本的SVN會在每個目錄置放一個.svn,git只會在根目錄擁有一個.git
SVN的工做流程
vim
git的工做流程
服務器
分佈式和集中式的最大區別在於:在分佈式下
開發者能夠本地提交
每一個開發者機器上都有一個服務器的數據庫
擁有一個本地的代碼倉庫app
使用git
跟SVN同樣,你能夠經過命令行敲指令或者圖形界面客戶端使用git
在Mac上,比較好用的git圖形界面客戶端有
SourceTree
下載地址:http://www.sourcetreeapp.com/download/
GitHub
下載地址:https://mac.github.com
不過它是專門爲GitHub網站而設計的
Xcodessh
git經常使用指令
git help :git指令幫助手冊
查看其餘指令的作法:git help 其餘指令
git config :git的配置信息相關(修改的是.git/config文件)
配置用戶名:git config 「user.name」 用戶名(用於跟蹤修改記錄)
配置郵箱:git config 「user.email」 郵箱(用於多人開發間的溝通)
查看配置信息:git config –l
編輯配置信息:git config –e(用vim編輯,:wq是退出vim編輯器)
設置指令的別名:git config alias.別名 原指令名稱
設置帶參數指令的別名:git config alias.別名 「原指令名稱 參數」
將此設置應用到整個系統中:git config ––gloabal
git status :查文件的狀態
查看某個文件的狀態:git status 文件名
查看當前路徑全部文件的狀態:git status
git log :查看文件的修改日誌
查看某個文件的修改日誌:git log 文件名
查看當前路徑全部文件的修改日誌:git log
用一行的方式查看簡單的日誌信息:git log ––pretty=oneline
查看最近的N次修改:git log –N(N是一個整數)
git diff :查看文件最新改動的地方
查看某個文件的最新改動的地方:git diff 文件名
查看當前路徑全部文件最新改動的地方:git diff
git init :初始化一個空的本地倉庫,生成一個.git目錄,用於維護版本信息
在當前路徑初始化倉庫:git init
在其餘路徑初始化倉庫:git init 倉庫路徑
git add :將工做區的文件保存到暫緩區
保存某個文件到暫緩區:git add 文件名
保存當前路徑的全部文件到暫緩區:git add .(注意,最後是一個點 . )
git commit :將暫緩區的文件提交到當前分支
提交某個文件到分支:git commit -m 」註釋」 文件名
保存當前路徑的全部文件到分支:git commit -m 」註釋」
git reset :版本回退(建議加上––hard參數,git支持無限次後悔)
回退到上一個版本:git reset ––hard HEAD^
回退到上上一個版本:git reset ––hard HEAD^^
回退到上N個版本:git reset ––hard HEAD~N(N是一個整數)
回退到任意一個版本:git reset ––hard 版本號(版本號用7位便可)
git reflog :查看指令使用記錄(可以查看全部的版本號)
git rm:刪除文件(刪完以後要進行commit操做,才能同步到版本庫)
git clone:下載遠程倉庫到本地
下載遠程倉庫到當前路徑:git clone 倉庫的URL
下載遠程倉庫到特定路徑:git clone 倉庫的URL 存放倉庫的路徑
git pull:下載遠程倉庫的最新信息到本地倉庫
git push:將本地的倉庫信息推送到遠程倉庫
工做原理
若是想了解git的工做原理,有幾個核心概念必須知道
工做區(Working Directory):倉庫文件夾裏除.git目錄之外的內容
版本庫(Repository):.git目錄,用於存儲記錄版本信息
暫緩區(stage)
分支(master):git自動建立的第一個分支
HEAD指針:用於指向當前分支
git add和git commit的原理
git add :把文件修改添加到暫存區
git commit :把暫存區的全部內容提交到當前分支
編輯器
遠程倉庫
若是是多人團隊開發,最好仍是搭建一個遠程倉庫
搭建遠程倉庫的途徑
本身搭建一個git服務器:費時費力
在GitHub上託管項目:公開項目免費、私有項目收費,不少第三方開源項目
在oschina上託管項目:徹底免費,在國內訪問速度快(推薦使用)分佈式
搭建GitHub遠程倉庫 – 配置SSH Key
svn
查看ssh版本 $ ssh –v
打開終端,$ ssh-keygen 一路enter下。
在Mac上生成SSH Key(在終端輸入下面指令)
cd ~/.ssh
ssh-keygen -t rsa -C "你的郵箱地址」
而後一直敲回車
而後就會在~/.ssh目錄下生成SSK Key的祕鑰對
id_rsa :私鑰,不可泄露
id_rsa.pub :公鑰,能夠公開(將這個文件的內容粘貼到GitHub上)
利用cat指令能夠查看文件的內容
cat id_rsa.pub
拷貝倉庫地址,用於下載到本地
搭建GitHub遠程倉庫– 刪除倉庫
若是想刪除倉庫,也很簡單
搭建oschina遠程倉庫 –建立倉庫
註冊一個oschina賬號:https://git.oschina.net
搭建oschina遠程倉庫 –倉庫地址
搭建oschina遠程倉庫 – 建立倉庫
添加項目組成員
隨後須要在終端設置git的郵箱和用戶名,否則沒有訪問倉庫的權限
搭建oschina遠程倉庫 – 刪除倉庫