Git經常使用命令

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的合併工具打開衝突文件進行處理(當有衝突的時候)

相關文章
相關標籤/搜索