根據官方文檔整理,以及相關示例,git
官方文檔: https://git-scm.com/book/en/v2github
Git 命令 - 設置與配置windows
Git config命令服務器
設置用戶名,郵箱app
$ git config --global user.name "John Doe"less
$ git config --global user.email johndoe@example.com編輯器
列出全部配置svn
$ git config --list工具
別名fetch
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
$ git config --global alias.unstage 'reset HEAD --'
$ git config --global alias.last 'log -1 HEAD'
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
pull默認使用選項 --rebase
$ git config --global pull.rebase true
憑證存儲
$ git config --global credential.helper cache
$ git config --global credential.helper store --file ~/.my-credentials
配置默認編輯器
$ git config --global core.editor emacs
配置commit默認信息
$ git config --global commit.template ~/.gitmessage.txt
默認分頁器(more,【less】)
$ git config --global core.pager ''
windows 轉換回車換行符CR,LF ---> LF
$ git config --global core.autocrlf true false(取消)
git init 命令
建立一個初始化倉庫
$ git init 默認分支 master
建立裸倉庫(服務器沒有工做目錄)
$ git init --bare --shared #shared 自動修改倉庫目錄權限爲可寫
初始化倉庫目錄
description 文件僅供 GitWeb 程序使用
config 文件包含項目特有的配置選項
info 目錄包含一個全局性排除(global exclude)文件
.gitignore 文件中的忽略模式(ignored patterns)
hooks 目錄包含客戶端或服務端的鉤子腳本
HEAD 文件、(尚待建立的)index 文件,和 objects 目錄、refs 目錄。
objects 目錄存儲全部數據內容refs 目錄存儲指向數據(分支)的提交對象的指針;
HEAD 文件指示目前被檢出的分支;index 文件保存暫存區信息
git clone命令
克隆現有倉庫
$ git clone https://github.com/libgit2/libgit2 mylibgit
解包
$ git clone repo.bundle repo
克隆初始化更新含子模塊的倉庫
$ git clone --recursive https://github.com/chaconinc/MainProject
git add 命令
跟蹤新文件
$ git add README
交互式暫存
$ git add -i
$ git add --interactive
git status 命令
檢查當前文件狀態
$ git status
狀態簡覽
$ git status -s
M README -->
MM Rakefile -->右M修改未暫存左M 修改並暫存
A lib/git.rb -->新添加到暫存區中
M lib/simplegit.rb -->
?? LICENSE.txt -->新添加未跟蹤
git diff 命令
查看修改(比較的是工做目錄中當前文件和暫存區域快照之間的差別,
也就是修改以後尚未暫存起來的變化內容。)
$ git diff
查看已暫存將要提交
$ git diff --cached
$ git diff --staged
提交準側(檢查空白錯誤)
$ git diff --check
三點語法比較分支
$ git diff master...contrib
顯示合併後狀態
$ git rerere diff
git reset 命令
取消暫存的文件
$ git reset HEAD CONTRIBUTING.md
撤銷合併
$ git reset --hard HEAD~
git rm 命令
移除文件
$ git rm PROJECTS.md
倉庫中刪除不繼續跟蹤,磁盤保留
$ git rm --cached README
git mv 命令
移動文件更名
$ git mv file_from file_to
git clean 命令
清除工做目錄演戲
默認狀況下,git clean 命令 只會移除沒有忽略的未跟蹤文件。
$ git clean -d -n
強制清除
$ git clean -f -d
git branch 命令
建立分支
$ git branch testing
查看分支
$ git branch
查看每一個分支的最後一次提交
$ git branch -v
查看已合併到當前分支
$ git branch --merged
查看未合併分支
$ git branch --no-merged
刪除分支(未合併分支刪除會失效)
$ git branch -d testing
強制刪除分支
$ git branch -D testing
修改跟蹤分支
$ git branch -u origin/serverfix
查看全部跟蹤分支
$ git branch -vv
git checkout 命令
分支切換
$ git checkout testing
跟蹤遠程分支
$ git checkout --track origin/serverfix
跟蹤遠程分支並設置本地名稱
$ git checkout -b sf origin/serverfix
git merge 命令
合併分支
$ git merge <branch>
退出合併
$ git merge --abort
合併忽略空白
$ git merge -Xignore-space-change whitespace
git mergetool 命令外部的合併幫助工具。
git log 命令只會移除沒有忽略的未跟蹤文件。
經常使用
$ git log --pretty=oneline --graph
$ git log --graph --oneline --decorate --all
分支所在對象
$ git log --oneline --decorate
在 experiment 分支中而不在 master 分支中的提交」
$ git log master..experiment
$ git log refA..refB
$ git log ^refA refB
$ git log refB --not refA
git stash 命令
儲藏
$ git stash
查看
$ git stash list
恢復
$ git stash apply
git tag 命令
打標籤
$ git tag -a v1.4 -m 'my version 1.4'
查看
$ git show v1.4
後期根據提交打標籤
$ git tag -a v1.2 9fceb02
推送標籤
$ git push origin v1.5
所有推送
$ git push origin --tags
刪除標籤
$ git tag -d v1.4
git fetch 命令
從遠程倉庫拉取
$ git fetch [remote-name]
git pull 命令
git pull 命令基本上就是 git fetch 和 git merge 命令的組合體
$ git pull --rebase 變基合併
git push 命令
推送到遠程倉庫
$ git push [remote-name] [branch-name]
刪除遠程分支
$ git push origin --delete serverfix
git remote 命令
查看遠程倉庫
$ git remote -v
$ git remote show origin
添加遠程倉庫
$ git remote add pb https://github.com/paulboone/ticgit
遠程倉庫重命名
$ git remote rename pb paul
移除遠程倉庫
$ git remote rm paul
git archive 命令
建立快照歸檔文件
$ git archive master --prefix='project/' | gzip > `git describe master`.tar.gz
git submodule 命令
添加子模塊
$ git submodule add https://github.com/chaconinc/DbConnector
git show 命令
查看標籤信息
$ git show v1.4
查看一次提交
$ git show 1c002d
$ git show test
git shortlog 命令
製做提交簡報
$ git shortlog --no-merges master --not v1.0.1
git describe 命令
生成一個構建號
$ git describe master
git bisect 命令
https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E4%BD%BF%E7%94%A8-Git-%E8%B0%83%E8%AF%95#r_binary_search
git blame 命令 (文件標註)
-L 選項來限制輸出範圍在第12至22行:
$ git blame -L 12,22 simplegit.rb
git grep 命令
https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E6%90%9C%E7%B4%A2#r_git_grep
git cherry-pick 命令
變基與揀選工做流
$ git cherry-pick e43a6fd3
git rebase 命令
變基
$ git rebase master
截取特性分支上的另外一個特性分支,而後變基到其餘分支
$ git rebase --onto master server client
以上命令的意思是:「取出 client 分支,找出處於 client 分支和 server 分支的共同祖先以後的修改,
而後把它們在 master 分支上重放一遍」
變基
$ git rebase --onto 622e88 9c68fdc
git revert 命令
還原提交
$ git revert -m 1 HEAD
$ git apply 應用補丁
$ git am 應用補丁
$ git format-patch 生成補丁
$ git imap-send 上傳發送補丁
$ git send-email 郵件發送補丁
$ git request-pull 生成推送消息
git svn 命令
克隆subvers 倉庫
$ git svn clone file:///tmp/test-svn -T trunk -b branches -t tags
$ git svn clone file:///tmp/test-svn -s
提交到subversion 服務器
$ git svn dcommit
git fast-import 命令
從其餘版本控制系統導入