Category: git

前陣子分享將 Git diff 文件轉成網頁版程式異動對照表(Compare List)的做法,上路沒多久便觸礁。原因是一次新增大量檔案(例如:網站新增內容,包含大量 HTML、CSS、JS 檔全文)的 diff 檔可能超過 10MB,轉換產生的 HTML DOM 過於龐大讓瀏覽器很卡。Chrome...

前幾天提到開源專案 - Gitea 不僅跨平台、安裝設定超簡單(一個 exe 檔就搞定,還內建設定介面),號稱「輕量級」功能卻不陽春,不愧是架設 Git 私服的第一品牌。但對我而言有一點美中不足,Gitea 用 Golang 開發,用不順手想自己動手修改,我連專案怎麼開啟都不知道。 大部分的人都下...

昨天聊到在 Windows 架 Git 私服,留言區大家一面倒狂推 Gitea,力道之強,讓我覺得不試試看會終生遺憾。改變計劃,決定先把矮黑猩猩 (Bonobo Git Server) 放一旁,先來試試 Gitea。 我向來偏好輕巧簡單的解決方案,GitLab 功能強大但太笨重,相較之下,Gitea...

Git 是分散式版控,在任何資料夾下個 git init 指令就能開始管理版本,不管是 Side-Project、小程式,企劃案、設計草稿、專題作業還是碩士論文,Git 就能幫你保留版本回到從前,不用擔心改壞沒法重來。不過,只存在自己電腦風險太高,要是硬碟壞了心血結晶便付之東流,將資料定期推送到伺服...

用 Visual Studio 做 Git Rebase、Merge,操作到一半個人電腦忽因不明原因斷電(不是重開機,是電源自己關閉,疑似硬體問題格外讓人發毛,但會是另一個故事),重開機進入系統,除登入 Windows 時間稍久,其他看來還好。 等重新打開 Visual Studio 才發現不妙,斷...

為了升級 ASP.NET Core 5.0,我把 Visual Studio 2019 升到 16.8,發現 Git 介面做了大幅革新,新介面更好用,但要花點時間熟悉。 完整介紹可以看 Visual Studio PM Patrik 的部落格文章 - Announcing the Release o...

前幾天介紹了將 git diff 差異報告轉成 HTML 的簡便做法,讀者 LinnieKao 留言問到 git diff 顯示選項的問題,這裡補充說明。 diff2html 產生的左右對照比較表是最不花腦力最容易理解的形式,任何人都能輕易指出差異所在(看不看得懂程式在寫什麼是另一回事),但缺點是資...

程式異動對照表 (Compare List) 是上線流程必備文件之一,Git 內建 git diff 指令,能整理出鉅細靡遺的異動記錄,完整度之高,甚至能 Email 給其他開發者跑 git apply 同步原始碼版本,不管是複核、稽查或存證需求,git diff 報告的有效性無庸置疑。不過,純文字...

再談上線合併的分支策略一文提到「合併前先 Rebase 能做出乾淨漂亮的線形」(如下圖之上下對照),但比較費事,有時需重複排除修改衝突,這篇文章就來實證。 照慣例,用一段 DOS 批次檔備妥實驗環境: rem 請先建好實驗資料夾,並修改以下變數 set lab_folder=D:\GitTest ...

Git Cherry Pick 的後遺症一文聊過使用 Git 做上線合併可能遇到的困擾。若直接用 master 當開發主軸,開發者平日陸續提交 Commit,等要上線時就必須從交錯的 Commit 中 Cherry-Pick 挑出該次要上的項目拉進上線分支(例如: release)。若所有修改都要上...

這也是我曾被問過的 Git 問題,之前一知半解回答得哩哩辣喇 - 為什麼 Visual Studio 的 Git Commit 資訊欄有時會出現兩組人名時間?有時兩組不同人,有時是作者出現兩次?在什麼狀況下會出現? 這篇文章將試著回答以上問題。 Git 的每個 Commit 都有作者(Author...

前幾天看到龍哥的 YouTube 影片:【GIT 小教室】"~" 跟 "^" 有什麼不同?,赫然發現之前沒真的搞懂 HEAD1 HEAD2 的意義(其實「為自己學 Git」電子書裡有講,不知是沒翻到還是沒讀進腦袋裡,總之我就廢 Orz),難怪有時執行結果跟我想...

Git 版控入門算算一年多,自覺還算上手,能善用 Branch、Commit、Reset,要把程式改爛到回不去還真有些難度。而最美妙的是 - Git 屬分散式版控,在自己的機器可以隨意 Commit、Reset、開 Branch ,天王老子都不能管你,只要送上 TFS 或 Github 前先用 Sq...

我想處理的情境如下:Git Repository X 內含多個資料夾,每個資料夾可視為子專案,比如 Project A、B、C、D。隨著專案規模長大及時空環境改變,想將其中的 Project D 移出來,另外新建 Git Repository Y 獨立發展,而搬移時要求修改歷程必須保留。 爬文查了一...

昨天 Git 資料夾搬家一文發表後,讀者 Danny Lin 於小站留言提到一則重要觀念: 事實上 Git 並沒有記錄所謂的「搬檔/更名」動作,在 Git 眼中,不管搬檔案或檔案改名,都一律被視為刪除舊檔外加新增檔案,差別在於若刪除檔案與新增檔案的內容相似度達一定門檻(預設為50%),Git 就會將...

[2020-07-28 更正] 本篇提到使用 git mv 確保 git status 狀態為 renamed 的技巧非絕對必要性,即使狀態為 deleted + added,在 Commit 後 Git 也會自動判別成 renamed,詳情請見 冷知識 - Git 的搬檔更名跟你想的不一樣 隨著專...