在生活中,一個好的習慣就是常於備份,而Git就是來幫助我們備份代碼的。

也許你遇到這樣的情況:你做出了一個軟體並上線給到用戶在用,用戶在用的過程中,哪些功能體驗不好,你要去改善,這時候你要在原有的代碼基礎上做修改,但改之前,得做下備份,別改崩了呵呵。這時候你就有了文件A,當你將用戶提給你的這些方面改善好了,這時候你就有了修改文件B。

當又有用戶覺得其他方面體驗不好,你還得改,又多了文件C,依次一直文件D、E、F、G …直到無限。

這時候問題來了,假如當某一次改動上線後出現嚴重bug,在時間不允許時,你就得拿出最近一次備份的文件先頂一頂(俗稱版本回滾),這個其實還好辦。但假如不是最近一次,而是很久之前的,你這時候就需要去文件ABCDEFG…一個個去找,而此時面對著ABCD…的文件,你完全想不起來,當初備份的這個是啥?

這時候聰明的先賢們就想出了這麼一個辦法,叫版本管理器。

目前市面上優秀的版本管理器有兩個:

①集中式的SVN ②分散式的Git

版本管理器既然是幫我們做備份的,那麼問題來了,備份的文件放在哪?SVN既然是集中式的,那肯定就是中央集權,有一個統一的文件伺服器存放這些文件,每個人單獨與之做溝通,但集中式的註定了當作為核心的SVN伺服器掛掉之後,所有人都沒法幹活。而Git,它高明之處在於,人人平等,每個人都有一個完全屬於自己的獨立倉庫,儘管它也有一個中間的交互伺服器,但那僅僅只是作為一個中間媒介,當中間節點掛了,你本機有一整個的圖書館,不會對你有過大的影響。

本次我們就來看一看Git。

Git安裝啥的這裡就不說了,裝好Git,能純命令行當然好,不過新手建議裝個小烏龜TortoiseGit(這個也有SVN的,TortoiseSVN),裝完大概這樣吧:

裝好Git之後,先來看看Git此類的版本管理工具到底怎麼幫我們備份文件的。

備份文件按照常理來說,需要做以下事情:

1、誰備份的?

2、啥時候備份的?

這些不用我們開口Git就幫我們做了。接下來:

3、需要備份哪些文件?

4、備份的這些文件是幹嘛用的?

與單人備份有些不同的是,這是多人備份。你有可能你要備份的文件,在你備份之前被別人改過,而你手裡的文件暫時沒有別人改過的那部分代碼,甚至那部分代碼你也改了,這樣跟假如JavaScript是多線程,操作DOM時,瀏覽器要聽誰一樣。這時候,Git要聽誰的呢?所以需要:

5、更新別人的代碼。

6、看看是否有衝突,處理衝突。

7、你提交代碼,Git完成代碼備份。

我們一起看一個圖:

好了,你知道Git怎麼幫你備份了,那你要做的就是配合它,把流程走完(儘管你特別煩,走流程、走流程…煩不煩啊),但你要做的還是要配合,因為Git就是機器人,而且不是智能的,會自主學習和變通的,它只能走流程。

先看一看Git的命令行界面(還記得那個Git Bush Here嗎,點開,個人用起來比原生命令行界面好看、好用很多)

我們陪它走一遍流程(這裡暫不涉及到創建庫,刪除庫,切換分支,回滾等等),因為一般情況下,倉庫不會由新手去建= =,直接從克隆一份遠程倉庫的代碼開始,看下圖:

這就是最常見的走流程,Git沒什麼,就是走一個備份的流程,SVN呢?它的流程其實也差不多,而且SVN連本地倉庫都沒有,更簡單。

好了,走完了命令行,這裡也來走一下小烏龜(TortoiseGit)。

還是走流程,只不過變成可視化了,你不用敲命令了。

看到剛剛右鍵菜單的git 克隆了沒?點擊它,也可能是未漢化的git clone(跟你clone命令一樣,clone就是克隆的意思)。

輸入你的url,這個url可以是github上的,一般公司開發大多是區域網的gitLab。看一下github的:

克隆下來了,本地就有了一個倉庫。

我們順便可以看一看分支,因為一般情況下,Git會有一個主分支master,你是沒有許可權提交代碼的,還有一個work或者develop分支,這個是給你開發提交代碼用的,而master是給管理員最終測試完合併代碼用的。

我們這裡只有一個master主分支:

好了先不管命令行,開始我們的小烏龜走流程之旅吧。

假設我們新增了ccc.txt文件,同時又修改了裡面的bbb文件。變成這樣:

繼續走流程,這時候好像得走到 add 那裡了吧?嗯是的。

點擊Add。點確定就好了。實際上就是執行一句git add .,看看你新增了哪些文件。

接下來流程走到我們要更新代碼看看有沒有別人更新了啥對吧?再看看需不需要處理衝突。

也就是fetch和merge。(這兩個合起來就是pull)一個個來:

fetch:點擊上面的fetch,到這裡

嗯行,看看你更新了啥。然後按close關掉界面。

這裡我們剛剛才clone下來的,所以沒啥其他別人的代碼。

接下來就開始合併了,將我們的代碼先在本地倉庫進行合併(這裡沒其他人代碼不用處理衝突。),記得勾選no commit,先別提交我們的commit,最後一步再commit

好了之後,看到是最新的,無需處理衝突。這時候點commit。

這裡還記得上面的git commit -m 『你這些備份的文件是幹嘛的』。這時候你就要寫你幹了啥了。

將我們這些文件是用來幹嘛的告訴Git之後,是不是就剩一個流程,那就是提交了?

點擊這個push,push就是推,推送的意思。

這樣我們就完成了我們的推送,看一下遠程倉庫更新了沒。真的更新了哈。

這樣我們就完成了整一個的克隆、更新、提交代碼的流程。gitLab也是一樣的。

有一個有趣的情況就是,這種有時候是很容易覆蓋別人代碼的,特別是對於新手而言,emmm…沒事,覆蓋就覆蓋嘛,一個月每覆蓋3次,績效扣1分,扣3分封頂。這個是一個還行的建議,防止亂來,是不?= =


作者:dorseyCh

來源:慕課網

本文首次發佈於慕課網 ,轉載請註明出處,謝謝合作

推薦閱讀:

相關文章