Visual Studio Code設定熱鍵執行git commit與push / Setup a Hotkey to Execute Git Commit and Push in Visual Studio Code
除了設定「keybinding.json」之外,還要記得讓git push加上「--force-with-lease」喔。
Visual Studio Code
https://code.visualstudio.com/
Visual Studio Code (簡稱VS Code) 是一款由Microsoft開發的跨平台程式碼編輯器。它是一個輕量、快速且功能豐富的工具,專為開發者而設計,支援多種編程語言和框架。
以下是一些Visual Studio Code的特點和功能:
- 跨平台支援:VS Code可在Windows、macOS和Linux上運行,讓開發者可以在不同的作業系統上使用相同的工具和環境。
- 語言支援:VS Code支援多種程式語言,包括常見的JavaScript、TypeScript、Python、C#、Java、HTML、CSS等,並提供相關的語法高亮、程式碼提示、程式碼片段等功能。
- 擴充性:VS Code具有強大的擴充性,開發者可以根據自己的需求安裝各種擴充套件,擴展其功能和特性。市場上有大量的擴充套件可供選擇,涵蓋了各種領域,包括程式語言支援、版本控制、自動完成、語法檢查、主題等。
- 整合性開發環境:VS Code提供了許多功能便利的整合套件,如內建的Git支援、終端機、偵錯器等。這些工具使開發者可以在單一介面中完成各種開發任務,提高效率。
- 操作友善的界面:VS Code擁有乾淨、直觀的使用者界面,可自定義的佈局和主題選擇。它提供了簡單而強大的功能,如分頁編輯、多個工具列、全螢幕模式等,以提供最佳的使用體驗。不過對多螢幕的支援較差。
- 快速且高效:VS Code在啟動速度和執行效能方面表現出色。它具有快速的編輯器反應速度,並支援智慧型的程式碼補完和快速導航功能,有助於提高開發速度和效率。
在Netbeans實在是無法因應現代開發環境之後,我現在主要都在使用VS Code。在VS Code的眾多功能中,我最常用的功能就是git的提交(commit)與推送(push)。
既然這功能這麼常用,那我們當然要把它設為熱鍵(hotkey)啦。
自訂熱鍵 / Keybinding
熱鍵的設定需要編輯VS Code的keybindings.json檔案。請開啟VS Code並進行以下操作:
- 開啟功能表列的「檔案」。
- 進入「喜好設定」
- 進入「設定檔(預設)」。
- 按下「顯示內容...」。
此時主要側邊欄會顯示「設定檔: 預設」的所有設定檔。我們可以找到「鍵盤快速鍵」底下的「keybindings.json」。開啟keybindings.json後,可以新增讓git執行提交與推送的指令。
以下是Linux版本的設定,請注意藍字的「alt+p」跟紅字的指令:
{
"key":"alt+p",
"command":"terminalCommandKeys.run",
"args":{
"cmd":"git add . && git commit -m \"`[ -f ./commit_message.txt ] && cat ./commit_message.txt``date`\" --allow-empty && git push --force-with-lease && exit 0",
"newTerminal":true,
"saveAllFiles":true,
"showTerminal":false,
"focus":false
}
}
藍字的「alt+p」表示綁定的熱鍵。而紅字的指令則是在Linux中要git新增檔案、執行提交(提交訊息為現在的時間)、推送、最後關閉終端機。如果你使用的是Windows,紅字的指令可以改成「git add . && git commit -m "Commit at %TIME%" && git push --force-with-lease && exit」。在keybindings.json的設定上,Windows版本可以用以下的方式設定:
{
"key":"alt+p",
"command":"terminalCommandKeys.run",
"args":{
"cmd":"git add . && git commit -m \"Commit at %TIME%\" && git push --force-with-lease && exit",
"newTerminal":true,
"saveAllFiles":true,
"showTerminal":false,
"focus":false
}
}
編輯keybindings.json的時候,要注意維持正確的JSON格式,陣列中的元素之間記得加上「,」。
https://jsonformatter.curiousconcept.com/#
你可以用JSON Formatter & Validator來檢查整個keybindings.json的格式是否正確。它還會指出錯誤的地方,很好用的喔。
更安全的強制推送 / Push force with lease
以前我的熱鍵指令只用了「git push」,並沒有加上「--force-with-lease」,這使得用指令所進行的git push會被VS Code擋下來。你必須再多按一次推送才能真的push上去。
https://stackoverflow.com/a/56485045
儘管可以在偏好設定裡面的「Git: Allow Force Push」開啟強制推送的功能,但這在多人協作的時候可能會覆蓋掉遠端儲存庫中別人寫好的檔案,並不推薦使用。
https://blog.walterlv.com/post/safe-push-using-force-with-lease.html
現在比較推薦的做法是在git push後面加上「--force-with-lease」。如果推送時發現遠端儲存庫的檔案比較新,則它會回報錯誤。此時需要用「git fetch」取回較新的程式碼、嘗試解決衝突,之後再做「git push --force-with-lease」的時候就不會出現錯誤了。
結語 / In closing
是說我每次都忘記VS Code自訂熱鍵設定的位置。每次我都會開啟「鍵盤快速鍵」的設定,但那是不正確的做法,應該要開啟的是keybindings.json。這次總算好好地把它寫下來了。這次連帶的一併解決了git push的疑惑,真的是意外的收穫。
最後要來問的是:你會在VS Code使用那些熱鍵呢?
1. Ctrl + S 儲存檔案
2. Ctrl + W 關閉檔案
3. Ctrl + F 搜尋文字
4. Ctrl + H 取代文字
5. 其他
歡迎在下面留言分享喔!