Git User guide
A.1安裝和初始化
Setup and Initialization
在使用Git之前,須要先進行配置。在使用一個新的版本庫之前,須要先初始化。本節介紹與Git設置和初始化相關的命令。
配置全局用戶名和電子郵件地址
prompt>git config --global user.name "Your Name"
prompt>git config --global user.email "[email protected]"
爲特定的版本庫配置用戶名和電子郵件地址
注意:你可以爲每個版本庫單獨設置用戶名和郵件地址。這使得用戶可在不同項目中使用不同的用戶名和/或不同的郵件地址。
prompt>cd /path/to/repo
prompt>git config user.name "Your Name"
prompt>git config user.email[email protected]
在命令行中使用不同顏色顯示不同內容
prompt>git config --global color.ui "auto"
初始化新版本庫
prompt>mkdir /path/to/repo
prompt>cd /path/to/repo
prompt>git init
Initialized empty Git repository in /path/to/repo/.git/
prompt>
... create file(s) for first commit ...
prompt>git add .
prompt>git commit -m 'initial import'
Created initial commit bdebe5c: initial import
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 <some file>
克隆版本庫
prompt>git clone <repository url>
Initialize repo/.git
Initialized empty Git repository in /work/<remote repository>/.git/
將目錄中的內容納入Git版本控制
prompt>cd /path/to/existing/directory
prompt>git init
Initialized empty Git repository in /path/to/existing/directory/.git/
prompt>git add .
prompt>git commit -m "initial import of some project"
在本地版本庫中設置遠程版本庫的別名
... from within the repository directory ...
prompt>git remote add <remote repository> <repository url>
A.2 日常操作
Normal Usage
本節列出Git日常操作命令,對應於第4章“添加與提交:Git基礎”(第41頁)。
添加新文件或暫存已有文件上的改動,然後提交
prompt>git add <some file>
prompt>git commit -m "<some message>"
暫存已有文件上的部分修改
注意:[...]表示可選參數。
prompt>git add -p [<some file> [<some file> [and so on]]]
選擇要提交的文本塊……
使用交互方式添加文件
prompt>git add -i
暫存已納入Git版本控制之下的文件的修改
prompt>git add -u [<some path> [<some path>]]
提交已納入Git版本控制之下的文件的所有修改
prompt>git commit -m "<some message>" -a
清除工作目錄樹中的修改
prompt>git checkout HEAD <some file> [<some file>]
取消已暫存但尚未提交的修改的暫存標識
prompt>git reset HEAD <some file> [<some file>]
修復上一次提交中的問題
改動相關文件,並暫存……
prompt>git commit -m "<some message>" --amend
修復上一次提交中的問題,並複用上次的提交註釋
prompt>git commit -C HEAD --amend
A.3 分支
Branches
分支是Git的強項之一。本節介紹關於分支的各個命令。詳細內容見第5章“理解和使用分支”(第55頁)。
列出本地分支
prompt>git branch
列出遠程分支
prompt>git branch -r
列出所有分支
prompt>git branch -a
基於當前分支(的末梢)創建新分支
prompt>git branch <new branch>
檢出另一條分支
prompt>git checkout <some branch>
基於當前分支創建新分支,同時檢出該分支
prompt>git checkout -b <new branch>
基於另一個起點,創建新分支
你可以從版本庫中的任何一個版本開始創建新分支。這個起始點可以用一條已有的分支名稱、一個提交名稱,或者一個標籤名稱來表達。
prompt>git branch <new branch> <start point>
創建同名新分支,覆蓋已有分支
prompt>git branch -f <some existing branch> [<start point>]
移動或重命名分支
只有當<new branch>不存在時
prompt>git checkout -m <existing branch name> <new branch name>
如果<new branch>已存在,就覆蓋它
prompt>git checkout -M <existing branch name> <new branch name>
把另一條分支合併到當前分支
prompt>git merge <some branch>
合併,但不提交
prompt>git merge --no-commit <some branch>
揀選合併,並且提交
prompt>git cherry-pick <commit name>
揀選合併,但不提交
prompt>git cherry-pick -n <commit name>
把一條分支上的內容壓合到另一條分支(上的一個提交)
prompt>git merge --squash <some branch>
刪除分支
僅當欲刪除的分支已合併到當前分支時
prompt>git branch -d <branch to delete>
不論欲刪除的分支是否已合併到當前分支
prompt>git branch -D <branch to delete>
A.4 歷史
History
這些命令用來顯示版本庫的歷史信息,包括代碼曾在哪裏、誰在何時做了什麼、修改的內容及其統計信息。詳見第6章“查詢Git歷史記錄”(第71頁)。
顯示全部歷史記錄
prompt>git log
顯示版本歷史,以及版本間的內容差異
prompt>git log -p
只顯示最近一個提交
prompt>git log -1
顯示最近的20個提交,以及版本間的內容差異
prompt>git log -20 -p
顯示最近6小時的提交
prompt>git log --since="6 hours"
顯示兩天之前的提交
prompt>git log --before="2 days"
顯示比HEAD(當前檢出分支的末梢)早3個提交的那個提交
prompt>git log -1 HEAD~3
或者……
prompt>git log -1 HEAD^^^
或者……
prompt>git log -1 HEAD~1^^
顯示兩個版本之間的提交
下面命令中的<start point>和<end point>可以是一個提交名稱、分支名稱、標籤名稱,或者它們的混合。
prompt>git log <start point>...<end point>
顯示歷史,每個提交顯示一行,包括提交註釋的第一行
prompt>git log --pretty=oneline
顯示改動行數統計
prompt>git log --stat
顯示改動文件的名稱和狀態
prompt>git log --name-status
顯示當前工作目錄樹和暫存區間的差別
prompt>git diff
顯示暫存區和版本庫間的差別
prompt>git diff --cached
顯示工作目錄樹和版本庫間的差別
prompt>git diff HEAD
顯示工作目錄樹與版本庫中某次提交版本之間的差別
<start point>可以是一個提交名稱、分支名稱或標籤名稱。
prompt>git diff <start point>
顯示版本庫中兩個版本之間的差別
prompt>git diff <start point> <end point>
顯示差別的相關統計
prompt>git diff --stat <start point> [<end point>]
顯示文件中各個部分的修改者及相關提交信息
prompt>git blame <some file>
顯示文件中各個部分的修改者及相關提交信息,包括在該文件中複製、粘貼和移動內容等方面的情況。
prompt>git blame -M <some file>
顯示文件中各部分的修改者及相關提交信息,包括在文件間移動內容方面的情況
prompt>git blame -C -C <some file>
顯示歷史時,顯示覆制和粘貼信息
prompt>git log -C -C -p -1 <some point>
A.5 遠程版本庫
Remote Repositories
開發人員之間通過遠程版本庫來共享工作成果,相互協作。本節介紹關於這些操作的命令,詳見第7章“與遠程版本庫協作”(第91頁)。
克隆遠程版本庫
prompt>git clone <some repository>
克隆遠程版本庫,但只下載其中最近200個提交的歷史記錄
prompt>git clone --depth 200 <some repository>
在本地版本庫中設置遠程版本庫的別名
prompt>git remote add <remote repository> <repository url>
顯示遠程分支
prompt>git branch -r
基於遠程分支創建本地分支
prompt>git branch <new branch> <remote branch>
基於遠程標籤創建本地分支
prompt>git branch <new branch> <remote tag>
從別名爲“origin”的遠程版本庫中取來修改變化,但不合併到本地分支
prompt>git fetch
從任意的遠程版本庫中取來修改變化,但不合併到本地分支
prompt>git fetch <remote repository>
從任意的遠程版本庫中取來修改變化,併合併到當前檢出的本地分支
prompt>git pull <remote repository>
從別名爲“origin”的遠程版本庫中取來修改變化,併合併到當前檢出的本地分支
prompt>git pull
把修改變化從本地分支推入遠程版本庫
prompt>git push <remote repository> <local branch>:<remote branch>
把修改變化從本地分支推入遠程版本庫中同名分支
prompt>git push <remote repository> <local branch>
把修改變化從本地新建分支推入遠程版本庫
prompt>git push <remote repository> <local branch>
把修改變化推入別名爲“origin”的遠程版本庫
當遠程版本庫中已有同名分支時,這個命令會推入本地分支到遠程版本庫對應的分支中。如果遠程版本庫中尚無同名分支,則須使用git push <repository name> <local branch>。
prompt>git push
在遠程版本庫中刪除分支
prompt>git push <remote repository> :<remote branch>
在本地版本庫中刪除所有遠程版本庫中已不存在的分支
prompt>git remote prune <remote repository>
在本地版本庫中刪除某個遠程版本庫的簡稱,以及該遠程版本庫相關的分支
prompt>git remote rm <remote repository>
A.6 連接Git和SVN
Git to SVN Bridge
Git可以讀取Subversion版本庫中的數據,並把本地修改發送回Subversion版本庫。這是Git區別於其他版本控制工具的必殺技之一。相關詳細介紹請參見第10章“遷移到Git”(第131頁)。
克隆SVN版本庫的全部內容
prompt>git svn clone <svn repository>
克隆具有標準結構的SVN版本庫
下面命令適用於克隆標準結構的SVN數據庫,也就是說,主幹命名爲trunk,其他分支都存放於branches目錄下,標籤都存放於tags目錄下。
prompt>git svn clone -s <svn repository>
克隆非標準結構的SVN版本庫
prompt>git svn clone -T <trunk path> \
-b <branch path> \
-t <tag path> \
<svn repository>
克隆具有標準結構的SVN版本庫中的某個版本(比如第2321版)
prompt>git svn clone -s -r 2321
克隆具有標準結構的SVN版本庫,並對SVN中的分支添加前綴
prompt>git svn clone -s --prefix svn/ <svn repository>
從上游SVN版本庫中獲得更新的內容,並依此在本地Git版本庫中變基本地分支
prompt>git svn rebase
把修改變化推回上游SVN版本庫
prompt>git svn dcommit
列出所有將推入上游SVN版本庫的提交
prompt>git svn dcommit -n
顯示SVN歷史記錄
prompt>git svn log
顯示文件中各個部分的SVN的修改者及相關提交信息
prompt>git svn blame <some file>
Setup and Initialization
在使用Git之前,須要先進行配置。在使用一個新的版本庫之前,須要先初始化。本節介紹與Git設置和初始化相關的命令。
配置全局用戶名和電子郵件地址
prompt>git config --global user.name "Your Name"
prompt>git config --global user.email "[email protected]"
爲特定的版本庫配置用戶名和電子郵件地址
注意:你可以爲每個版本庫單獨設置用戶名和郵件地址。這使得用戶可在不同項目中使用不同的用戶名和/或不同的郵件地址。
prompt>cd /path/to/repo
prompt>git config user.name "Your Name"
prompt>git config user.email[email protected]
在命令行中使用不同顏色顯示不同內容
prompt>git config --global color.ui "auto"
初始化新版本庫
prompt>mkdir /path/to/repo
prompt>cd /path/to/repo
prompt>git init
Initialized empty Git repository in /path/to/repo/.git/
prompt>
... create file(s) for first commit ...
prompt>git add .
prompt>git commit -m 'initial import'
Created initial commit bdebe5c: initial import
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 <some file>
克隆版本庫
prompt>git clone <repository url>
Initialize repo/.git
Initialized empty Git repository in /work/<remote repository>/.git/
將目錄中的內容納入Git版本控制
prompt>cd /path/to/existing/directory
prompt>git init
Initialized empty Git repository in /path/to/existing/directory/.git/
prompt>git add .
prompt>git commit -m "initial import of some project"
在本地版本庫中設置遠程版本庫的別名
... from within the repository directory ...
prompt>git remote add <remote repository> <repository url>
A.2 日常操作
Normal Usage
本節列出Git日常操作命令,對應於第4章“添加與提交:Git基礎”(第41頁)。
添加新文件或暫存已有文件上的改動,然後提交
prompt>git add <some file>
prompt>git commit -m "<some message>"
暫存已有文件上的部分修改
注意:[...]表示可選參數。
prompt>git add -p [<some file> [<some file> [and so on]]]
選擇要提交的文本塊……
使用交互方式添加文件
prompt>git add -i
暫存已納入Git版本控制之下的文件的修改
prompt>git add -u [<some path> [<some path>]]
提交已納入Git版本控制之下的文件的所有修改
prompt>git commit -m "<some message>" -a
清除工作目錄樹中的修改
prompt>git checkout HEAD <some file> [<some file>]
取消已暫存但尚未提交的修改的暫存標識
prompt>git reset HEAD <some file> [<some file>]
修復上一次提交中的問題
改動相關文件,並暫存……
prompt>git commit -m "<some message>" --amend
修復上一次提交中的問題,並複用上次的提交註釋
prompt>git commit -C HEAD --amend
A.3 分支
Branches
分支是Git的強項之一。本節介紹關於分支的各個命令。詳細內容見第5章“理解和使用分支”(第55頁)。
列出本地分支
prompt>git branch
列出遠程分支
prompt>git branch -r
列出所有分支
prompt>git branch -a
基於當前分支(的末梢)創建新分支
prompt>git branch <new branch>
檢出另一條分支
prompt>git checkout <some branch>
基於當前分支創建新分支,同時檢出該分支
prompt>git checkout -b <new branch>
基於另一個起點,創建新分支
你可以從版本庫中的任何一個版本開始創建新分支。這個起始點可以用一條已有的分支名稱、一個提交名稱,或者一個標籤名稱來表達。
prompt>git branch <new branch> <start point>
創建同名新分支,覆蓋已有分支
prompt>git branch -f <some existing branch> [<start point>]
移動或重命名分支
只有當<new branch>不存在時
prompt>git checkout -m <existing branch name> <new branch name>
如果<new branch>已存在,就覆蓋它
prompt>git checkout -M <existing branch name> <new branch name>
把另一條分支合併到當前分支
prompt>git merge <some branch>
合併,但不提交
prompt>git merge --no-commit <some branch>
揀選合併,並且提交
prompt>git cherry-pick <commit name>
揀選合併,但不提交
prompt>git cherry-pick -n <commit name>
把一條分支上的內容壓合到另一條分支(上的一個提交)
prompt>git merge --squash <some branch>
刪除分支
僅當欲刪除的分支已合併到當前分支時
prompt>git branch -d <branch to delete>
不論欲刪除的分支是否已合併到當前分支
prompt>git branch -D <branch to delete>
A.4 歷史
History
這些命令用來顯示版本庫的歷史信息,包括代碼曾在哪裏、誰在何時做了什麼、修改的內容及其統計信息。詳見第6章“查詢Git歷史記錄”(第71頁)。
顯示全部歷史記錄
prompt>git log
顯示版本歷史,以及版本間的內容差異
prompt>git log -p
只顯示最近一個提交
prompt>git log -1
顯示最近的20個提交,以及版本間的內容差異
prompt>git log -20 -p
顯示最近6小時的提交
prompt>git log --since="6 hours"
顯示兩天之前的提交
prompt>git log --before="2 days"
顯示比HEAD(當前檢出分支的末梢)早3個提交的那個提交
prompt>git log -1 HEAD~3
或者……
prompt>git log -1 HEAD^^^
或者……
prompt>git log -1 HEAD~1^^
顯示兩個版本之間的提交
下面命令中的<start point>和<end point>可以是一個提交名稱、分支名稱、標籤名稱,或者它們的混合。
prompt>git log <start point>...<end point>
顯示歷史,每個提交顯示一行,包括提交註釋的第一行
prompt>git log --pretty=oneline
顯示改動行數統計
prompt>git log --stat
顯示改動文件的名稱和狀態
prompt>git log --name-status
顯示當前工作目錄樹和暫存區間的差別
prompt>git diff
顯示暫存區和版本庫間的差別
prompt>git diff --cached
顯示工作目錄樹和版本庫間的差別
prompt>git diff HEAD
顯示工作目錄樹與版本庫中某次提交版本之間的差別
<start point>可以是一個提交名稱、分支名稱或標籤名稱。
prompt>git diff <start point>
顯示版本庫中兩個版本之間的差別
prompt>git diff <start point> <end point>
顯示差別的相關統計
prompt>git diff --stat <start point> [<end point>]
顯示文件中各個部分的修改者及相關提交信息
prompt>git blame <some file>
顯示文件中各個部分的修改者及相關提交信息,包括在該文件中複製、粘貼和移動內容等方面的情況。
prompt>git blame -M <some file>
顯示文件中各部分的修改者及相關提交信息,包括在文件間移動內容方面的情況
prompt>git blame -C -C <some file>
顯示歷史時,顯示覆制和粘貼信息
prompt>git log -C -C -p -1 <some point>
A.5 遠程版本庫
Remote Repositories
開發人員之間通過遠程版本庫來共享工作成果,相互協作。本節介紹關於這些操作的命令,詳見第7章“與遠程版本庫協作”(第91頁)。
克隆遠程版本庫
prompt>git clone <some repository>
克隆遠程版本庫,但只下載其中最近200個提交的歷史記錄
prompt>git clone --depth 200 <some repository>
在本地版本庫中設置遠程版本庫的別名
prompt>git remote add <remote repository> <repository url>
顯示遠程分支
prompt>git branch -r
基於遠程分支創建本地分支
prompt>git branch <new branch> <remote branch>
基於遠程標籤創建本地分支
prompt>git branch <new branch> <remote tag>
從別名爲“origin”的遠程版本庫中取來修改變化,但不合併到本地分支
prompt>git fetch
從任意的遠程版本庫中取來修改變化,但不合併到本地分支
prompt>git fetch <remote repository>
從任意的遠程版本庫中取來修改變化,併合併到當前檢出的本地分支
prompt>git pull <remote repository>
從別名爲“origin”的遠程版本庫中取來修改變化,併合併到當前檢出的本地分支
prompt>git pull
把修改變化從本地分支推入遠程版本庫
prompt>git push <remote repository> <local branch>:<remote branch>
把修改變化從本地分支推入遠程版本庫中同名分支
prompt>git push <remote repository> <local branch>
把修改變化從本地新建分支推入遠程版本庫
prompt>git push <remote repository> <local branch>
把修改變化推入別名爲“origin”的遠程版本庫
當遠程版本庫中已有同名分支時,這個命令會推入本地分支到遠程版本庫對應的分支中。如果遠程版本庫中尚無同名分支,則須使用git push <repository name> <local branch>。
prompt>git push
在遠程版本庫中刪除分支
prompt>git push <remote repository> :<remote branch>
在本地版本庫中刪除所有遠程版本庫中已不存在的分支
prompt>git remote prune <remote repository>
在本地版本庫中刪除某個遠程版本庫的簡稱,以及該遠程版本庫相關的分支
prompt>git remote rm <remote repository>
A.6 連接Git和SVN
Git to SVN Bridge
Git可以讀取Subversion版本庫中的數據,並把本地修改發送回Subversion版本庫。這是Git區別於其他版本控制工具的必殺技之一。相關詳細介紹請參見第10章“遷移到Git”(第131頁)。
克隆SVN版本庫的全部內容
prompt>git svn clone <svn repository>
克隆具有標準結構的SVN版本庫
下面命令適用於克隆標準結構的SVN數據庫,也就是說,主幹命名爲trunk,其他分支都存放於branches目錄下,標籤都存放於tags目錄下。
prompt>git svn clone -s <svn repository>
克隆非標準結構的SVN版本庫
prompt>git svn clone -T <trunk path> \
-b <branch path> \
-t <tag path> \
<svn repository>
克隆具有標準結構的SVN版本庫中的某個版本(比如第2321版)
prompt>git svn clone -s -r 2321
克隆具有標準結構的SVN版本庫,並對SVN中的分支添加前綴
prompt>git svn clone -s --prefix svn/ <svn repository>
從上游SVN版本庫中獲得更新的內容,並依此在本地Git版本庫中變基本地分支
prompt>git svn rebase
把修改變化推回上游SVN版本庫
prompt>git svn dcommit
列出所有將推入上游SVN版本庫的提交
prompt>git svn dcommit -n
顯示SVN歷史記錄
prompt>git svn log
顯示文件中各個部分的SVN的修改者及相關提交信息
prompt>git svn blame <some file>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.