之前用了好久的totoiseSVN,顯然不夠高大上,開發界的版本裝x利器還得是git。然而git的命令行對沒怎麼用過linux的人可能以爲還不如用gitGUI,但是當你知道sublime能夠集成git插件的時候,你就會改變本身的想法了,真心方便。html
1. 安裝git客戶端,最經常使用的msysgit,具體步驟就略過了,你們自行搜索吧。linux
2. sublime安裝git插件git
Ctrl+shift+P,調出 install package面板,而後搜索git,回車安裝github
3. 配置git公鑰,此處以gitHub爲例,你也能夠參考 git 在linux下服務端搭建 本身搭建一個git服務端緩存
而後經過將公鑰添加到服務端進行身份的認證svn
4. 初始化本地的git配置信息spa
git config --global user.name "username" git config --global user.email "username@email.com"
再設置一下push的參數,由於sublime的插件中push動做並不能接收參數插件
git config --global push.default matching #表明提交全部匹配的分支
5. 而後就能夠經過sublime的Ctrl+Shift+P調用git:init命令建立一個git倉庫命令行
執行命令後會要求你選擇一個目錄,選擇後便可在該目錄下新建文件進行git的各類操做了code
6. git經常使用命令解析
其實大多數狀況下,咱們的開發無非就是修改、提交、獲取、推送到遠程
git與svn的一點區別就是commit並不會提交到遠程服務端,push纔是真正的提交到服務端
所以,咱們能夠理解爲
git:add #把文件添加進去,實際上就是把文件修改添加到暫存區 git:commit #提交更改,實際上就是把暫存區的全部內容提交到當前分支 git:push #講緩存中的修改推送到遠程服務端 固然git:add 和 git:commit 也可使用 git:commit -am "comment content" 兩步合併爲一步執行
重要提醒:修改文件後若是不執行add直接commit是無效的
版本的回退
git reflog #查看歷史版本,而後根據現實的版本號回退 git reset --hard HEAD^ #回退到上一個版本 git reset --hard HEAD^^ #回退到上上一個版本 git reset --hard HEAD~100 #回退到100個之前的版本 git reset --hard 3628164 #回退到3628164這個版本
場景1:當你改亂了工做區某個文件的內容,想直接丟棄工做區的修改時,用命令git checkout -- file。
場景2:當你不但改亂了工做區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操做。
場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠程庫。
刪除文件
git rm filename #從git刪除文件,執行後還須要commit和push才能最終在遠程生效 git checkout --filename #檢出最新的已經commit的版本,能夠用於恢復版本或者恢復刪除的文件
從遠程主機獲取
git remote add origin git@github.com:yourname/learngit.git #從遠程主機獲取
git push -u origin master #推送到遠程主機,首次運行在命令行模式下,運行一次以後再到sublime中直接使用git push便可默認以master分支進行上傳
分支
Git鼓勵大量使用分支: 查看分支:git branch 建立分支:git branch <name> 切換分支:git checkout <name> 建立+切換分支:git checkout -b <name> 合併某分支到當前分支:git merge <name> 刪除分支:git branch -d <name>
強制刪除分支:git branch -D <name> #沒合併的狀況下是禁止刪除的,須要強制刪除
多人協做開發,遠程push和pull
查看遠程庫信息,使用git remote -v; 本地新建的分支若是不推送到遠程,對其餘人就是不可見的; 從本地推送分支,使用git push origin branch-name,若是推送失敗,先用git pull抓取遠程的新提交; 在本地建立和遠程分支對應的分支,使用git checkout -b branch-name origin/branch-name,本地和遠程分支的名稱最好一致; 創建本地分支和遠程分支的關聯,使用git branch --set-upstream branch-name origin/branch-name; 從遠程抓取分支,使用git pull,若是有衝突,要先處理衝突。
文件忽略
忽略某些文件時,須要編寫.gitignore;
.gitignore文件自己要放到版本庫裏,而且能夠對.gitignore作版本管理!
國外某大神作的git經常使用命令圖
詳細教程,參考廖老師的git教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000