天天看點

源代碼管理工具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.每個開發者機器上都有一個伺服器的資料庫

集中式版本控制

源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT

分布式版本控制

源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT
  • 其他

SVN使用分支比較笨拙,git可以輕松擁有無限個分支

SVN必須聯網才能正常工作,git支援本地版本控制工作

舊版本的SVN會在每一個目錄置放一個.SVN,git隻會在根目錄擁有一個.git

工作流程

  • SVN
源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT
  • GIT
源代碼管理工具GIT

源代碼管理工具GIT
源代碼管理工具GIT

工作原理

  • 如果想了解git的工作原理,有幾個核心概念必須知道

工作庫(Working Directory):倉庫檔案夾裡除.git目錄以外的内容

版本庫(Repository):.git目錄,用于存儲記錄版本資訊

暫存區(stage)

分支(master):git自動建立的第一個分支

HEAD指針:用于指向目前分支

  • git add和git commit 的原理

git add:把檔案修改添加到暫存區

git commit: 把暫存區的所有内容送出到目前的分支

(一)

源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT

(二)

源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT

(三)

源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT

GIT使用環境

  • 多人開發時需要一個共享版本庫,單人開發初始化一個本地庫即可

共享版本庫的形式:

本地共享庫: 檔案夾/U盤/硬碟

遠端共享庫: 自己搭建git伺服器/托管到第三方平台(例如github,oschina)

  • 無論是單人開發還是多人開發,用戶端都可以使用指令行或者圖形界面使用git

SourceTree

下載下傳位址:http://www.sourcetreeapp.com/download/

GitHub

下載下傳位址:http://mac.github.com  (注:不過它是專門為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

注冊一個GitHub賬号:http://github.com

打開“Account Settings”

源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT

點選 “SSH keys”

源代碼管理工具GIT
源代碼管理工具GIT

配置Mac的SSH Key的公鑰(用于限制送出)

源代碼管理工具GIT

檢視ssh版本 $ ssh–v 打開終端,$ ssh-keygen一路enter下。 在Mac上生成SSHKey(在終端輸入下面指令) cd~/.ssh ssh-keygen-t rsa-C "你的郵箱位址” 然後一直敲回車 然後就會在~/.ssh目錄下生成SSKKey的秘鑰對 id_rsa :私鑰,不可洩露 id_rsa.pub :公鑰,可以公開(将這個檔案的内容粘貼到GitHub上) 利用cat指令可以檢視檔案的内容 cat id_rsa.pub

  • 添加倉庫
源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT

拷貝倉庫位址,用于下載下傳到本地

源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT
  • 删除倉庫

如果想删除倉庫,也很簡單

1、

源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT

2、

源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT

3、

源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT

搭建oschina遠端倉庫

  • 建立倉庫

1、

注冊一個oschina賬号:http://git.oschina.net

2、

源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT

3、

源代碼管理工具GIT
源代碼管理工具GIT

4、倉庫位址

源代碼管理工具GIT
源代碼管理工具GIT
源代碼管理工具GIT

5、添加項目組成員

源代碼管理工具GIT
源代碼管理工具GIT

   随後需要在終端 設定git的郵箱和使用者名,不然沒有通路倉庫的權限

  • 删除倉庫
源代碼管理工具GIT
源代碼管理工具GIT
git