GIT命令集

 

what's the GIT?

  GIT是一款免費、開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目。git

Git的功能特性:
從通常開發者的角度來看,git有如下功能:
  一、從服務器上克隆完整的Git倉庫(包括代碼和版本信息)到單機上。
  二、在本身的機器上根據不一樣的開發目的,建立分支,修改代碼。
  三、在單機上本身建立的分支上提交代碼。
  四、在單機上合併分支。
  五、把服務器上最新版的代碼fetch下來,而後跟本身的主分支合併。
  六、生成補丁(patch),把補丁發送給主開發者。
  七、看主開發者的反饋,若是主開發者發現兩個通常開發者之間有衝突(他們之間能夠合做解決的衝突),就會要求他們先解決衝突,而後再由其中一我的提交。若是主開發者能夠本身解決,或者沒有衝突,就經過。
  八、通常開發者之間解決衝突的方法,開發者之間可使用pull 命令解決衝突,解決完衝突以後再向主開發者提交補丁。
 
從主開發者的角度(假設主開發者不用開發代碼)看,git有如下功能:
  一、查看郵件或者經過其它方式查看通常開發者的提交狀態。
  二、打上補丁,解決衝突(能夠本身解決,也能夠要求開發者之間解決之後再從新提交,若是是開源項目,還要決定哪些補丁有用,哪些不用)。
  三、向公共服務器提交結果,而後通知全部開發人員。
 
優勢:
  • 適合分佈式開發,強調個體。
  • 公共服務器壓力和數據量都不會太大。
  • 速度快、靈活。
  • 任意兩個開發者之間能夠很容易的解決衝突。
  • 離線工做。
缺點:
  • 資料少(起碼中文資料不多)。
  • 學習週期相對而言比較長。
  • 不符合常規思惟。
  • 代碼保密性差,一旦開發者把整個庫克隆下來就能夠徹底公開全部代碼和版本信息。

 

Git 與 SVN 區別點:算法

  • 一、GIT是分佈式的,SVN不是:這是GIT和其它非分佈式的版本控制系統,例如SVN,CVS等,最核心的區別。服務器

  • 二、GIT把內容按元數據方式存儲,而SVN是按文件:全部的資源控制系統都是把文件的元信息隱藏在一個相似.svn,.cvs等的文件夾裏。網絡

  • 三、GIT分支和SVN的分支不一樣:分支在SVN中一點不特別,就是版本庫中的另外的一個目錄。app

  • 四、GIT沒有一個全局的版本號,而SVN有:目前爲止這是跟SVN相比GIT缺乏的最大的一個特徵。ssh

  • 五、GIT的內容完整性要優於SVN:GIT的內容存儲使用的是SHA-1哈希算法。這能確保代碼內容的完整性,確保在遇到磁盤故障和網絡問題時下降對版本庫的破壞。分佈式

 

GIT基本命令

GIT配置svn

$git config --global user.name "自定製名字"
$git config --global user.email  "自定製郵箱"
$git init # 會生成一個git文件,用來追蹤管理版本庫

# 生成ssh key
mkdir ~/.ssh # 生成文件夾,若是已有該文件夾可跳過這一步
ssh-keygen -t rsa -C 郵箱
# 按三次回車,最後在.ssh文件夾下獲得id_rsa和id_rsa.pub兩個文件。
# id_rsa中的內容即是私鑰,id_rsa.pub中的內容即是公鑰。

 

 

 

GIT工做中用的命令學習

 

#提交代碼
$git add .# .表示全部,也能夠是指定文件的名字,將文件添加到暫存區
$git commit -m "描述信息" # 將文件從暫存區添加到當前分支(描述信息必定要好好寫)

#查看日誌(可用於版本回退)
$git log # 查看從最遠到最近的提交日誌
$git log --pretty = online # 簡化日誌
$git reset--hard 日誌中的字符串 # 版本回退到指定版本狀態
$git reflog # 記錄每一次命令

#查看狀態及「某個地方」(一般用於處理bug)
$git status # 查看狀態
$git  stash # 將當前工做區的代碼暫存到「某個地方」中,一般這是咱們要去處理緊急任務如解bug
$git stash pop # 從「某個地方」中取回原先的代碼
$git stash list # 查看「某個地方」的全部存儲記錄
$git stash apply 編號 # 取出指定編號至工做區
$git stash drop 編號 # 刪除指定編號
$git stash clear # 清空「某個地方」

#分支命令
$git branch 分支名 # 建立分支
$git branch # 查看當前所在分支
$git checkout 分支名 # 切換到指定分支
$git branch -d 分支名 # 刪除指定分支
$git push origin --delete 分支名 # 刪除遠程分支  

$git checkout -b 分支名 # 建立並切換到該分支
$git checkout -b 本地分支名x origin/遠程分支名x # 建立並切換到該分支,分支代碼與遠程分支x上代碼相同
$git merge 分支名 # 將分支名中的代碼與當前區域的代碼合併

#代碼下拉及上傳(master爲分支名)
$git pull origin master # 將代碼拉下來進行工做
$git push origin master # 工做完畢將代碼上傳至GIT 

#新電腦第一次使用時
$git clone add origin 目標庫地址 # 克隆目標庫
$git init # 會生成一個Git文件,用來跟蹤管理版本庫
$git remote add origin XXX # 建立遠程倉庫,XXX爲你的Git倉庫地址
$git pull origin master # 將代碼拉下來進行工做
$git push origin master # 工做完畢將代碼上傳至GIT 

 

 

 

其餘fetch

$git log --graph --pretty = online --abbrev--commit # 查看當前分支合併狀況
$git remote -v # 查看遠程倉庫信息

#打標籤
$git tag #查看標籤
$git tag 標籤名 # 打標籤
$git tag 標籤名 id # 給指定id打標籤
$git tag -a 標籤名 -m"描述信息" id # 給指定id打上加描述信息的標籤

#自定製
$git config --global alias.別名 真名 #給命令配置別名,更方便操做
$git config --global alias.last "log-1" #取別名,以後就能夠用$git last來查看最後一次提交的信息
相關文章
相關標籤/搜索