Git 簡易觀念教學

什麼是Git?

Git是一種分散式版本控制系統,為了能更好的整合開發人員和維運人員,使團隊成員能更有效率地傳達自己的工作成果。

為甚麼使用Git?

可能會有不少人會想說,既然都可以上傳為何要使用對一般使用者而言較不直觀的Git。

Git有以下幾種優點:

1.兼容性佳

Git 與目前使用的所有操作系統兼容。Git 存儲庫還可以讀取其他版本控制系統的存儲庫,例如 SVN、CVK 等。Git 可以直接讀取這些 SVN 創建的遠程存儲庫。

2.Branch(分支)

Git 允許其用戶在與主項目文件並行運行的行上工作。這些線稱為Branch。Git 中的Branch提供了一項功能,可以在不影響原始版本的情況下對項目進行更改。藉由一些Git命令,可以輕鬆地完成分支和合併。

3.佔用的空間非常小

因為可能有數百名用戶在同一個項目上工作,所以中央存儲庫中的數據可能非常龐大。人們可能會擔心將這麼多數據複製到本地主機可能會導致系統故障,但 Git 已經解決了這樣的問題。Git 遵循無損壓縮標準,壓縮數據並將其存儲在本地存儲庫中,佔用的空間非常小

4.免費且開源

Git 是一個免費的開源分佈式版本控制系統,為了快速高效地處理從小型項目到大型項目的所有事務。它被稱為開源,因為它提供了根據用戶需要修改其源代碼的靈活性。開源 Git 允許多人同時處理同一個項目,並且可以非常輕鬆高效地相互協作。因此,Git 被認為是當今最好的版本控制系統。

5.可信賴度高

中央存儲庫的數據會一直在每個協作者的本地存儲庫中備份。因此,在中央服務器崩潰的情況下,數據永遠不會丟失,因為它可以很容易地被開發人員的任何本地機器取回。中央服務器全部修復後,多個協作者中的任何一個都可以重新獲得數據。任何開發人員都無法獲得數據的可能性非常低,因為最後參與該項目的開發人員肯定會在其本地計算機上擁有該項目的最新版本。

6.安全性高

Git 將每個協作者所做的所有提交記錄在開發人員的本地副本上。每次下push指令時,都會維護一個日誌文件並將其push到中央存儲庫。所以當出現問題時,則開發人員可以輕鬆追蹤和處理它。

Git, Github, Gitlab有甚麼不同?

Github跟Gitlab都是基於Git工具搭建的管理工具,這就像是在問電子郵件與Gmail或奇摩信箱有甚麼不同一樣。Git 是一個版本控制系統,我們可以通過它維護更改的歷史。許多服務器提供商提供此服務。Gitlab、Github 就是其中之二。

Github跟GitLab相比起來,Github的可用性較高,並且較注重基礎性能,而 Githab 更專注於為 Web 開發人員提供一個功能性系統和一個集中的集成平台。除此之外,Github 對用戶更友好,因為它不需要熟悉 Linux shell,但另一方面,Github 的保存更改需要很長時間,大約 10 分鐘,而 Gitlab 的重新配置存儲為代碼,大約只需要一分鐘。因為Gitlab 備份是一個命令行實用程序,這個備份行為運行在與 Gitlab 相同的 Linux 服務器上。

GitLab 具有與 GitHub 和 Git 不同的高級功能:

具有身份驗證等級GitLab具有根據等級添加和修改人員權限等功能。

內置 CI/CD 工具GitLab 具有自動使用 CI/CD 測試等功能,無需人工。

上傳本地檔案至GitLab常見流程

常見Git指令

git init :

在新增完目錄後,我們可以下init 指令創建一個新的 Git 存儲庫(repository),這個指令僅適用於您從頭開始創建自己的新存儲庫時。它將一個目錄變成一個空的 git 存儲庫。但須注意,當使用git clone將現有遠端存儲庫複製到新的本地存儲庫時,不需要下git init指令

git clone <url> :

一旦使用者下了這個指令,會自動設定將現有的遠端存儲庫(Remote)複製到新的本地目錄(Local)中

git status :

git status 顯示工作目錄和暫存區的狀態。它用來查看哪些更改已暫存,哪些尚未暫存,以及 Git 未追蹤哪些文件。

git add <file name> :

git add 用於將文件內容添加到索引(暫存區)。git add 將當前內容更新到暫存區,並且為下一次提交準備暫存內容。除此之外 add 有一個很方便的功能如果要將所有文件內容一次添加,可以下 git add . 。這時下status 指令可以看到目前所有文件都已添加完成,並且是unstaged的狀態。

git commit -m "註解" :

commit 命令就是用來提交暫存區所有文件至終端,後面引號內可以寫任何想要註解的內容,這時則是staged的狀態。

git log :

查看commit的歷史記錄。

git remote add <remote name> <url> :

在push之前我們應該先在 GitLab 新增一個遠端存儲庫 (Remote Repository),並使用這個指令將本地存儲庫加入遠端存儲庫。一般而言這個存儲庫的簡稱我們會預設為origin,而後面的url要從GitLab上clone下來。

git push <remote name> <branch name> :

git push 命令用於將本地存儲庫內容上傳到遠程存儲庫,而查看branch name的方式將會在後面介紹到。

git branch:

前面有提到branch是git一個非常方便的功能,Git 中的branch是一種在不影響項目主要部份的情況下仍然能夠繼續開發新功能或對軟件進行修改的方法。

branch指令能夠查看這個存儲庫內有哪些branch。若要新增branch 則可以下branch <branch name>指令。

git checkout <branch name>:

進入特定branch的指令。

git merge:

當分支出來的功能修改或開發完成,想要合併回主要部份的時候,就可以下merge指令。