git clone 代碼庫地址git
git branch -r 查看遠程分支vim
git branch 查看本地分支緩存
git branch -a 查看遠程和本地分支。帶*的表示正在所處分支。服務器
git branch branch_name 創建一個分支(是在當前分支HEAD上創建)spa
git checkout branch_name 切換到另外一個分支code
git checkout -b branch_name origin/branch_name 創建和遠程分支追蹤關係的本地分支blog
git checkout -- filename 撤銷工做目錄的改動(已經在版本管理,但還沒提交到暫存區的文件)ci
怎樣獲取遠程或本地分支的某個文件到當前分支呢?
git merge不能夠,它只能merge分支
此時可使用git checkout 命令。
git checkout 遠程/本地分支名稱 指定文件開發
這樣就能夠獲取到某分支的指定文件到當前分支了,而且不會發生切換分支。部署
git reset HEAD filename 撤銷暫存區的改動
git reset 版本號 回退到某個版本,留有文件修改(例子:文件已經commit到本地版本庫,想回退到上一個版本 git reset HEAD^ 版本號可在git log中查看) --hard 硬回退
一個例子:
commit了兩個提交,並push到了遠程庫。發現最後一次的commit不對,想回到上一個commit。這時候執行 git reset HEAD^,回到了上一次的版本。這就落後了遠端分支一個提交, git log 看是缺乏了後悔的那個提交點,這樣直接push到遠程是不能夠的。
這時候能夠執行 git reset origin/xx,同步本地分支和遠程分支(但不會丟失本地更改),此時git log能夠看到commit點都回來了。而後再git add /commit/push
git revert HEAD 撤銷當前版本的修改,表示回到上一個版本。revert是做爲新的commit
git diff 這個命令能夠diff各類不一樣
git diff 默認是比較當前工做目錄和暫存區(git必需要知道暫存區的概念)的不一樣
git diff --cached 比較暫存區和版本庫的不一樣
git diff HEAD 比較工做目錄和版本庫的差別
git diff --stat 只看統計哪些文件差別,不看具體內容差別
git diff HEAD origin/branch_name filename 比較當前分支和遠程分支上這個file的不一樣
git add
git commit -m 'xx'
git log 查看commit信息
git log --pretty=oneline 不少個commit信息,直接查看commit id,比較方便
若是查看某一個文件的修改歷史,能夠這樣:
git log filename (git log --pretty=oneline filename) ,經過列出的commitid,再執行git show commitid,查看具體修改歷史
git show commitid 查看某次提交的信息
git branch --set-upstream master origin/master 設立追蹤關係 本地和遠程分支
git pull 遠程名 遠程分支名稱:本地分支名稱
省略本地分支名,表示當前所在分支;
若是創建了追蹤關係,能夠省略分支名稱
git push 遠程名 本地分支名稱:遠程分支名稱
若是省略遠程分支名稱,就是把本地分支推送到遠程,若是沒有,就在遠程新建;若是隻省略本地分支,表示刪除遠程分支。
若是有追蹤關係,能夠省略倆名稱
git merge branchname 在當前分支上合併branchname
git tag tagname 在當前分支的commit版本上打一個tag。tag和某個commit id對應的
git tag 查看各個tag
git show tagname 查看該tagname信息
git stash [save message] 保存當前進度,工做區恢復到當前HEAD版本內容。很方便於當前改的東西存檔,去fix其餘東西。
git stash list 查看stash的列表
git stash pop 彈出最新的stash。好比修復完,回到以前改的。
在開發過程當中,有可能產生附帶的緩存文件,在部署到服務器時是沒用的。此時能夠在版本庫中添加一個.gitignore文件。
好比以.dat爲後綴的文件不想要提示是否添加了。在.gitignore文件中行內容寫上.dat便可。
若是不但願本身的.gitignore文件上傳,能夠在該文件再追加一行.gitignore。
git的命令可使用別名簡化,好比每次git commit,checkout等,單詞較長。能夠給他們起個別名。
在.git/config文件中添加。好比幾個命令:
[alias] co = checkout ci = commit br = branch st = status
在.git/config中配置,只是在當前git代碼庫生效,若是該用戶下都生效,須要在~/.gitconfig 中配置,或者命令如git config --global便可
好比:
git diff如何使用vimdiff形式查看diff文件?
git config --global diff.tool vimdiff git config --global difftool.prompt false git config --global alias.d difftool
利用git d 執行便可