Git常常用到的命令(更新20140619):git
*******初始化:********github
$ git config --global user.name "polarrwl"bash
$ git config --global user.email "polarrwl@163.com"app
$ git init //工程目錄初始化ssh
$ git status //查詢狀態工具
*******修改提交:*******fetch
$ git add xxxfile //暫存區(增長和修改)spa
$ git add xxxfile2 //暫存區debug
$ git add *.* //當前目錄全部文件(不包含文件夾)日誌
$ git add * //當前目錄全部文件(包含文件夾)
$ git rm xxxfile //刪除,暫存區
$ git commit -m "說明" //版本庫
$ git diff HEAD -- xxxfile //工做區和版本庫的比較,HEAD當前庫版本,HEAD^上一個版本,直接輸入SHA1也能夠
$ git checkout . //撤銷全部修改
$ git reset --hard HEAD^ //恢復上一個版本
$ git reset --hard 3628164 //恢復指定SHA1計算的版本號
$ git checkout -- xxxfile //撤銷修改(工做區)
*******查詢日誌:*******
$ git log --pretty=oneline //一行顯示,配合git reset使用
$ git reflog //查詢歷史命令
$ git log --graph --pretty=oneline --abbrev-commit //圖形方式
*******遠程倉庫:*******
$ ssh-agent bash --login -i //切換到agent登錄
$ ssh-keygen -t rsa -C "youremail@example.com" //生成rsa公私密匙對
$ ssh-add /c/Users/polarrwl/.ssh/gittests //動態添加rsa私匙,用於多個私匙使用
$ ssh -T git@github.com //進行驗證
$ ssh -Tv git@github.com //詳細檢測,打印debug信息
$ git clone git@github.com:michaelliao/gitskills.git //從遠程克隆到本地
$ git remote add origin git@github.com:polarrwl/gittest.git //關聯遠程的庫
$ git remote add gittest2 /i/temp/20140609/gittest2 //關聯到本地的另一個庫上
$ git remote //查看遠程倉庫的信息
$ git remote -v //查看遠程更詳細信息
$ git push -u origin master //推送(空的狀況下的第一次推送)
$ git push -f -u origin master //強推,把遠程的git目錄覆蓋掉
$ git push origin master //推送修改(主分支),本地master推送到遠端的master(缺省)
$ git push origin master:branch1 //把本地的master分支提交到遠程origin的branch1分支上,若是遠程沒有branch1分支,則建立
$ git push origin dev //推送其餘分支(dev)
$ git fetch origin master:tmp //拉取遠程的master分支到本地tmp分支,注意是本地分支
$ git fetch origin master //拉取遠程的master分支到默認的本地遠程分支origin/master中,遠程有更新就能夠考慮去fetch一下
$ git merge --no-ff -m "merge remote" origin/dev //將遠程origin/dev分支合併到當前分支
$ git checkout -b dev origin/dev //建立遠程的dev分支到本地dev分支,前提是clone中有
$ git pull //執行當前分支的pull拉取動做,當遠程被其餘用戶提交後,須要拉下來才能提交,自動merge
$ git branch --set-upstream dev origin/dev //將分支dev和遠程的origin/dev分支綁定起來,這樣才能pull
$ git branch -r //查看遠程跟蹤分支
$ git checkout --track -b refactored origin/refactored //基於遠程跟蹤分支建立本地分支
*******分支管理*******
$ git checkout master //切換到主分支
$ git checkout dev //切換到dev分支
$ git checkout -b dev2 //建立並切換分支dev2
$ git branch dev2 //建立dev2分支但不切換分支
$ git branch //查看當前分支
$ git branch -r //列出遠程分支
$ git branch -a //列出全部分支
$ git branche -d dev2 //刪除分支
$ git branch -D feature-vulcan //強行刪除分支,若是分支尚未被合併
$ git branch -d -r branchname //刪除遠程branchname分支
$ git merge dev2 //將dev2分支合併到當前分支
$ git merge --no-ff -m "merge with no-ff" dev2 //非fast-forward模式合併分支,建立新的節點
$ git mergetool foofile.txt //調用merge的合併工具打開衝突文件進行處理(當有衝突的時候)
$ git stash //儲存當前分支工做現場
$ git stash list //查看當前分支的工做現場
$ git stash pop //恢復上一個儲存的工做現場並清理stash list
$ git stash apply stash@{0} //屢次stash,經過stash list找到對應的恢復
*******標籤管理*******
$ git tag v1.0 //添加標籤
$ git tag //查看標籤
$ git tag v0.9 6224937 //給指定的commit id(log sha1值)打上標籤
$ git show v0.1 //查看標籤對應的信息
$ git -a tagname -m "blablabla..." //指定標籤信息
$ git tag -d v0.1 //刪除標籤
$ git push origin v1.0 //推送標籤到遠程
$ git push origin --tags //一次性推送所有還沒有推送的標籤
$ git push origin :refs/tags/v0.9 //刪除遠程標籤,前提是本地先刪除 git tag -d xxxx
*******關聯Diff和Merge工具*******
$ git config --global diff.tool bc3
$ git config --global difftool.bc3.cmd "\"c:/program files/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""
$ git config --global difftool.prompt false
$ git config --global merge.tool bc3
$ git config --global mergetool.bc3.cmd "\"c:/program files/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""
$ git config --global mergetool.bc3.trustExitCode true
注意$的變量會被清空掉,因此須要在.gitconfig裏面再修改下。
$ git mergetool foofile.txt//調用merge的合併工具打開衝突文件進行處理(當有衝突的時候)