什麼是 Git?
Git 是一個流行的版本控制系統。它是由 Linus Torvalds 於 2005 年建立的,自那時以來由 Junio Hamano 維護。
它用於:
- 跟蹤程式碼更改
- 跟蹤誰做出了更改
- 編寫協作
Git 做什麼?
- 使用倉庫管理專案
- 克隆專案以在本地副本上工作
- 使用暫存和提交來控制和跟蹤更改
- 分支和合並允許在專案的不同部分和版本上進行工作
- 將專案的最新版本拉到本地副本
- 將本地更新推送到主專案
使用 Git
- 在資料夾上初始化 Git,使其成為一個倉庫
- Git 現在會建立一個隱藏的資料夾,以跟蹤該資料夾中的更改
- 當檔案被更改、新增或刪除時,它被視為已修改
- 你選擇要暫存的已修改檔案
- 已暫存的檔案被提交,這會促使 Git 儲存檔案的永久快照
- Git 允許你檢視每個提交的完整歷史。
- 你可以恢復到以前的任何提交。
- Git 不會在每個提交中儲存檔案的單獨副本,而是跟蹤每個提交中所做的更改!
切換平臺:
- 將焦點轉向 GitHub
- 將焦點轉向 Bitbucket
- 將焦點轉向 GitLab
為什麼使用 Git?
- 超過 70% 的開發者使用 Git!
- 開發者可以從世界任何地方協同工作。
- 開發者可以檢視專案的完整歷史。
- 開發者可以還原到專案的早期版本。
什麼是 GitHub?
Git 不同於 GitHub。
GitHub 製作使用 Git 的工具。
GitHub 是世界上最大的原始碼託管服務,並自 2018 年起由 Microsoft 擁有。
在本教程中,我們將專注於使用 Git 與 GitHub。
Git 暫存環境
Git 的核心功能之一是暫存環境和提交的概念。
當你工作時,你可能會新增、編輯和刪除檔案。但無論何時你達到一個重要階段或完成工作的一部分,都應該將檔案新增到暫存環境。
已暫存的檔案是準備提交到你正在工作的倉庫的檔案。不久後,你將更多地瞭解提交。
目前,我們已完成了對 index.html 的工作。所以我們可以將它新增到暫存環境中:
git add index.html
檔案應該已被暫存。讓我們檢查狀態:
git status
在主分支上
尚未提交
待提交的更改:
(使用 "git rm --cached ..." 來取消暫存)
新檔案: index.html
現在該檔案已被新增到暫存環境。
Git 新增多個檔案
你還可以一次暫存多個檔案。讓我們向我們的工作資料夾新增 2 個檔案。再次使用文字編輯器。
一個描述倉庫的 README.md 檔案(推薦用於所有倉庫):
# hello-world
Hello World repository for Git tutorial
This is an example repository for the Git tutorial on https://www.w3schools.com
This repository is built step by step in the tutorial.
一個基本的外部樣式表(bluestyle.css):
body {
background-color: lightblue;
}
h1 {
color: navy;
margin-left: 20px;
}
並更新 index.html 以包括樣式表:
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<p>This is the first file in my new Git Repo.</p>
</body>
</html>
現在將當前目錄中的所有檔案新增到暫存環境:
git add --all
使用 --all
而不是單個檔名將會將所有更改(新檔案、修改過的檔案和已刪除的檔案)都暫存。
git status
在主分支上
尚未提交
待提交的更改:
(使用 "git rm --cached ..." 來取消暫存)
新檔案: README.md
新檔案: bluestyle.css
新檔案: index.html
現在所有 3 個檔案都已新增到暫存環境中,我們準備進行第一次提交。
如何新增新檔案到 Git 倉庫:從建立本地倉庫到新增檔案
新增 Git 新檔案
你剛剛建立了你的第一個本地 Git 倉庫。但它是空的。
所以讓我們新增一些檔案,或使用你喜歡的文字編輯器建立一個新檔案。然後儲存或移動它到你剛剛建立的資料夾中。
在這個示例中,我將使用一個簡單的 HTML 檔案,類似於這樣:
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello world!</h1>
<p>This is the first file in my new Git Repo.</p>
然後將它儲存到我們的新資料夾中,命名為 index.html
。
讓我們回到終端並列出當前工作目錄中的檔案:
ls
index.html
ls
會列出目錄中的檔案。我們可以看到 index.html
存在。
然後我們檢查 Git 的狀態,看它是否是倉庫的一部分:
git status
在主分支上
尚未提交
未跟蹤的檔案:
(使用 "git add ..." 來將其包含在將要提交的內容中)
index.html
沒有新增到提交但未跟蹤的檔案存在(使用 "git add" 來跟蹤)
現在 Git 已經意識到這個檔案了,但還沒有將它新增到我們的倉庫中!
Git 倉庫資料夾中的檔案可以處於以下 2 種狀態之一:
- 已跟蹤 - Git 已知道的檔案,並已新增到倉庫
- 未跟蹤 - 存在於你的工作目錄中,但尚未新增到倉庫
當你首次將檔案新增到空倉庫時,它們都是未跟蹤的。要讓 Git 跟蹤它們,你需要將它們暫存,或者將它們新增到暫存區。
我們將在下一章中介紹暫存區。
Git 提交
既然我們已經完成了工作,我們準備從暫存轉到提交我們的倉庫。
新增提交可以跟蹤我們的進度和更改。Git 將每個提交視為更改點或“儲存點”。如果你發現 bug 或想要做更改,它是專案中可以返回的一個點。
當我們提交時,應該始終包含一條訊息。
透過為每個提交新增清晰的訊息,對於自己(和其他人)來說,很容易看到發生了什麼以及何時發生的。
git commit -m "Hello World 的首次釋出!"
[master (root-commit) 221ec6e] Hello World 的首次釋出!
3 files changed, 26 insertions(+)
create mode 100644 README.md
create mode 100644 bluestyle.css
create mode 100644 index.html
commit
命令執行提交,-m "message"
新增一條訊息。
已暫存環境已被提交,訊息是:"Hello World 的首次釋出!"
不經過暫存提交
有時,當你進行小的更改時,使用暫存環境似乎是浪費時間。可以直接提交更改,跳過暫存環境。-a
選項會自動將每個已跟蹤的更改檔案新增到暫存區。
讓我們對 index.html
進行小更新:
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<p>This is the first file in my new Git Repo.</p>
<p>A new line in our file!</p>
</body>
</html>
並檢查我們倉庫的狀態。但這次,我們將使用 --short
選項以更緊湊的方式檢視更改:
git status --short
M index.html
注意:短狀態標誌是:
??
- 未跟蹤的檔案A
- 已新增到暫存M
- 修改過的檔案D
- 已刪除的檔案
我們看到我們預期的檔案已被修改。所以讓我們直接提交它:
git commit -a -m "用新行更新了 index.html"
[master 09f4acd] 用新行更新了 index.html
1 file changed, 1 insertion(+)
注意:通常不建議跳過暫存步驟。
跳過暫存步驟有時會導致包含不需要的更改。
Git 提交日誌
要檢視倉庫的提交歷史,可以使用 log
命令:
git log
這將顯示倉庫的提交歷史:
commit 09f4acd3f8836b7f6fc44ad9e012f82faf861803 (HEAD -> master)
Author: w3schools-test
Date: Fri Mar 26 09:35:54 2021 +0100
用新行更新了 index.html
commit 221ec6e10aeedbfd02b85264087cd9adc18e4b26
Author: w3schools-test
Date: Fri Mar 26 09:13:07 2021 +0100
Hello World 的首次釋出!
最後
為了方便其他裝置和平臺的小夥伴觀看往期文章:
微信公眾號搜尋:Let us Coding
,關注後即可獲取最新文章推送
看完如果覺得有幫助,歡迎 點贊、收藏、關注