git因爲其靈活,速度快,離線工做等特色而倍受青睞,下面一步步來總結下git的基本命令和經常使用操做。git
下載地址:msysgit,安裝完成後配置系統環境變量,打開git bash,儘可能少用圖形化工具git gui,推薦使用命令行。github
你能夠在本地操做git,也能夠在遠程服務器倉庫操做git,例如github,這樣你就須要配置下ssh key,詳情請查看官方文檔說明generating-ssh-keysbash
本地克隆:服務器
$ git clone /path/to/repository
遠程克隆:ssh
$ git clone <server>
ssh方式(推薦),例如:svn
$ git clone git@github.com:hcy2367/hcy2367.github.io.git
https方式,例如:工具
$ git clone https://github.com/hcy2367/hcy2367.github.io.git
$ git init
$ git add <filename> | --all | -A
git工做區,暫存區,HEAD區(能夠理解爲本地倉庫master分支的最新版本)關係圖:gitlab
$ git rm --cached <filename> | *
執行add、commit操做以前和以後最好都要查看下當前提交的一些狀態信息,防止漏添加,錯提交post
$ git status
$ git diff <filename>
$ git log
$ git commit -m '代碼提交信息'
HEAD表示當前版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^,往上100個版本HEAD~100,如回退到上一個版本,則命令以下:
$ git reset --hard HEAD^
其中–hard參數表示撤銷工做區與暫存區的修改,回退到指定歷史版本,可以使用以下命令:
$ git reset --hard 20038
其中20038爲提交版本的前五位ID號(原始:20038c521d4e81aca8ec8bca9f05d50ebb4fb835),查看時可以使用以下命令:
$ git reflog
丟棄工做區的修改,已添加到暫存區的文件不受影響,注意:不能少了–參數,命令以下:
$ git checkout -- <filename> | *
把暫存區的修改撤銷掉,從新放回工做區,命令以下:
$ git reset HEAD <filename> | *
刪除後再commit到HEAD區,若是誤刪文件了,能夠恢復到該文件的最新版本。
$ git rm <filename>
$ git push -u origin master | <branch>
-u參數表示初次推送時把本地的master分支和遠程的master分支關聯起來;
若是你尚未克隆現有倉庫,並欲將你的本地倉庫鏈接到某個遠程服務器,你可使用以下命令添加:
$ git remote add origin <server>
例如這樣你就可以將你的改動推送到所添加的服務器上去了:
$ git remote add origin git@github.com:hcy2367/hcy2367.github.io.git
建立分支:
$ git checkout -b <branch>
切換回主分支:
$ git checkout master
列出全部分支:
$ git branch
合併指定分支到當前分支(默認使用fast forward方式):
$ git merge <branch>
普通模式合併(禁用fast forward,由於該方式合併後看不到歷史提交信息):
$ git merge --no-ff -m "merge with no-ff" <branch>
刪除分支:
$ git branch -d <branch>
丟棄一個沒有被合併過的分支,能夠經過以下命令強行刪除:
$ git branch -D <branch>
推送到遠端倉庫:
$ git push origin <branch>
查看遠程信息:
$ git remote -v
從遠程獲取最新版本到本地倉庫,並自動merge到本地分支:
$ git pull origin master
從遠程獲取最新版本到本地倉庫,不自動merge到本地分支:
$ git fetch
合併分支前先到另一個分支更新代碼,而後本地合併後提交到遠程倉庫; 當有衝突時,可以使用$ git diff
或$ git status
命令查看分支的差別,手工解決後,再執行$ git add <filename>
命令以將它們標記爲合併成功。查看提交記錄圖形信息:
$ git log --graph --pretty=oneline --abbrev-commit
建立標籤:
$ git tag <tagname>
可以使用命令以下命令找到歷史提交的ID號:
$ git log --pretty=oneline --abbrev-commit
再打標籤:
$ git tag v1.0 6224937
還能夠建立帶有說明的標籤,用-a指定標籤名,-m指定說明文字:
$ git tag -a v1.1 -m "version 1.1 released" 3628164
查看標籤:
$ git tag
查看標籤信息:
$ git show v1.0
刪除本地標籤:
$ git tag -d v1.1
推送標籤到遠程:
$ git push origin <tagname>
一次性推送所有未推送的標籤:
$ git push origin --tags
刪除遠程標籤(先刪除本地,再刪除對應的遠程tag):
$ git tag -d v1.1 $ git push origin :refs/tags/v1.1
$ git fetch origin $ git reset --hard origin/master
$ git clean [options]
$ git push origin <branch>
推送本身的修改;$ git pull
試圖合併;$ git push origin <branch>
推送就能成功;git pull
提示「no tracking information」,則說明本地分支和遠程分支的連接關係沒有建立,用命令$ git branch --set-upstream <branch> origin/<branch>
解決便可。說了這麼多,來張工做圖,可能更加通俗易懂:
掌握上面的命令後基本上能夠輕鬆使用git來管理項目和參與團隊開發了,當你欣賞到git的過人和可愛之處後,你可能不再想使用svn來管理代碼了,媽媽也不用擔憂我如何使用git了,熟悉操做後你就能夠遨翔於github、gitcafe、gitlab的天空,爲開源生態圈貢獻本身的一份力量。不論是fork,star,clone,仍是pull request,總要嘗試下未知的世界。[博客轉移了] =》 http://hcy2367.github.io/
天高任鳥飛,海闊憑魚躍。