Git是開源的分佈式版本控制系統,能夠說是開發人員必備了,每一個程序員都應該掌握。這裏主要講Git的安裝與配置,工做區、暫存區、版本庫的概念以及經常使用的一些命令。git
Ubuntu下能夠運行如下命令安裝:sudo apt install git
,安裝成功後可查看Git版本:git --version
。程序員
Git 提供了一個叫作 git config 的工具,專門用來配置或讀取相應的工做環境變量。緩存
這些環境變量,決定了Git 在各個環節的具體工做方式和行爲。這些變量能夠存放在如下三個不一樣的地方:bash
git config -e --system
對配置文件進行配置。git config -e --global
對配置文件進行配置。git config -e
對配置文件進行配置。(Git的配置文件是INI格式的)分佈式
開始前,須要先配置用戶名和郵件地址:工具
git config --global user.name "your name"
git config --global user.email your_email
複製代碼
若是用了 --global 選項,那麼更改的配置文件就是位於你用戶主目錄下的那個,之後你全部的項目都會默認使用這裏配置的用戶信息。若是要在某個特定的項目中使用其餘名字或者電郵,只要去掉 --global 選項從新配置便可,新的設定保存在當前項目的 .git/config 文件裏。url
查看已有的配置信息:git config --list
。spa
理解Git是怎麼工做的,主要是要理解工做區、暫存區、版本庫這三個概念。3d
下面這個圖展現了工做區、版本庫中的暫存區和版本庫之間的關係: 版本控制
工做區-->暫存區 當對工做區修改(或新增)的文件執行 "git add" 命令時,暫存區的目錄樹被更新,同時工做區修改(或新增)的文件內容被寫入到對象庫中的一個新的對象中,而該對象的ID被記錄在暫存區的文件索引中。
暫存區-->版本庫 當執行提交操做(git commit)時,暫存區的目錄樹寫到版本庫(對象庫)中,master 分支會作相應的更新。即 master 指向的目錄樹就是提交時暫存區的目錄樹(這句話相對繞口一些,這裏以master分支爲例)。
git init
:使用當前目錄做爲Git倉庫git init <directory>
:使用指定目錄做爲Git倉庫git clone <repertory-url>
:克隆倉庫git clone <repertory-url> <directory>
:克隆到指定目錄git diff
:查看工做區的最新改動,即工做區與提交暫存區的差別git diff --cached
:查看已緩存的改動,即提交暫存區與版本庫中的差別git diff HEAD
:查看工做區與HEAD(當前工做分支)的差別git diff --stat
:顯示摘要而非整個 diff:HEAD :表明版本庫中最近一次提交
^ :指代父提交
HEAD^:表明當前提交的上一次提交
HEAD^^:以此類推......
git reset --hard HEAD^
:回退到上一次提交。完全撤銷最近的提交,工做區和暫存區都回退到上一次提交的狀態。git reset --hard <commit>
:回退到指定提交git reset --hard參數會進行完全回退,工做區、暫存區、版本庫內容一致,即回退到指定commit的那個狀態
git branch -a
git branch -d <BranchName>
: 刪除本地分支git push origin --delete <BranchName>
: 刪除遠程分支git add
:文件添加到緩存git add .
:添加項目的全部文件git status
:查看當前狀態git commit -m"註釋"
:將緩存區內容添加到倉庫