Category: git

講到 Git 分支管理,我不愛用 GUI 工具,是個鐵桿指令派。慣用做法是在 VSCode 開啟 Git Graph,按 Ctrl+Shift+` 在下方開個終端機,下指令整理分支或執行合併,下完指令馬上從 Git Graph 線圖驗證結果是否符合預期。 我愛用指令的一大原因是方便與團隊成員溝通,...

分享前陣子新學到的 Git 小技巧,假設我有 Git 分支狀態如下: 從 fetaureA 開了分支 featureX 做了四次 Commit (Commit-X1 ~ Commit-X4),現在想將 featureX 改成從 featureB 分支出來,如下圖: 要在分支上完成這種移花接木動作...

我習慣開發分支合併到主分支前先做 Rebase 再合併 (延伸閱讀:直接合併 vs 先 Rebase 再合併)。舉例來說,假設我從 master 開了 featureX 分支開發,現在要合併回 master: 我會先從 featureX 分支 git rebase master 將 feature...

使用 Git 協同開發時,我常遇到以下情境。 從主分支 master 新開了 jeffrey-work 分支寫新功能,於此同時團隊其他成員(假設叫 Eric 好了)也從 master 開了分支改程式,比我早開發好已併入 master 並 push 到版控主機。得知消息後,我做了 fetch 取得遠端...

Git 最大的好處是可以隨心所欲 Commit、切 Branch,想做就做,盡情開發,歷程再怎麼瑣碎噁心都無所謂,反正原始碼 Push 前都可用 Git Rebase 指令重新整理到美美的再公諸於世(延伸閱讀:Visual Studio Git Push 前置作業 - Squash),只要表現在外的...

有台 Gitea 私服最近要搬家,整個資料夾移到新主機,重新註冊成 Windows 服務,安裝好新版 Git for Windows 後,Gitea 順利啟動,但點進 Repository 爆炸噴出 HTTP 500,從 Log 看到錯誤訊息: ...ules/context/repo.go:853...

程式版控不該發生,但難免會遇到的狀況 - 想移除歷史 Commit 裡不該被放進去的檔案,例如:無保存價值的大檔或是機密資料。 如果是無用大檔,即使將檔案刪除再 Commit,日後 clone 仍會佔用頻寬及儲存空間;而機密資料則是非清除不可。Git 允許我們修改歷史並 push -f 覆寫,但實務...

在 web.config PowerShell 更新函式庫中,我借用 git diff 比對 web.config 修改前後變化。由於並非所有主機都會安裝 Git for Windows,我想到讓工具自帶可攜版 Git for Windows Portable 的解法,但有點美中不足,Git for...

今天遇到一個問題,想從 Git 版控找出圖檔何時被改壞。圖檔不像程式碼能用 git blame 直接找出哪一行何時被誰修改,但至少可以知道檔案在何時被誰改過,再從 Commit 調閱當時的版本加以比對。這個需求肯定有方便的 GUI 工具可以做到,但我想練習用指令完成。 假設 Git 版控有四次 Co...

Git 工具內建更新功能,執行 git update-git-for-windows 指令即可自動下載更新。(參考:更新本機 Git 到最新版 by Poy) 不過在受管控網路環境,簡單到靠北的下載動作也會因 SSL 憑證問題卡關,我已見怪不怪: VS2017 Git SSL 憑證無效問題 npm...

同事遇到一個 Git 錯誤,印象裡我有遇過,原本信心滿滿準備找出 KB 文章秒殺它,卻發現上回沒寫筆記。幸好還記得原因跟解法,補上筆記。 錯誤會發生 Cmder 下 Git 指令或使用軟體執行 Git 版控動作時,訊息如下: fatal: Unable to create 'D:/git-sourc...

之前寫過小工具將 git diff 程式差異報告轉成網頁好讀版,讓版本控管流程更符合人性,但挑戰總是會接踵而來。同事通報,網頁好讀版在處理某個 Commit 差異報告時爆炸了。未看先猜檔案過大,果然,git diff 輸出檔高達 77MB!! 程式碼是純文字,77MB 都可以寫出賈維斯 Jarvis...

這是我自己常遇到的問題 - 先寫了專案雛型,用 git init 就地建立 Git Repository,在第一次 Commit 放入雛型版本,之後陸續修改加入新的 Commit。 專案第一次上線用 git diff 產出 Compare List,卻發現我無法列舉所有專案檔案。原因是產生 git ...

同事出了一題 Git 隨堂測驗:有 Git 歷程如下,feature 與 master 分支的合併位置有誤(下圖藍紫線交會處,Commit b9933b90),想拆掉重做,請問單兵如何處置? 第一次處理正式環境的取消合併,加上實際案例還涉及 pull、rebase,狀況又再複雜一些,讓我有點手忙腳...