0. 前言html
在上一篇文章中,講述了使用webstorm去調試node程序,最近研究了一下如何使用webstorm去操做git。node
對於git的使用,你們的使用方式均有不一樣,最王道的方式非命令行莫屬,基於git的GUI軟件仍是不少的,你們可自行研究使用。以前使用eclipse svn插件去操做版本管理,仍是很便捷的一件事情。而今用慣了webstorm,固然裏面也集成了對svn的支持,只是最近一直在用git,因此想試着用webstorm中的git集成工具進行版本管理。固然以前都是以敲命令行的方式去作,達到一個熟練度,速度仍是很可觀的。經過這篇文章,主要講述如何使用webstorm中的git工具進行更加快速高效的版本管理。git
1. 先說git理論web
webstorm提供了git很多試圖,下面列舉其一:緩存
咱們在上面看到了git面板的不少選項,想要弄清楚各個選項具體要作什麼,經常使用且常規的git理論知識及操做經驗不可少。eclipse
咱們先看對git操做的簡單分類,以下——webstorm
這裏僅僅是我我的的分類方式,每一個人都對它有不一樣的分類,歡迎補充。ide
須要強調的是,你須要對上述命令關鍵詞都作了什麼事兒、應用於何場景,須要有清晰的把握,若是你不知,不放看看文章末尾的參考文章。多說一句,必定要結合工做區、暫存區、版本庫的三者關係去理解。svn
結合上面給出的圖片,咱們能夠看到,webstorm中的git工具無非是這些命令行的可視化抽象,咱們來看看怎麼玩兒好它。工具
2. 使用webstorm中的git
2.1 右鍵菜單
先來最熟知的右鍵操做,分爲兩類:文件夾(或者工程)右鍵和文件右鍵,先看看文件夾右鍵的效果——
再看看文件右鍵——
會發現二者的差別僅僅在於文件右鍵的視圖多了一些diff操做(或者能夠聯想到git diff命令)。咱們看看各個選項的含義——
Commit File... 提交至本地版本庫
Add 添加進緩存區
Show Current Revision 顯示當前文件的最新版本信息,以下圖——
Compare with the Same Repository Version 與當前版本(的文件)作比較,能夠理解爲與最新版本比較,也就是能夠比較本地工做區和本地版本庫的差別(也記住,比較視圖中,右側永遠是最新的那個版本內容)——
Compare with Latest Repository Version 與上一版本(的文件)作比較,能夠理解爲當前版本與本地工做區所作的更改共同來與上一版本比較
Compare with... 與任意歷史版本(的文件)作比較
Compare with Branch... 與任意分支(的文件)作比較,包括本地分支及遠程分支
Show History 展現關聯本文件(或者文件夾中的全部文件)提交信息歷史,咱們能夠看到,歷史提交信息面板出現於下方Version Control面板中——
Show History for Selection 對指定的代碼塊,顯示歷史版本信息
(鏈接第二個圖)-------->>>>>>
Revert... 還原代碼,要注意與reset的區分,這裏僅僅是將本地工做區的代碼還原爲本地倉庫中的最新版本的代碼
Repository > 倉庫二級導航選項,即相關倉庫類的操做
要注意,有些操做是針對某單個文件操做的,每當操做某個文件夾時(或者某個工程時),會以選中的文件的集合爲單位展開操做文件,並進行操做。
咱們繼續看看Respository的二級導航——
Branches 顯示左右分支,包括本地分支和遠程分支
進而對各個分支可以進行更多的操做,以下圖所示——
或者
會看到,會把各自提交的變動內容一一列表出來。要注意,這裏不包含本地所進行的更改還沒有提交到本地倉庫的部分,即沒有commit的部分。
OK,branches面板介紹完畢,固然還能夠在最右下角一樣有branches面板操做入口,以下——
繼續介紹,倉庫二級導航——
Tag 打tag Merge Changes 合併操做 Stash Changes stash操做,具體用法,你若不知,能夠參考一下下面的文章 ... ...
這裏省略剩下的那些操做,關於merge、stash、reset的一些操做細節,須要先懂得這三個命令的相關參數的具體含義,再去操做就很好理解了。
OK,關於右鍵菜單就介紹到這兒了,能夠看到它能作的事兒——
1. 很是方便的對對比文件或者文件夾的差別,試圖直觀明瞭 2. 方便作常規的add/commit/revert操做等 3. 方便操做版本庫的相關管理,如fetch/merge/push/rebase等等
2.1 Version Control面板
OK,接下來,介紹一下Version Control面板——
首先,來介紹對應Local Changes
這裏也就是工做區的更改與當前版本差別的diff文件列表,Unversioned Files也就是表明沒有加入到版本管理的文件列表,須要進行add操做,添加進緩存區中;Default中的文件是表明版本管理中通過本地更改的文件,須要進行add 和commit操做,將更改的文件添加入緩存區中並提交到本地版本庫中。要知曉git add和git commit作了什麼事兒
git add:暫存區的目錄樹被更新,同時工做區修改(或新增)的文件內容被寫入到對象庫中的一個新的對象中,而該對象的ID 被記錄在暫存區的文件索引中。 git commit:暫存區的目錄樹寫到版本庫(對象庫)中,對應的分支會作相應的更新。即HEAD指向的目錄樹就是提交時暫存區的目錄樹
能夠對新增的文件進行add 操做,以下——
其他選項——
Revert:同上述講述,即還本來地變動 Move to Another Changelist:轉入其餘變動標記,分門別類,好管理 Show Diff:同上述講述 Jump to Source:直接打開變動源文件 Ignore:加入.gitnore文件中 Create Patch:打變動補丁 Shelve Changes:與stash功能略相近,請參看後邊文章
緊接着,咱們最經常使用的操做就是Commit Changes了——
能夠單獨去commit,固然也能夠commit和push 一塊兒進行。
能夠看出來,這裏的Local Changes也就起到了"git status"命令的做用。
OK,繼續介紹log面板——
選中相應分支,右鍵,咱們看到——
咱們看到,常規的選項,在上述中已說起過,在此就不在囉嗦,這裏的Cherry-Pick,指的是將選中版本變動的文件內容merge進當前工做區中,咱們會看到,一樣會出現衝突的狀況——
當咱們選中merge操做時,看到以下圖——
雖然機器解決的衝突不是使人很滿意,不過你能夠再merge result面板中,直接去解決衝突,直接看到歷史版本,比較直觀。
解決衝突後,也就讓須要再去作add和commit操做,至於怎麼使用,在上述已說起。
接下來是console面板,它用於記錄全部你經過webstorm中git操做的命令,以下——
看一看到,這裏的命令行,也就是常規的咱們熟知的命令行。
Version Control面板介紹到這兒。能夠看到,咱們使用Version Control面板,咱們能夠作的事兒——
1. 能夠隨時看到本地變動的文件列表和內容,方便提交及還原 2. 看到全部分支(本身與小夥伴兒的)動態,及對應的變動內容,方便對比文件,方便追查問題 3. 能夠reset或者merge任意版本 4. 一樣能夠看到任意操做的命令行,利於學習git命令行
3. 優點
總體而言,我的以爲webstorm操做git起來,仍是很方便,大體分紅三類——
1. 對比類操做compare 2. 倉庫類操做repository 3. 本地操做local changes
我的以爲也是一個很是不錯的學習脈絡,總體來看,其最大的優點仍是在清晰明瞭的視圖上。
4. 總結
至此,對webstorm如何操做git的介紹就介紹完畢,我在這兒,舉一個最常規的git操做場景,你們能夠回顧着操做試試——
常規合做開發(同一分支開發 / 不一樣分支開發): add and commit --> fetch —> compare —> merge (and resolve conflicts) —> push
從接觸git,到使用git命令行,到理解git常規工做原理,再到深刻使用webstorm操做git,總體而言,須要作到——
1. 要熟知git經常使用的理論知識 2. 要熟悉命令行,若是你脫離了webstorm這樣的IDE,一樣可以進行git版本管理 3. 好好利用IDE帶來的視圖清晰這一個優點,更快的查詢問題、解決問題
OK,至此,webstorm的研究暫時告一段落,最近搞搞其餘的技術研究......
參考:
0. jetbrains對Version Control的介紹
1. git暫存區的理解
6. git使用規範流程
9. git book
轉