以前用了很久的totoiseSVN,顯然不夠高大上,開發界的版本裝x利器還得是git。然而git的命令行對沒怎么用過linux的人可能覺得還不如用gitGUI,可是當你知道sublime可以集成git插件的時候,你就會改變自己的想法了,真心方便。
1. 安裝git客戶端,最常用的msysgit,具體步驟就略過了,大家自行搜索吧。
2. sublime安裝git插件
Ctrl+shift+P,調出 install package面板,然后搜索git,回車安裝
3. 配置git公鑰,此處以gitHub為例,你也可以參考 git 在linux下服務端搭建 自己搭建一個git服務端
然后通過將公鑰添加到服務端進行身份的認證
4. 初始化本地的git配置信息
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的各種操作了
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