原始碼管理工具GIT
簡介:
git是一款開源的分散式版本控制工具
在世界上所有的分散式版本控制工具中,git是最快、最簡單、最流行的
- git的起源:
作者是Linux之父:Linux Benedict Torvalds
當初開發git僅僅是為了輔助Linux核心的開發(管理原始碼)
- git的現狀:
在國外已經非常普及,國內並未普及(正在慢慢普及)
越來越多的開源專案已經轉移到git
其他版本控制工具
- CVS
最早的開源、免費的集中式版本控制工具
自身設計有問題,會造成提交檔案不完整,版本庫會莫名其妙損壞的情況
- SVN
修正了CVS的一些穩定性問題,是目前用的最多的集中式版本庫控制工具
- ClearCase
收費的集中式版本控制工具,安裝比Windows還大,執行比蝸牛還慢
能用ClearCase的一般是世界500強,他們有個共同的特點就是財大氣粗或者人傻錢多
- VSS
微軟的集中式版本控制工具,整合在Visual Studio中
GIT和SVN的簡單對比
- 速度
在很多情況下,git的速度遠遠比SVN快
- 結構
SVN是集中式管理,GIT是分散式管理
分散式和集中式的最大區別在於:在分散式下 1.開發者可以本地提交 2.每個開發者機器上都有一個伺服器的資料庫
集中式版本控制
分散式版本控制
- 其他
SVN使用分支比較笨拙,git可以輕鬆擁有無限個分支
SVN必須聯網才能正常工作,git支援本地版本控制工作
舊版本的SVN會在每一個目錄置放一個.SVN,git只會在根目錄擁有一個.git
工作流程
- SVN
- GIT
工作原理
- 如果想了解git的工作原理,有幾個核心概念必須知道
工作庫(Working Directory):倉庫資料夾裡除.git目錄以外的內容
版本庫(Repository):.git目錄,用於儲存記錄版本資訊
暫存區(stage)
分支(master):git自動建立的第一個分支
HEAD指標:用於指向當前分支
- git add和git commit 的原理
git add:把檔案修改新增到暫存區
git commit: 把暫存區的所有內容提交到當前的分支
(一)
(二)
(三)
GIT使用環境
- 多人開發時需要一個共享版本庫,單人開發初始化一個本地庫
共享版本庫的形式:
本地共享庫: 資料夾/U盤/硬碟
遠端共享庫: 自己搭建git伺服器/託管到第三方平臺(例如github,oschina)
- 無論是單人開發還是多人開發,客戶端都可以使用命令列或者圖形介面使用git
SourceTree
GitHub
Xcode
雖然整合較好,但是隻能做一些常用的簡單操作,複雜操作還要使用命令列
git常用指令
git help:git指令幫助手冊
檢視其它指令的做法:git help 其它指令
git init:初始化本地倉庫
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 - - 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伺服器:費時費力
在GitHub上託管專案:公開專案免費、私有專案收費,很多第三方開源專案
在oschina上託管專案:完全免費,在國內訪問速度快(推薦使用)
搭建GitHub遠端倉庫
- 配置 SSH Key
開啟“Account Settings”
點選 “SSH keys”
配置Mac的SSH Key的公鑰(用於限制提交)
- 新增倉庫
拷貝倉庫地址,用於下載到本地
- 刪除倉庫
如果想刪除倉庫,也很簡單
1、
2、
3、
搭建oschina遠端倉庫
- 建立倉庫
1、
2、
3、
4、倉庫地址
5、新增專案組成員
隨後需要在終端 設定git的郵箱和使用者名稱,不然沒有訪問倉庫的許可權
- 刪除倉庫