天天看點

Git 指令清單

簡介 Introduction

Git 是一個分布式版本控制系統,最初由 Linus Torvalds 創作。Git 是用于 Linux 核心開發的版本控制工具,與 CVS、Subversion 等版本控制工具不同,它采用了分布式版本庫的做法,不需要伺服器端軟體,就可以運作版本控制、使得源代碼的釋出和交流變得極其友善。Git 的速度很快,這對于 Linux 核心這樣的大項目來說非常重要。Git 最為出色的是它的合并追蹤(Merge Tracing)功能。原本 Git 隻适用于 Linux/Unix 平台,但在 Windows 平台下的使用也已經相當成熟。

Git 的三種狀态和四個區域

三種狀态:

  • 已送出(committed)
  • 已修改(modified)
  • 已暫存(staged)

剛開始編輯檔案時,檔案處于**已修改(modified)**狀态,檔案在工作目錄。

  • 工作區:工作區是當克隆項目到本地後,項目所在的檔案夾
  • 暫存區:用于存儲工作區中添加上來的變更(新增、修改、删除)檔案的地方
  • 本地倉庫:用于存儲本地工作區和暫存區送出上來的變更過的檔案的地方
  • 遠端倉庫:把項目存儲在一個地方而不是某個人的電腦上,以便多人協同工作。

Git 常用指令

配置相關

git config --list                                  #顯示git配置
git config -e [--global]                          #編輯配置檔案
git config [--global] user.name "[name]"          #設定代碼送出時的使用者名
git config [--global] user.email "[email address]" #設定代碼送出時的郵箱      

代碼庫相關

git init          #在目前目錄下建立一個代碼庫
git clone [url]   #從目标位址下載下傳一個項目      

增删檔案相關

git add [file]                        #把指定檔案添加到暫存區
git add [dir]                         #把指定目錄添加到暫存區
git add *                             #把目前目錄的所有檔案添加到暫存區
git rm [file]                         #删除工作區檔案,并将這次删除放入暫存區
git mv [file-original] [file-renamed] #改名檔案,并将其放入暫存區      

送出相關

git commit [file] -m [message]       #送出暫存區指定檔案到倉庫
git commit -m [message]              #送出暫存區到倉庫
git commit -v                        #送出時顯示所有資訊差異
git commit -a                        #送出工作區自上次送出之後的變化,直接到倉庫區
git commit -amend [file]             #重做上一次送出,并包括指定檔案的新變化      

标簽相關

git tag                         #列出所有标簽
git tag [tag]                   #在目前送出建立一個标簽
git tag [tag] [commit]          #在指定送出建立一個标簽
git show [tag]                  #檢視标簽資訊
git push [remote] [tag]         #送出指定标簽
git push [remote] --tags        #送出所有标簽
git tag -d [tag]                #删除本地标簽      

檢視資訊相關

git log                    #顯示目前分支的版本曆史
git status                 #顯示有變更的檔案
git log --stat             #顯示送出曆史,以及每次送出發生變更的檔案
git log -S [keyword]       #根據關鍵詞搜尋送出曆史
git log -p [file]          #顯示指定檔案的每一次差異
git shortlog -sn           #顯示所有送出過的使用者
git diff                   #顯示工作區和暫存區的差異
git diff --cached [file]   #顯示暫存區和上一次送出的差異
git diff [first-branch]...[second-branch] #顯示兩次送出之間的差異
git show [commit]:[filename] #顯示某次送出時,某個檔案的内容
git reflog                 #顯示目前分支的最近幾次送出      

分支相關

git branch                  #列出所有本地分支
git branch -r               #列出所有遠端分支
git branch -a               #列出所有本地分支和遠端分支
git branch [branch-name]    #建立一個分支,但停留在目前分支
git checkout -b [branch]    #建立并切換到該分支
git checkout -              #切換到上一個分支
git merge [branch]          #合并指定分支到目前分支
git branch -d [branch-name] #删除指定分支
git push origin --delete [branch-name] #删除遠端分支      

遠端倉庫相關

git remote -v                     #顯示所有遠端倉庫
git remote show [remote]          #顯示指定遠端倉庫的資訊
git remote add [shortname] [url]  #增加并命名一個新的遠端倉庫
git push [remote] [branch]        #上傳本地指定分支到遠端倉庫
git remote add [remote] [url]     #把本地倉庫和遠端倉庫關聯
git pull [remote] [branch]        #取遠端倉庫的内容更新本地倉庫
git pull [remote] [branch] --allow-unrelated-histories #強行合并倉庫
git fetch [remote]                #下載下傳遠端倉庫的所有變動      
git