CodeGym /課程 /C# SELF /開發者的日常流程:Commit、Push 與 .gitignore

開發者的日常流程:Commit、Push 與 .gitignore

C# SELF
等級 26 , 課堂 1
開放

1. 開始工作:克隆專案

我們從上堂課停下的地方開始。你在 GitHub 上有一個倉庫,現在需要把它的本地副本拉到你的電腦上以開始工作。這個流程叫做 克隆

步驟 1. 啟動你的 IDE。如果你已經打開某個專案,通過 File -> Close Project 關閉它。在啟動畫面選擇 Clone RepositoryGet from VCS

步驟 2. 在打開的視窗貼上你倉庫的 URL。這種方式對於克隆別人的倉庫特別有用。URL 可以從 GitHub 倉庫頁面複製出來。

如果你要克隆自己的倉庫(我們的情況),最方便的是直接從 IDE 登入你的 GitHub 帳號。為此選擇 Log in to GitHub 選項。IDE 會打開瀏覽器進行授權。

JetBrains IDE 在 GitHub 的授權視窗

在打開的頁面上放心點那個綠色按鈕 Authorize JetBrains。之後你就能直接在 IDE 裡從清單選擇自己的倉庫。選擇需要的專案然後點 Clone

步驟 3. IDE 會問你是否信任這個專案。因為這是你自己的倉庫,就點 Trust Project

步驟 4. 防毒軟體設定(Windows 使用者)

Windows 的防毒軟體可能會提示 IDE 嘗試執行它不認識的操作。既然我們要建立並執行程式,就需要允許 IDE 正常工作。點選「Automatically」,讓 IDE 自動把需要的資料夾加入防毒排除清單。

2. 保存變更:Commit

commit — 是專案在某個時刻的「快照」或已保存的狀態。把它想像成遊戲裡的存檔點:如果出問題可以回到這個點。每個 commit 有唯一的識別碼和描述變更的訊息。

        gitGraph
        commit id: "Initial commit"
        commit id: "Add user authentication"
        commit id: "Fix login button bug"
        commit id: "Refactor database connection"
    
歷史提交。每個新的 commit 都建立在前一個之上,構成專案的時間線。

步驟 1. 做出更動。

如果你克隆的是新建的倉庫,它通常只包含一個檔案 — README.md

打開 README.md,加入你的專案描述。當你開始編輯時,IDE 會在專案面板把該檔案名稱標為 藍色。這表示檔案已被修改,但還沒被 Git 保存。IDE 會在你改動的地方顯示 綠色線條

步驟 2. 打開 Commit 視窗。

IDE 左側有個 Commit 分頁。打開它你會看到所有準備保存的變更。對於第一次 commit,這個視窗特別重要。

我們來看看能看到些什麼:

  • Changes: 這裡是已經被 Git 追蹤但被修改的檔案。在我們的例子中是我們剛編輯的 README.md,裡面加入了專案計畫。
  • Unversioned Files: 這些是新檔案,Git 在專案資料夾內看到了它們,但還沒有開始追蹤。

你可能會問:要不要把所有這些系統檔案也加入倉庫?

好消息是,當我們在 GitHub 建倉庫時,通常會選擇一個 .gitignore 範本。這個檔案已經包含規則,告訴 Git 忽略不需要的資料夾或檔案。關於它我們會在課程末尾詳細講。

現在我們第一個 commit 的任務是把專案的主要檔案加入歷史,並寫好 commit 訊息。

步驟 3. 做出 commit。

點下 Commit 按鈕。完成!你已經在本地倉庫保存了一個「快照」。檔案會恢復成正常顏色。

3. 把變更發到 GitHub:Push

你的 commits 目前只存在你的電腦上。要和團隊分享或把它們保存在可靠地方,需要把它們發到遠端倉庫 GitHub。

        sequenceDiagram
        participant 本地倉庫 (你的電腦)
        participant 遠端倉庫 (GitHub)

        note over 本地倉庫 (你的電腦): 你已經做了一個或多個 commit。
它們只存在這裡。 本地倉庫 (你的電腦) ->> 遠端倉庫 (GitHub): git push (發送 commits) note over 遠端倉庫 (GitHub): 你的 commits 被複製
並安全地保存在伺服器上。
你的本地 commits 被發送到遠端伺服器,讓專案歷史同步。

步驟 1. 點 Push 按鈕。

在 IDE 右上角有個綠色向上的箭頭 —— 那是 Push 按鈕。點它。

步驟 2. 檢查並確認。

會打開一個視窗,顯示所有準備發送的 commits。這是最後一次確認你要發送的內容。點 Push

如果一切成功,你會看到提示: Pushed commits to origin/main. Create pull request

步驟 3. 在 GitHub 檢查結果。

發送成功後打開你倉庫的 GitHub 頁面,你會看到你的變更已經出現。

4. Git 控制面板

在 IDE 裡有個專門的 Git 選單,在頂部工具列可以找到。這是你版本控制的操作中心。我們快速看幾個常用項目。

  • Commit: 打開之前講過的保存變更視窗。
  • Push: 打開發送 commits 到 GitHub 的視窗。
  • Update Project: 非常重要的功能。它會下載其他團隊成員的新變更(執行 git pull)。每天工作前早上都按一下!
  • Branches: 打開分支管理視窗。我們會在下一堂課詳細講分支。
  • Show Git Log: 顯示專案的所有 commit 歷史。你的個人時間機器。

5. 使用 .gitignore 檔案

如果你在專案裡加入了一些系統檔案,不想讓它們意外提交到倉庫,可以把它們加入忽略清單。為此有個檔案叫 .gitignore。當專案裡有不該放到版本控制的檔案(例如暫存檔、log、密碼)時,這個檔案非常有用。

步驟 1. 先在專案目錄建立要忽略的檔案,例如 notes.txt。建立後如果 IDE 提示是否把它加入 Git,選 Cancel

步驟 2. 在 Project 視窗對剛建立的檔案按右鍵。選擇 Git --> Add to .gitignore --> Add to .gitignore。這個選項會把選中的檔名加入專案根目錄下的 .gitignore

如果你還沒有 .gitignore 檔,IDE 會提示你建立,接受即可。

步驟 3. IDE 會自動把檔名加入 .gitignore

加入 .gitignore 後,被忽略的檔案會以灰色或褐色顯示。嘗試 commit 時這些檔案會被忽略。像 .idea 這類資料夾可以加入忽略清單。

別忘了把 .gitignore 本身也 commit 到倉庫並 push,這樣項目裡的所有人都會使用相同的忽略規則。

排除本地檔案:.git/info/exclude

除了專案級的 .gitignore(對所有參與者生效)之外,Git 還允許你在 .git/info/exclude 裡建立本地忽略規則。這些規則不會被提交到倉庫,只在你本地副本生效。

這對於忽略那些只在你環境中出現的 IDE 生成檔案很有用,這些檔案不應該進版本控制,但又只影響你自己。

重要! 本地忽略規則只對你本地的倉庫副本生效。

如果我已經 commit 了怎麼辦?

.gitignore 只會忽略尚未被追蹤的新檔案。如果你已經把某個檔案 commit 了,它已經在倉庫歷史中,Git 會繼續追蹤它,即便你後來把它加入 .gitignore。針對這類情況有個終端指令:git rm --cached <file>。這部分需要另外再學習。

.gitignore 規則

.gitignore 裡寫入檔名或資料夾的模式,Git 根據這些模式忽略對應的檔案與資料夾。

空行會被忽略。要寫註解請在行首加上 #

模式範例:

  • * — 代表任意數量的任意字元。例如 *.log 會忽略所有副檔名為 .log 的檔案。
  • / — 放在模式最後代表目錄。例如 logs/ 會忽略整個 logs 資料夾的內容。
  • ! — 放在行首會反轉規則。例如,如果你有 *.log 規則,但想追蹤 important.log,可以加一行 !important.log
  • ** — 匹配任意層級的巢狀資料夾。例如 **/temp 會忽略所有層級下名為 temp 的資料夾。

.gitignore 範例檔案


# Skompilirovanny kod
/bin/
/obj/

# Vremennye fajly
*.tmp
*.swp

# Logi
*.log

# Papki, sozdavaemye IDE
.idea/
*.user
*.suo

# Virtual'nye okruzhenija i zavisimosti
/venv/
/node_modules/

現成範本

你不需要從零開始寫這些規則。有社群驗證過的現成範本可以用:

  1. GitHub 上的 .gitignore 收藏,針對不同語言和框架: https://github.com/github/gitignore
  2. gitignore.io — 一個方便的網站服務,能根據你的技術棧生成 .gitignore
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION