有一天我看見我們公司的同事在討論合并代碼怎么怎么不舒服,不方便,就是每次合并都很難搞的樣子,

我說 這不是用 Idea 很簡單就處理好了嗎,后面我了解到,他們在處理代碼沖突的時候都是通過手動處理沖突的,我驚了!

2019 年的時候 我在知憾訓答過一篇 關于 Idea 技巧的一篇文章,不過那個時候更多是一些快捷鍵操作的一些奇淫技巧,

對 Git 版本管理這塊講的不多,在 2 年后的今天,被我們現在的同事刺激了一下,自己決定完善一下 Idea 下 Git 版本的操作他們,
Git 派系介紹
其實在公司里面 Git 管理這塊也是分為幾大派系的
黑窗

一個黑窗走天下,任何工具都是花里胡哨,

所有的操作都是通過命令列完成,
個人愚見:這種方式雖然很酷很帥,但是畢竟只有一個黑窗,在某些場景下還是比較難處理,比如 歷史代碼查看,代碼合并,變更檔案詳細內容查看,
雖然很帥但是不適合我這種菜雞,

source tree

source tree 是我見過用的人最多的,很多同事都是使用這個,而且還可以安裝 git flow 插件,可以在里面直接使用 git flow 的作業流,
我也在用,不過用的不多,每個人喜好不同,有的同事喜歡代碼版本管理和代碼撰寫分開,我自己的話恰恰喜歡放在一起,哈哈哈哈哈 蘿卜青菜 各有所愛,
功能很全面,但有一個問題,可能就是查看單檔案或者檔案夾的 歷史不是很方便

Github Desktop

Github Desktop 俗稱 Github 親兒子,很早之前用過 跟 Source Tree 差不多,偶爾看到一個同事在使用這個,還是那個版本管理與代碼撰寫的問題,如果平常使用 Github 查看原始碼比較多的還是推薦,因為安裝了這個軟體之后,可以直接在 Github 上有一個按鈕 Open in Github Desktop,
親兒子才有的待遇
然后才是使用 Idea 管理版本

我自己感覺 Idea 的版本管理挺好用的,但是在作業中,除了我自己,我還沒有看見其他人使用過,

不過工具本來就沒有最好的,只有最適合你自己的,我個人使用 Idea 下的版本管理比較順手一點,就在這里簡單介紹一下,
查看這行代碼是誰改的

在編輯器左側右鍵,選擇 Annotate with Git Blame


點擊 左側時間會在彈出的子視窗中顯示這次修改的 hash,提交評論,和同步修改的檔案有哪些
復現代碼沖突
這里需要重點講一下,因為我最近居然發現我們的同事居然還是用非常原始的方式解決沖突,就是一個檔案一個檔案的洗掉 ======= 這個,當時我看見的時候,我自己都驚呆了,
我們先手動的制造一個沖突
mkdir test;
cd test;
git init -y;
echo 'console.info("one line")' > index.js;
git add .; git commit -m 'init';
git checkout -B feature/two;
vim index.js; # 在第二行添加 console.info("two line")
git add index.js; git commit -m 'feat: two line';
git branch master;
# 創建分支 3
git checkout -B feature/three;
vim index.js; # 在第二行添加 console.info("three line")
git add index.js; git commit -m 'feat: three line';
git checkout master
# merge feature/two
git merge feature/two # 這個時候不會發生沖突
git merge feature/threee # 沖突發生

上圖展示了發生沖突的所有程序
解決沖突
上面我們已經制造出了一個沖突,這個時候我們通過 Inteillj Idea 自帶的 Version Controller 的功能來處理這個沖突,
直接在編輯器中打開沖突檔案夾

這里會有一個問題,就是在真正的專案場景下,專案檔案非常的多,

在專案檔案上右鍵,選擇 Git,選擇 Resolve Conflicts

點擊之后會彈出一個處理沖突的彈窗,接下來好好介紹一下這個彈窗
1. 待合并分支
2. 當前分支
3. 沖突的檔案串列
4. 全部以當前分支「master」為準,丟棄待合并「feature/three」分支沖突檔案
5. 全部以待合并分支「feature/three」為準,丟棄當前分支「master」沖突檔案
6. 點擊 merge 會打開一個子視窗合并明細
7. 雙擊檔案和打開一個子視窗進行代碼 merge 明細
8. 顯示了合并分支檔案狀態,上圖示識合并的兩個分支 檔案都是更新狀態
9. 以分組串列的形式展示

這里就進入到詳細的單檔案合并步驟了
1?? 當前分支的修改
2?? 合并區域
3?? 待合并分支的修改
4?? 顯示本次合并的明細,就是看除了當前檔案還有哪些檔案需要合并
5?? 將左側
console.info("two line")合并6?? 將右側
console.info("three line")合并
7?? 直接接受左側的代碼
8?? 直接接受右側的代碼
9?? 參考合并的內容
查看代碼歷史

點擊 Show History

點擊 Show History 之后底部會彈出當前專案的歷史提交記錄
1?? 這里顯示的當前專案的提交記錄
2?? 可以指定想要查看歷史記錄的分支
3?? 可以選擇只看某個人的提交記錄
4?? 時間賽選
5?? 選中左側的提交記錄,這里會展示此次變更了哪些檔案,雙擊檔案會在彈出的新視窗中顯示代碼變更情況
上面是直接選中的整個專案查看整個專案的歷史提交記錄,有的時候我們只想查看某個檔案夾,或者是某個檔案的代碼變更記錄,整個時候我們只需要在對應的檔案夾或者檔案上右鍵懸著即可,
分支創建
根據實際作業場景出發,先列舉一下會創建分支的集中情況,在實際的應用場景來看如果用 Idea 來解決,
開發新功能,我們需要從現有分支創建新的 feature 分支
我們正在開發 feature 分支,但是此時線上出 Bug,我們需要從 master 分支創建 hotfix 分支來修復
我們在瀏覽源代碼,我們瀏覽代碼歷史上某個版本的代碼
從現有分支創建新的 feature 分支,這是最簡單的,甚至都不需要用 idea 了,代碼也是一行搞定 git checkout -B feature/xxx

直接從專案上直接右鍵創建即可
我們正在開發 feature 分支,但是此時線上出 Bug,我們需要從 master 分支創建 hotfix 分支來修復
這種情況其實是正式專案中的常態吧,畢竟線上環境是復雜的,問題隨時都會發生,但是問題就是可能我們現在開發的 feature 分支還沒有開發完成,我們自己也不想用 commit 進行提交,這個時候就需要用到 git 的 stash 功能了,

在切換前先 Stash Changes,將目前修改的代碼暫存

在彈窗中給這次暫存添加 備注 然后點擊 create stash
在處理好 stash 之后我們需要切回到 master 分支去創建對應的 hotfix 分支

點擊 Branchs

選擇 master 分支進行切換,切換后創建對應hotfix 分支,在修復好 hotfix 分之后,我們需要回到對應的 feature 分支繼續開發未開發完成的功能,

選擇 Unstash Changes

這里會有自己存盤的 stash 歷史,點擊 apply stash 進行恢復
我們在瀏覽源代碼,我們瀏覽代碼歷史上某個版本的代碼

添加修改「git add xxx」
我們每次新增的代碼需要通過 git add xxx 命令將代碼從作業區添加到快取區

上面的 add.js 檔案是我們新添加的檔案

提交修改「git commit xxx」

點擊 Commit Directory

🐶 本次 commit 的檔案串列
🐱 檔案修改了,但是沒有在快取區的檔案
🐭 修改串列,我們可以為某個代碼檔案集合專門命名 change list
🐹 作者
🐰 Amend commit
🦊 Sign off commit
🦝 在提交之前 格式化代碼
🐻 Rearrange 代碼
🐼 優化 imports,在代碼中沒有使用的 package 會自動洗掉
🦘 分析代碼,如果有代碼例外會提示
🦡 簡單代碼有沒有 TODO 沒有完成會提示
🐨 優化代碼
🐯 更新 copy right
🦁 提交的message
🐮 上下選擇看其他檔案的變動
🐷 選中檔案的代碼變動
🐽 commit
推送代碼 「git push」

拉取代碼「git pull xxx」

在便捷一點
其實上面介紹的基本上就涵蓋了我們日常專案中大部分使用的功能了,但是可以看到我們在上面演示的操作基本上不是在檔案夾上右鍵選單來選擇,但是說實話不是太跟手,用起來很麻煩,
其實 Jetbrains 的開發人員應該也是考慮到了這一點,其實在軟體的界面中有很多位置可以操作 Git

?? 拉取代碼
🧡 提交代碼
💛 推送代碼
💚 查看歷史
💙 rollback

點擊下方的版本號,也可以看到所有本地的分支和遠程的分支,可以在這里進行分支合并,和遠程代碼更新,
在快一點 VCS Operations
代碼的更新與提交提示是一個非常高頻的操作,它值得擁有更加便捷的方式,Jetbranins 也提供了更加編輯的方式

Mac: ctrl + v
上面提到的所有的操作 在這里都提供了便捷的操作方式
Commit
Rollback
Show History
Annotate With Git Blame
Show Diff
Branches ...
Push ...
Stash Changes ...
UnStash Changes ...
這里不僅可以用 Git 的功能,還有 Idea 自己的 Local History 也背展示在了這里
一些快捷鍵
正常編碼的情況下 使用快捷鍵的方式肯定更快,一下是針對 Git 操作整理的快捷鍵
名稱 | 對應 Git 操作 | 快捷鍵「Mac」 |
將檔案添加到作業區 | git add xxx | Option + Command + A |
將作業區檔案添加至快取區 | git commit xxx | Command + K |
拉去遠程代碼 | git pull xxx | Command + T |
推送代碼到遠程倉庫 | git push xxx | Command + Shift + K |
暫存檔案 | git stash xxx | Ctrl + V -> Stash |
恢復暫存 | git stath pop | Ctrl + V -> Un Stash |
洗掉掉緩沖區修改 | git reset --hard ^ | Command + Shift + Z |
解決沖突 | Ctrl + V -> Resolve Conflicts... |
若有識訓,就點個贊吧
本文由作者 胡川港 投稿,如果你在 CSDN、博客園、掘金等平臺有寫技術博客的習慣,想讓自己的原創博客被更多人看到,可以來 Java后端 投稿,
【END】
如果看到這里,說明你喜歡這篇文章,請轉發、點贊,微信搜索「web_resource」,關注后回復「進群」或者掃描下方二維碼即可進入無廣告交流群,
↓掃描二維碼進群↓

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/384213.html
標籤:其他
