Git命令快速參考(使用git之附錄A)
1. 初始化
配置全局用戶名和電子郵件地址
git config --global user.name "Your Name"
git config --global user.email "
[email protected]"
可以為不用的版本庫(項目)單獨設置用戶名和郵件地址
cd /path/to/repo
git config user.name "you name"
git config user.email "
[email protected]"
在命令行中使用不同的顏色
git config --global color.ui "auto"
初始化新版本庫
mkdir /path/to/repo
cd /path/to/repo
git init
git add .
git commit -m "inital import"
克隆版本庫
git clone <repository url>
git clone http://git.oschina.net/oschina/git-osc.git
將目錄中的內容納入Git版本控制
cd /path/to/existing/directory
git init
git add .
git commit -m "inital import of some project."
在本地版本庫中設置遠程版本庫的別名
git remote add <remote repository> <repository url>
2. 日常操作
git add <some file>
git commit -m "<some file message>"
暫存已有文件上的部分修改
git add -p [<some file>[<some file>[and so on]]]
使用交互式添加文件
git add -i
暫存已納入Git版本控制之下的文件的修改
git add -u [<some path>[<some path>]]
提交納入Git版本控制之下的文件修改
git commit -m "some message" -a
清除工作目錄數的一些修改
git checkout HEAD <some file>[<some file>]
取消已暫存但尚未提交的暫存標識
git reset HEAD <some file>[<some file>]
修復上一次提交中的問題
修改文件並暫存
git commit -m "some message" --amend
修復上一次提交中的問題,並有上次的提交注釋
git commit -C HEAD --amend
3. 分支
列出本地分支
git branch
列出遠程分支
git branch -r
列出所有分支
git branch -a
基於當前分支(的末梢)創建新分支
git branch <new branch>
檢出另一條分支
git checkout <some branch>
基於當前分支創建新分支並檢出該分支
git checkout -b <new branch>
基於另一起點創建新分支
git branch <new branch> <start point>
創建同名新分支,覆蓋已有分支
git branch -f <some exitsing branch> [start point]
移動和重命名分支
git checkout -m <exitsing branch> <new branch name>
把另一條分支合並到當前分支
git merge <some branch>
命並但不提交
git merge --no-commit <some branch>
揀選合並並提交
git cherry-pick <commit name>
揀選合並但不提交
git cherry-pick -n <commit name>
把一打分支上的內容壓合(壓縮合並)到另一條分支(上一個提交)
git merge --squash <some branch>
刪除分支
git branch -d <branch to delete>
不論是否已合並都刪除某分支
git branch -D <branch to delete>
4. 歷史
顯示全部歷史
git log
顯示版本歷史以及版本間的內容差異
git log -p
只顯示最近3個提交
git log -3
顯示最近20個提交以及版本間的內容差異
git log -20 -p
顯示最近6小時的提交
git log --since="6 hours"
git log --before="2 days"
顯示HEAD(當前檢出分支的末梢)早3個提交的那個提交
git log -1 HEAD~3
git log -1 HEAD^^^或者git log -1 HEAD~1^^
顯示兩個版本之間的提交
git log <start point> <end point>
顯示歷史,每個提交顯示一行,包括提交的注釋的第一行
git log --pretty=oneline
顯示改動文件的名稱和狀態
git log --name-status
顯示當前工作目錄樹和暫存區間的差別
git diff
顯示暫存區和版本庫之間的差別
git diff --cached
顯示當前工作目錄樹和版本庫中某次版本之間的差別
git diff HEAD
顯示工作目錄與版本庫中某次提交版本之間的差別
git diff <start point>
顯示版本庫中兩個版本之間的差別
git diff <start point> <end point>
顯示差別相關的統計
git diff --stat <start point> <end point>
顯示文件中各個部分的修改者及相關提交信息
git blame <some file> 和git blame -M <some file>
顯示文件中各部分的修改及相關的提交信息,包括在文件間的移動內容方面的情況
git blame -C -c <some file>
顯示歷史時,顯示復制和粘貼信息
git log -C -c -p -1 <some point>
5. 遠程版本庫
克隆遠程版本庫
git clone <some repository url>
克隆遠程版本庫,但只下載其中最近200個提交的歷史記錄
git clone --depth 200 <some repository url>
在本地版本庫中設置遠程版本庫的別名
git remote add <remote repository> <repository url>
顯示遠程分支
git branch -r
基於遠程分支創建本地分支
git branch <new branch> <remote branch>
基於遠程標簽創建本地分支
git branch <new branch> <remote tag>
從別名Origin的遠程版本庫中取來修改變化,但不合並到本地分支
git fetch
從任意的遠程版本庫中取來修改變化,但不合並到本地分支
git fetch <remote repository>
從任意的遠程版本庫中取來修改變化,並合並到當前檢出的本地分支
git pull <remote repository>
從別名為"Origin"的遠程版本庫中取來修改變化,並合並到當前的檢出本地分支
git pull
把修改變化從本地分支推入遠程版本庫
git push <remote repository> <local branch>:<remote branch>
把修改變化從本地分支推入到遠程本庫同名分支
git push <remote repository> <local branch>
把修改變化從票地新建分支推入到遠程本庫
git push <remote repository> <local branch>
把修改變化推入別名為"Origin"的遠程本庫
git push
在遠程版本庫中刪除分支
git push <remote repository> :<remeote branch>
在本地版本庫中刪除所有遠程版本庫中已不存在的分支
git remote prune <remote repository>
在本地版本庫中刪除某個遠程版本庫的簡稱,以及該遠程本庫相關的分支
git remote rm <remote repository>
6. 連接Git 和 SVN
克隆SVN版本庫的全部內容
git svn clone <svn repository>
克隆具有標准結構的SVN版本庫(主干命名為trunk 其它都在branches目錄下)
git svn clone -s <svn repository>
克隆非標准結構的svn版本庫
git svn clone -T <trunk path> -b <branch path> -t <tag path> <svn repository>
克隆標准結構的SVN中的版本庫的某個版本
git svn clone -s -r 2321
克隆具有標准結構的SVN版本庫,並對SVN中的分支添加前綴
git svn clone -s --prefix svn/ <svn repository>
從上游SVN版本庫中獲得更新內容,並依此在本地GIT版本庫中基變本地分支
git svn rebase
把修改變化推回上游SVN版本庫
git svn dcommit
列出所有推入上游SVN版本庫的提交
git svn dcommit -n
顯示svn歷史記錄
git svn log
顯示文件中各個部分的svn的修改者及相關的提交信息
git svn blame <some file>