GIT,你的時光回溯器

更新於 發佈於 閱讀時間約 2 分鐘

我們寫程式,難免修修改改,今天訂下版本0.1,明天訂到版本0.2。結果老闆要你臨時用0.1改個版面出貨,然後0.3趕快發布內部測試使用。


這時適合你的好工具就是版本控制軟體,我推薦GIT。


早期我寫程式遇到要備份或是改版,是先將整個資料夾壓縮完畢以後,複製一份出來,再去做更改。這樣改錯以後,也可以用原來的壓縮備份擋去改回來。


如果程式碼少少功能少少,你又總是只維護這一個,那麼我想沒什麼問題。


可是時間久了,我常常想不起來A程式我做了什麼東西,B程式新增了什麼功能,C程式版本V1.0 V2.0 V3.0間有什麼不同。


尤其一種情況是業務需求C程式需要版本V1.0客製化出貨,版本V3.0又要繼續開發新功能。

如果你有這個困擾,那麼該開始使用版本控管軟體了。


用[GIT]這樣的版本控管軟體可以有幾個好處:


1. 時光回溯,隨時回到這個版本


GIT 提交一個版本的方式叫做commit。

程式你有時寫著寫著功能完成了,於是提交commit 交差。這時你有個大膽的想法,會改動許多的地方,你一做下去沒日沒夜。於是你每完成一小段都commit 一下。

然後連日操勞下的你某天不知道改了什麼東西,有些功能就是沒辦法ctrl + z 弄回來了。

幸好你在那之前有個commit,你可以用git reset回到那個commit點,重新修改。


2. 用git提交版本能有段話寫個紀錄,log你可以看


我們軟體設計師,這個也可以做,那個也可以做,只要軟體可以完成的都不是問題。(嗯,問題就要來了)當你做的夠多的時候,有天老闆問你這個程式是幹嘛的,你一看覺得這孩子好陌生是不是別人生的阿?(可是部門就只有你一個軟體工程師)


這個情況下,用 git log 可以帶回你的記憶,只要你每次commit好好面對,寫清楚提交這個版本功能是幹嘛的,看一輪以後你就知道你這個程式是做什麼的了。


3. 利用分支功能,區別不同階段的程式


A客戶很欣賞你的軟體,業務報了個好價錢之後想要使用。

接著B客戶說只想要你的軟體某段功能,C客戶又問除了原始功能以外還想要新增功能。

業務興奮的說都可以賣,我們客製化為您報價。然後就是讓你想想辦法具體怎麼做。


GIT的辦法就是ABC分支。


給A客戶的,我們主線程式當中新建一個A分支,然後修潤一下打包出貨。

從A分支再分叉出去新建B分支,修修剪剪以後打包出貨給B客戶。

然後是C客戶了,他要新增功能,我們用主線再分叉出去新建C分支,寫完他想要的功能,一樣打包出貨。


以後哪個客戶有問題了,你不用再去查東查西,先到出貨給他的分支看看log,就能知道你當初寫的功能是什麼。(commit 那段話的提交真的很重要,要好好寫)


結論


在我們有限的時光當中,人生不能從來。但GIT的世界內可以平行宇宙,無限分支。


avatar-img
5會員
29內容數
這裡分享程式,心情,生活,讓大家溫暖的事
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
卡密優的心情記事 的其他內容
[工作][中] 我們線針鑽孔的技術是由此日本公司 I社 暨負責人來台教授的。這邊稱呼他K先生。 他們的營業項目主要是技術的傳授,以及相關製作技術的機台轉介,以及線針轉售。
[工作][中] 鑽孔技術的難易度,其實跟鑽孔孔徑大小有直接關係。技術上,越小越難鑽。 沒有從事過這行業的人可能難以理解,想像居家鑽孔,一般居家修繕水電要鑽孔的孔徑大小4-6mm不等,有時更大到12mm都有。而鑽孔機鑽電路板或治具板材則是不一樣的概念
[工作][中] 我被找回原東家工作是2013年的事,前東家老闆想要進行線針鑽孔事業,在跟研發顧問討論後出現我的名字,便跟我通了電話詢問我是否願意回來擔任線針專案主管的意願。
[工作][中] 2016年我還在PCB代測廠工作的時候,接下了一件任務,前往公司的大陸昆山廠進行線針治具設廠作業。不過在介紹線針治具之前,我想先介紹電路板測試。
[工作][中] 我們線針鑽孔的技術是由此日本公司 I社 暨負責人來台教授的。這邊稱呼他K先生。 他們的營業項目主要是技術的傳授,以及相關製作技術的機台轉介,以及線針轉售。
[工作][中] 鑽孔技術的難易度,其實跟鑽孔孔徑大小有直接關係。技術上,越小越難鑽。 沒有從事過這行業的人可能難以理解,想像居家鑽孔,一般居家修繕水電要鑽孔的孔徑大小4-6mm不等,有時更大到12mm都有。而鑽孔機鑽電路板或治具板材則是不一樣的概念
[工作][中] 我被找回原東家工作是2013年的事,前東家老闆想要進行線針鑽孔事業,在跟研發顧問討論後出現我的名字,便跟我通了電話詢問我是否願意回來擔任線針專案主管的意願。
[工作][中] 2016年我還在PCB代測廠工作的時候,接下了一件任務,前往公司的大陸昆山廠進行線針治具設廠作業。不過在介紹線針治具之前,我想先介紹電路板測試。
本篇參與的主題活動
某個夜晚我們獲得緊急命令,全體戰鬥營分成若干小隊,去金門海岸各哨崗偕同戰士守夜。興奮無比,我被分配到海邊的一個小戰壕裡,當然還有一位正規士官陪同。 我們輪流守望,注意眼前的海面,不能走神,看到有不尋常的動靜,馬上搖電話告知總部。什麼是不尋常的動靜?老士官解釋了許多,我還是看不出個所以然來。
第一次聽到「想要擁有一個幸福的童年,永遠不會太晚。」覺得有點扯淡,但後來慢慢理解其中的深意:童年經驗多如牛毛,你可以挑選不同的回憶,改變對它們的看法,重新理解與塑造你的童年,那你就可以即時擁有「一個幸福的童年」。當然,如果你想要擁有一個不幸的童年,那也永遠不會嫌太遲,只要依同樣的方法炮製即可。
當今的四年級生,小時候真的沒甚麼好玩的。大女生跳橡皮筋玩沙包,大男生玩彈珠尪仔標,小一點的小孩兒就跳房子玩一二三木頭人或老鷹抓小雞。
有人說回憶是初老的症狀,大家是否也有同樣的感覺,似乎年紀越大越喜歡回憶過往,不過這似乎真的就是人生的一個部份。 在父親過世後,二哥將老舊的平房整個打掉,父親的離開就是因為有天半夜起床要去上廁所,但老舊平房屋頂的屋瓦早已有了無數個大大小小的洞,父親因為連日下雨漏水造成家裡地面濕滑而意外跌倒
想起沈復的〈兒時記趣〉,在記憶裡搜索了以後,決定也來寫自己的兒時記趣,一共六則小故事。
語文教育的前輩們成立國語日報董事會,台大校長傅斯年兼任董事長,董事們全不領報酬,有人捐出自己的版稅給報社;他們多年作出無私的奉獻,終於穩住了局面,七十多年來未曾間斷的日日出報,蓬勃發展到今天。
某個夜晚我們獲得緊急命令,全體戰鬥營分成若干小隊,去金門海岸各哨崗偕同戰士守夜。興奮無比,我被分配到海邊的一個小戰壕裡,當然還有一位正規士官陪同。 我們輪流守望,注意眼前的海面,不能走神,看到有不尋常的動靜,馬上搖電話告知總部。什麼是不尋常的動靜?老士官解釋了許多,我還是看不出個所以然來。
第一次聽到「想要擁有一個幸福的童年,永遠不會太晚。」覺得有點扯淡,但後來慢慢理解其中的深意:童年經驗多如牛毛,你可以挑選不同的回憶,改變對它們的看法,重新理解與塑造你的童年,那你就可以即時擁有「一個幸福的童年」。當然,如果你想要擁有一個不幸的童年,那也永遠不會嫌太遲,只要依同樣的方法炮製即可。
當今的四年級生,小時候真的沒甚麼好玩的。大女生跳橡皮筋玩沙包,大男生玩彈珠尪仔標,小一點的小孩兒就跳房子玩一二三木頭人或老鷹抓小雞。
有人說回憶是初老的症狀,大家是否也有同樣的感覺,似乎年紀越大越喜歡回憶過往,不過這似乎真的就是人生的一個部份。 在父親過世後,二哥將老舊的平房整個打掉,父親的離開就是因為有天半夜起床要去上廁所,但老舊平房屋頂的屋瓦早已有了無數個大大小小的洞,父親因為連日下雨漏水造成家裡地面濕滑而意外跌倒
想起沈復的〈兒時記趣〉,在記憶裡搜索了以後,決定也來寫自己的兒時記趣,一共六則小故事。
語文教育的前輩們成立國語日報董事會,台大校長傅斯年兼任董事長,董事們全不領報酬,有人捐出自己的版稅給報社;他們多年作出無私的奉獻,終於穩住了局面,七十多年來未曾間斷的日日出報,蓬勃發展到今天。
你可能也想看
Google News 追蹤
Thumbnail
這篇文章將介紹工程師使用版控和git的相關知識和技能,包括版本控制的意義和git的基本指令,以及開發流程和webhook的概念。
版本控制 (Version Control), 是一種追蹤檔案被更改歷史的技術, 是團隊合作必備的工作實務[1]。 我在博士一二年級時期, 比較像是單打獨鬥, 與合作的學弟妹也是一對一溝通, 可以維持同步,把研究成果做出來。 然而,當我到博士三年級以後,
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
※ 簡短說明Git 和 Git Flow 是什麼?如何應用? Git 是什麼? Git是一個分散式版本控制軟體,能夠紀錄檔案的狀態變化,以及協調多個開發者之間的工作。它允許團隊成員協作編輯和管理項目的代碼庫,並且能夠追蹤文件的歷史變更、恢復到以前的版本、合併不同版本的代碼,以及解決代碼衝突等。
※ Git(四) 空的資料夾無法被加入 Git 進行版本控制,但這個資料夾如果又是很重要的資料夾,你會怎麼處理? 當空的目錄無法被加入 Git 進行版本控制時,有以下的做法可以解決: 在那個空目錄裡隨便放一個檔案就行了。 在這個資料夾中添加一個名為 .gitkeep 的空檔案,讓 Git 能
Thumbnail
最近在找資料的時候,偶然發現了兩個有趣的 git 指令:git commit --fixup 和 git rebase -i <sha> --autosquash。 研究了下發現對於像我這種每次 commit 都要斤斤計較,盡可能完美的人來說非常好用,因此寫一篇筆記記錄一下用法。
※ 關於Git (二) 請寫下從 Github 上複製一個專案下來,做一次遞交,然後推上去會用到的所有 git 指令。 複製專案(Clone) markdown-here: git clone https://github.com/adam-p/markdown-here.git 如果在訊息
關於Git(一) 版本管理系統是什麼?為什麼要用? 版本管理系統(Version Control System,VCS)是一種追蹤和管理項目代碼、文件和資源變更的工具。 工作流程上可防止每個人因使用自己的開發程式搭配不同且不相容的工具所引起的混亂。版本控制會同步處理版本,並確定變更不會與其他人
Thumbnail
這篇文章將介紹工程師使用版控和git的相關知識和技能,包括版本控制的意義和git的基本指令,以及開發流程和webhook的概念。
版本控制 (Version Control), 是一種追蹤檔案被更改歷史的技術, 是團隊合作必備的工作實務[1]。 我在博士一二年級時期, 比較像是單打獨鬥, 與合作的學弟妹也是一對一溝通, 可以維持同步,把研究成果做出來。 然而,當我到博士三年級以後,
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
※ 簡短說明Git 和 Git Flow 是什麼?如何應用? Git 是什麼? Git是一個分散式版本控制軟體,能夠紀錄檔案的狀態變化,以及協調多個開發者之間的工作。它允許團隊成員協作編輯和管理項目的代碼庫,並且能夠追蹤文件的歷史變更、恢復到以前的版本、合併不同版本的代碼,以及解決代碼衝突等。
※ Git(四) 空的資料夾無法被加入 Git 進行版本控制,但這個資料夾如果又是很重要的資料夾,你會怎麼處理? 當空的目錄無法被加入 Git 進行版本控制時,有以下的做法可以解決: 在那個空目錄裡隨便放一個檔案就行了。 在這個資料夾中添加一個名為 .gitkeep 的空檔案,讓 Git 能
Thumbnail
最近在找資料的時候,偶然發現了兩個有趣的 git 指令:git commit --fixup 和 git rebase -i <sha> --autosquash。 研究了下發現對於像我這種每次 commit 都要斤斤計較,盡可能完美的人來說非常好用,因此寫一篇筆記記錄一下用法。
※ 關於Git (二) 請寫下從 Github 上複製一個專案下來,做一次遞交,然後推上去會用到的所有 git 指令。 複製專案(Clone) markdown-here: git clone https://github.com/adam-p/markdown-here.git 如果在訊息
關於Git(一) 版本管理系統是什麼?為什麼要用? 版本管理系統(Version Control System,VCS)是一種追蹤和管理項目代碼、文件和資源變更的工具。 工作流程上可防止每個人因使用自己的開發程式搭配不同且不相容的工具所引起的混亂。版本控制會同步處理版本,並確定變更不會與其他人