iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 25
2
自我挑戰組

學什麼就寫什麼,知道什麼就分享什麼系列 第 25

與工程師的協作之路-初窺Git

要寫這篇,對我來說實在有點尷尬
因為對於Git我實在沒把握解釋得太好
試著開始去理解Git,也就是最近的事而已
以下如果有講得不好的地方,都歡迎各路良善的工程師私訊我、留言給我(或其他方式也行)
拉我一把~讓我把觀念導正,慢慢學好Git


今天講得會非常基礎、非常概念,而且很淺...
大概會淺到工程師覺得我都已經會微積分了你還教我123?/images/emoticon/emoticon16.gif

因為我就只會123嘛...
未來有機會可以懂更多的話,我再慢慢分享出來QAQ
請不要嫌棄/images/emoticon/emoticon02.gif


版控

這個詞對設計師來說其實蠻陌生的
一開始大概就使會想到

final
finalfinal
finalfinal2
finalfinal2-1
finalfinal3
finalfxxkingfinal
finalfxxkingfxxkingfinal
...
...
finalfxxkingfxxkingfinal2...

/images/emoticon/emoticon16.gif

工作中很常遇到不斷地改改改
但最後又丟一句「還是上次那個好」或是「還是第一版好」/images/emoticon/emoticon40.gif

對設計師是這樣,對工程師也是!

為了避免豬隊友誤砍/誤改你的檔案
或是客戶哪天夢中得到神的啟示決定要上上個月的某個版本...

隨著越來越多人加入團隊
finalfinalfinalfinalfinal已經不管用了~
反正那從來不是個開始,也不會是個結束

各種版控的想法與概念傾巢而出
就為了應付生活中那些逃不掉的尷尬窘境
於是乎,我們開始需要版控工具

SVN與Git

我所接觸的第一個版控工具是SVN
但是控版權限其實還在工程師手上
我只是負責更新檔案上去而已
背後發生了什麼事我其實不太清楚...

一開始接觸Git,我用對SVN的理解來看待
結果越搞越糟
我甚至把檔案直接砍掉想說重新下載就好...結果就整個壞了/images/emoticon/emoticon17.gif
不過配合的工程師人很好,沒把我揍一頓,只是非常認命幫我把Error解掉...

但我實在不想這樣每次都麻煩人家~打斷工程師的思緒啊QQ

於是我就開始研究並詢問工程師,想釐清到底發生什麼事...
工程師也抽出時間慢慢教我
讓我從「反正改完就是sop按這幾個鈕,然後紅字就找工程師」的階段,慢慢知道一點點我到底在做什麼~


存取方式的初步理解

SVN經過工程師跟我講解,我理解大致如下:
SVN是一種藉由不斷複製來做版控的工具。
有點類似我們的finalfinalfinal...
不過~他只會呈現最新的那個「final」給你看!
這樣做的缺點是「每改一次,容量就更大包」
需要的空間越來越大,但是很多空間卻是重複儲存,導致空間浪費
例如:
原始檔案是12345
第二個版本把5改成6
在SVN中就變成「12345」與「12346」兩種版本
其中的1234佔了兩倍空間,卻是一樣的資料內容,如果後面繼續這樣下去,1234就會不斷的增生長大,但內容完全一樣

而Git不太一樣~它是「標籤式」
也就是說,他只是幫你記錄哪邊有改過,而相同的檔案會以指向的方式去讀取舊檔
一樣拿上面的12345來看:
原始檔案是12345
第二個版本把5改成6
在Git裡,他只會紀錄第二版是「5改成6」,變成「12346」
但這邊的1234他會直接指向第一版
也就是說被多存的部分,真的就只有「5=>6」這個紀錄

這樣我就理解了為什麼我之前用SVN的方式會失效...
因為我在Git遇到1234有出入的錯誤,不知道該怎麼解又不想麻煩工程師,就想「乾脆把這支檔案砍掉重新load好了!」
但是他是指向性的呀!
我整支刪掉,對Git來說:恩恩!5改成6...OK!咦~啊1234咧???/images/emoticon/emoticon19.gif

...然後,就繼續紅字了。
(結果更麻煩工程師來幫我修復...)

Git與GitHub

說真的,這對我來說就像一開始看到「Java」與「Javascript」一樣...
什麼!?不是一樣的東西!?!?!?/images/emoticon/emoticon04.gif
(工程師:當然不是!笨蛋!)

Git
GitHub

恩...至少是有點關聯,不是完全不一樣的東西QQ
簡單來說,Git是一個「軟體工具」;而GitHub則是一個「提供儲存的地方」!
市面上使用Gti工具為概念來做成產品的公司有可能很多,但GitHub只是這些產品中最被廣為使用的其中一個罷了!

要使用Git你可以自己做,不用了解GitHub;但是要使用GitHub,你就必須得了解Git了~!

所以...講一堆到底是什麼?

老實說,我覺得自己還不是全然的清楚/images/emoticon/emoticon13.gif
不過這次鐵人文章,除了GitHub秀抖那幾天之外,所有圖片我都存在GitHub上
還不是因為鐵人站內建的圖片上傳工具真的難用!!! (不要吉我...)

由於是單人使用,比較不會遇到什麼Error
所以我就把它當成雲端在用了(反正免費的...)

不過我還是很想知道,Git概念到底是什麼
就又去吵工程師教我了~

Git最大的特色,是「分散式管理」
但依照目前單人使用的情況下,還無法表達何謂分散式
先用下圖說明「單線」的狀況:

Git單線

工程師跟我說~
就把add想像成我們到超市去~挑選蔬果的時候「放入購物車」的動作,你可以隨時新增或刪除
而commit就是我們已經去結帳了~訂單成立!這時候會留下紀錄點
(當然,在電腦的世界中是可以回朔的,但買東西要退貨的話可能會比較麻煩一點...)

目前我單人使用中...沒遇過什麼衝突(因為只是拿來存存圖片又是自己用...),但我還是先跟工程師了解,以後遇到才能猜猜可能發生什麼事/images/emoticon/emoticon36.gif

其實,到push之前的這些動作
就已經是在做「版控」了
只是都不需要網路
你可以在南極森林裡或是地底世界或月球上執行這些任務!(又在亂說話!)
直到覺得該推上網路去刷一下存在感了(X)
再用網路將這些日子以來的心酸血淚一次更新上去~

沒錯!在支線中的歷程也會一起上去!不是只有最後那個版本而已~所以中間不可以亂做壞事 (什麼鬼啦!)


Git真的好難QAQ
目前還在學習中,也不確定是否會有第二篇...
而且「分散式」也是懞懞懂懂,很難寫成一篇文章

只能說目前GitHub對我來說就是個雲端,甚至有工程師說你目前這樣的需求不用用到GitHub吧?
額...感謝建議喔~但我想了解這個東西的話,就是必須要用,不管目前需求是什麼,想學習就是我的目標,所以中間自己創造出一些需求也是個方法...

如果要寫第二篇,我得再多了解一些東西才行,大家就不要太期待了...(沒有人期待!)

那麼今天就先這樣,對於SVG和Git那段,我很誠實說我不是非常有把握是不是那回事
如果有錯請跟我說!我會在理解後更新!謝謝大家~~


上一篇
與工程師的協作之路-工具篇(InVision)
下一篇
與工程師的協作之路-協作沒有英雄
系列文
學什麼就寫什麼,知道什麼就分享什麼31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
Darwin Watterson
iT邦好手 1 級 ‧ 2018-11-08 10:32:03

Sourcetree

把 Sourcetree 玩熟後,這篇內容可以改成:

https://ithelp.ithome.com.tw/upload/images/20181108/20109107p0bQXpeGOE.png

Homura iT邦高手 1 級 ‧ 2018-11-08 10:42:54 檢舉

一拳超人0.0

Wen Chien iT邦新手 4 級 ‧ 2018-11-08 11:12:33 檢舉

點通知進來被嚇到....不知道的人還以為我上班偷看漫畫哩QAQ~

2
Homura
iT邦高手 1 級 ‧ 2018-11-08 10:47:56

可以看看保哥的鐵人賽文章
應該會對git學習很有幫助

Wen Chien iT邦新手 4 級 ‧ 2018-11-08 11:12:56 檢舉

努力研究!!!感謝大大~~

我要留言

立即登入留言