注:本文不適合新手,只是方便查閱。新手能夠參考廖雪峯的教程:[www.liaoxuefeng.com/wiki/896043…]html
git log
參數太多了,又很好用,這裏放上參數大全:[www.cnblogs.com/bellkosmos/…]git
方便起見,本文舉例文件名爲text.txt。若實際中文件名中有空格,請用引號包圍。github
首先了解下git維護的三塊內容:工做區-->緩存區stage-->當前版本HEAD。緩存
git config --global user.name "cm"
git config --global user.email "@example.com"
git init
git add text.txt
,強制添加(ignore的也行):git add -f text.txt
git add .
git commit -m "一些些說明"
,每次提交都有commit.idgit rm text.txt
-->提交到HEADgit commit -m "一些些說明"
git status
git log
(版本回退以後,這裏的提交日誌也會減小哦),精簡版內容:git log --pretty=online
,帶分支合併圖內容--graph
git log -1
git rebase
git reflog
(要是遇到什麼奇奇怪怪的東西,按Q就退出了)git checkout -- text.txt
(本質是從HEAD拷貝了一份新的text.txt替換。不影響緩存區內容),撤銷所有git checkout -- *
git add text.txt
命令前):git reset HEAD text.txt
git reset --hard HEAD^
(HEAD^
表示上個版本,HEAD^^
表示上上個版本,以此類推。也可能夠簡寫:HEAD~100
表示100個^
)git reset --hard <commit.id>
根據commit.id
選擇想到達的版本git log
查看版本。回退完後悔了想前進,能夠用git reflog
查看commit.id再前進;操做完,由於工做區和HEAD同步了嘛,因此緩存區很「乾淨git diff HEAD -- text.txt
git branch dev
git switch dev
或者git checkout dev
git switch -c dev
或者git checkout -b dev
git checkout -b dev origin/dev
git branch
(列出了全部分支,標記*爲當前分支),添加-vv
參數能看到關聯的遠程分支git merge dev
。git merge --no-off dev
,由於要進行一次commit,因此通常加上-m
參數。git status
中看到衝突了。手動修改後提交至HEAD。提交後能夠用git log --graph
看到分支合併圖。結合上條例子,dev不變。git branch -d dev
,強行刪除沒被合併的分支,把小d換成大Dgit stash
git stash list
git stash apply
:恢復工做現場,但不刪除stash內容不刪除,須要經過git stash drop
刪除stash。能夠查看git stash list
後逐條恢復,如git stash apply stash@{0}
git stash pop
:恢復並刪除stashgit cherry-pick <commit.id>
git remote add <遠程倉庫名> <遠程倉庫地址>
(通常遠程倉庫名取爲origin)git push origin master
, master是本地分支名,push時git會把遠程同名分支關聯起來,因此遠程分支名也是master。 第一次帶上-u
參數,之後操做就方便了,只須要在當前分支下git push
就好了,可用git branch -vv
查看默認推送狀況。(可能會出現SSH警告,輸入yes就行了)git clone <遠程倉庫地址>
(不須要本地額外建倉庫,直接推就好了)git remote
,帶上-v
參數顯示更詳細的信息git pull origin master
,至關於git fetch origin/master
+git merge origin/master
;git pull
是拉取全部分支。 (若是出現no track information提示,能夠先用git branch --set-upstream-to <branch-name> origin/<branch-name>
建議本地與遠程分支的連接)。git remote rm origin
git tag <標籤名>
,默認標籤是打在最新一次的提交上的git tag <標籤名> <commit.id>
git tag
,標籤是按字母排序的git show <標籤名>
git tag -a <標籤名> -m "一些些說明" <commit.id>
git tag -d <標籤名>
git push origin <標籤名>
git push origin --tags
git tag -d <標籤名>
-->再刪遠程git push origin :refs/tags/<標籤名>
git check-ignore -v <文件名>
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"
HEAD改變後會直接致使其它兩塊內容的改變。 工做區改變後須要一步步保存到HEAD。app
master是主分支;HEAD指向的是當前分支。注意這二者的關係。全部的操做默認在當前分支下進行。fetch
push時本地和遠程分支默認須要同名,git也會自動追蹤遠程同名分支。特意改爲不一樣名會很麻煩,不建議。日誌