0. 前言
在上一篇文章中,講述了使用webstorm去調試node程序,最近研究了一下如何使用webstorm去操作git。
對於git的使用,大家的使用方式均有不同,最王道的方式非命令行莫屬,基於git的GUI軟件還是很多的,大家可自行研究使用。之前使用eclipse svn插件去操作版本管理,還是很便捷的一件事情。而今用慣了webstorm,當然里面也集成了對svn的支持,只是最近一直在用git,所以想試着用webstorm中的git集成工具進行版本管理。當然之前都是以敲命令行的方式去做,達到一個熟練度,速度還是很可觀的。通過這篇文章,主要講述如何使用webstorm中的git工具進行更加快速高效的版本管理。
1. 先說git理論
webstorm提供了git不少試圖,下面列舉其一:
我們在上面看到了git面板的很多選項,想要弄清楚各個選項具體要做什么,常用且常規的git理論知識及操作經驗不可少。
我們先看對git操作的簡單分類,如下——
- 遠程倉庫類:git clone/remote/pull/push/rebase/fetch
- 分支類(包括tag):git branch/tag/checkout/stash
- 信息查閱:git status/log/diff
- 本地常規操作:git add/commit/rm/merge/reset
這里僅僅是我個人的分類方式,每個人都對它有不同的分類,歡迎補充。
需要強調的是,你需要對上述命令關鍵詞都做了什么事兒、應用於何場景,需要有清晰的把握,如果你不知,不放看看文章末尾的參考文章。多說一句,一定要結合工作區、暫存區、版本庫的三者關系去理解。
結合上面給出的圖片,我們可以看到,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 顯示左右分支,包括本地分支和遠程分支
進而對各個分支能夠進行更多的操作,如下圖所示——
或者
- checkout 檢出至本地工作區,此時本地已經檢出過
- checkout as new local branch 檢出至本地工作區,並創建新分支
- compare 兩個分支進行比較,比如,我想拿當前的test分支與本地的master分支進行比較,會看到——
會看到,會把各自提交的變更內容一一列表出來。要注意,這里不包含本地所進行的更改尚未提交到本地倉庫的部分,即沒有commit的部分。
- merge 進行合並操作,以比較版本合入當前版本中,merge的過程當中,可能會有沖突(要記住,多人修改同一處代碼時,才可出現沖突),稍候介紹怎么處理沖突
- delete 刪除當前分支
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暫存區的理解
5. 總結自己的Git常用命令
6. git使用規范流程
9. git book
注:轉自https://www.cnblogs.com/jinguangguo/p/4868152.html