Git - 提交更改

引言

你好,有抱負的程序员們!今天,我們將深入Git中最基礎的概念之一:提交更改。作為你們友好的鄰居計算機科學老師,我將一步一步地引導你們完成這個重要的過程。別擔心你們是編程新手——我們會從基礎開始,逐步提升。在這個教學結束時,你們將能像專家一樣提交更改!

Git - Commit Changes

什么是提交?

在我們深入了解如何操作之前,讓我們先了解提交到底是什麼。在Git中,提交就像是在你的專案中的某一個時間點拍攝一張快照。這是一種保存你的工作並追踪代碼庫中更改的方式。把它想象成在電子遊戲中創建一個檢查點——如果你需要,你可以隨時回到那個點。

提交的重要性

提交是構建你專案歷史的積木。它們讓你可以:

  1. 追蹤隨著時間的更改
  2. 高效地與他人合作
  3. 如果出錯,回退到之前的版本
  4. 了解你的專案是如何進化的

現在我們知道了提交的重要性,讓我們學習如何進行提交!

基本的Git提交工作流程

第一步:檢查狀態

在提交之前,檢查你的倉庫狀態總是個好主意。這會告訴你哪些文件已被修改、添加或刪除。

git status

你可能會看到類似這樣的輸出:

在 main 分支上
尚未為提交準備的更改:
(使用 "git add <file>..." 來更新將被提交的內容)
(使用 "git checkout -- <file>..." 來放棄工作目录中的更改)

修改:   hello_world.py

未添加任何更改以供提交(使用 "git add" 和/或 "git commit -a")

這個輸出告訴我們我們已經修改了一個名為 hello_world.py 的文件,但我們還沒有為提交準備它。

第二步:暫存更改

在我們能夠提交之前,我們需要暫存我們的更改。暫存就像是在結賬前把商品放入購物車。

為了暫存所有變更的文件:

git add .

為了暫存一個特定的文件:

git add hello_world.py

在暫存後,如果我們再次運行 git status,我們會看到:

在 main 分支上
即將提交的更改:
(使用 "git reset HEAD <file>..." 來取消暫存)

修改:   hello_world.py

第三步:提交更改

現在,我們已經暫存了我們的更改,我們準備好提交了!

git commit -m "添加hello world函數"

-m 標誌讓我們能夠直接在命令行中添加提交信息。總是寫下清晰、簡潔的信息來描述你做了哪些更改。

如果你現在運行 git status,你會看到:

在 main 分支上
沒有東西要提交,工作樹清潔

恭喜你!你剛剛完成了你的第一次提交!

高級提交技巧

修改提交

有時候,你可能會忘記添加一個文件,或者想要改變你的提交信息。無需創建一個新的提交,你可以修改最後一個提交:

git commit --amend

這會打開你的默認文本編輯器,你可以在其中修改提交信息。如果你想要添加遺忘的文件:

git add forgotten_file.py
git commit --amend

選擇性暫存

對於更多對你即將提交的內容的控制,你可以使用選擇性暫存:

git add -i

這會打開一個交互式菜單,你可以在其中選擇性地暫存文件的某部分。

提交的最佳實踐

以下是在進行提交時應遵循的最佳實踐:

實踐 描述
頻繁提交 與其偶爾進行大規模提交,不如進行小規模、頻繁的提交
寫清楚的信息 使用現在時態並在提交信息中描述你的更改
每個提交一個功能 每個提交應該代表一個單一邏輯上的更改
提交前測試 在提交前確保你的代碼能夠正常工作
覽閱你的更改 使用 git diff 在提交前瀏覽更改

查看提交歷史

要查看你的提交歷史,使用:

git log

這會顯示所有提交的列表,按時間逆序排列。你會看到類似於:

提交 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t
作者:你的名字 <[email protected]>
日期: Mon Jan 1 12:00:00 2023 +0000

添加hello world函數

提交 9s8r7q6p5o4n3m2l1k0j9i8h7g6f5e4d3c2b1a
作者:你的名字 <[email protected]>
日期: Sun Dec 31 23:59:59 2022 +0000

初始提交

結論

好了,各位!你們剛剛學會了在Git中提交更改的來龍去脈。記住,提交就像在遊戲中保存進度——經常做,以避免丟失你辛勤的工作。在你繼續你的編程旅程時,你會發現良好的提交習慣會在未來節省你的時間和麻煩。

實踐使人完美,所以不要害怕嘗試這些命令。在你意識到之前,你會在睡夢中提交更改(雖然我不建議在夢中編程——親自嘗試過,編譯錯誤會是個惡夢!)。

繼續編碼,繼續提交,最重要的是,繼續享受樂趣!下次見,這個你們友好的鄰居CS老師這就結束。祝你們提交愉快!

Credits: Image by storyset