Git 課程筆記
一、Git 的介紹
1. Git 的誕生背景
Git 是 Linux 內核的作者 Linus Torvalds 為了更好地管理 Linux 內核開發而創建的版本控制系統。在 Linux 內核開發初期,由于開發者眾多,協作成本很高,后來使用了 BitKeeper 工具來輔助協作,但后來由于合作結束,Linus Torvalds 決定自己開發一套版本管理系統,這就是 Git。Git 是開源的,可以在 GitHub 上找到該項目。
2. Git 的作用
Git 的主要作用是幫助我們控制版本。如果沒有版本管理系統,我們在開發過程中可能會遇到很多問題,比如無法回到之前的版本、文件備份占用大量空間、多人協作時文件合并困難等。Git 能夠很好地解決這些問題。
二、Git 的安裝與配置
1. Git 的安裝
Git 的安裝相對容易,可以在官網找到不同操作系統的安裝包。以 Mac OS 為例,可以從官網下載安裝器,然后按照提示進行安裝。安裝完成后,可以通過 git --version
命令驗證是否安裝成功。
2. Git 的配置
在使用 Git 之前,需要進行一些配置,比如設置用戶名和郵箱。可以使用以下命令進行配置:
git config --global user.name "你的用戶名"
git config --global user.email "你的郵箱"
三、Git 的重要概念
1. Git、GitHub 和 GitLab
Git 是一個版本控制系統,GitHub 和 GitLab 是基于 Git 的代碼托管平臺。GitHub 是目前世界上最大的代碼托管平臺,很多開源項目都在上面。GitLab 則更適合企業內部使用,可以搭建私有的代碼托管平臺。
2. 工作區、暫存區和本地倉庫
工作區是我們平時編寫代碼的地方,當我們想要把工作區的變動提交到版本控制系統時,需要先將文件添加到暫存區,然后再提交到本地倉庫。
3. HEAD、分支和遠程倉庫
HEAD 指向當前所在的提交,分支是開發中的不同線路,遠程倉庫是團隊協作時用來共享代碼的倉庫。
四、單人開發者如何使用 Git
1. 基本工作流程
單人開發的基本工作流程包括創建項目、添加文件、提交變更等。可以使用 git init
創建新的 Git 項目,使用 git add
將文件添加到暫存區,使用 git commit
提交變更。
示例:創建項目并提交變更
-
創建項目目錄
mkdir myproject cd myproject
-
初始化 Git 項目
git init
-
創建并編輯文件
touch README.md echo "My Project" >> README.md
-
添加文件到暫存區
git add README.md
-
提交變更
git commit -m "Initial commit"
2. 實際開發場景
在實際開發中,可能會遇到很多問題,比如提交錯誤、想要撤銷變更、查看不同版本之間的差異等。可以使用 git reset
回退版本,使用 git stash
暫時存儲未提交的變更,使用 git diff
查看差異。
示例:回退版本
-
查看提交歷史
git log
-
回退到上一個版本
git reset --hard HEAD~1
示例:暫存未提交的變更
-
暫存變更
git stash
-
查看暫存列表
git stash list
-
應用暫存的變更
git stash pop
示例:查看差異
-
查看工作區與暫存區的差異
git diff
-
查看暫存區與本地倉庫的差異
git diff --staged
五、多人協作下如何使用 Git
1. 基本流程
多人協作的基本流程包括創建項目、克隆項目、提交變更、拉取遠程代碼等。可以使用 git clone
克隆遠程項目,使用 git push
將本地代碼推送到遠程倉庫,使用 git pull
拉取遠程代碼。
示例:克隆項目并提交變更
-
克隆遠程項目
git clone https://github.com/username/myproject.git
-
進入項目目錄
cd myproject
-
創建并切換到新分支
git checkout -b new-feature
-
編輯文件并添加到暫存區
git add .
-
提交變更
git commit -m "Add new feature"
-
推送變更到遠程倉庫
git push origin new-feature
2. 沖突解決
在多人協作中,可能會遇到沖突,比如兩個人修改了同一個文件的同一部分。解決沖突的方法是手動修改沖突部分,然后重新提交。
示例:解決沖突
-
拉取遠程代碼
git pull origin main
-
解決沖突
# 手動修改沖突部分
-
添加解決沖突的文件
git add .
-
提交解決沖突的變更
git commit -m "Resolve conflict"
-
推送變更到遠程倉庫
git push origin new-feature
3. 工作流
常見的 Git 工作流包括功能分支工作流、GitFlow 工作流等。功能分支工作流是為每個功能創建一個分支,開發完成后合并到主分支。GitFlow 工作流則更加復雜,包括開發分支、發布分支、熱修復分支等。
功能分支工作流
-
創建功能分支
git checkout -b feature-branch
-
開發功能
# 編輯文件
-
提交功能
git add . git commit -m "Add feature"
-
合并功能到主分支
git checkout main git merge feature-branch
-
刪除功能分支
git branch -d feature-branch
GitFlow 工作流
-
創建開發分支
git checkout -b develop
-
創建功能分支
git checkout -b feature-branch develop
-
開發功能
# 編輯文件
-
提交功能
git add . git commit -m "Add feature"
-
合并功能到開發分支
git checkout develop git merge feature-branch
-
創建發布分支
git checkout -b release-branch develop
-
發布版本
git tag -a v1.0 -m "Release version 1.0"
-
合并發布分支到主分支和開發分支
git checkout main git merge release-branch git checkout develop git merge release-branch
-
刪除發布分支
git branch -d release-branch
-
創建熱修復分支
git checkout -b hotfix-branch main
-
修復問題
# 編輯文件
-
提交修復
git add . git commit -m "Fix bug"
-
合并熱修復到主分支和開發分支
git checkout main git merge hotfix-branch git checkout develop git merge hotfix-branch
-
刪除熱修復分支
git branch -d hotfix-branch
六、在 IDEA 中優雅地使用 Git
IDEA 集成了 Git 功能,可以方便地進行版本控制操作。可以使用 IDEA 的圖形界面進行提交、切換分支、對比代碼等操作。
示例:在 IDEA 中提交變更
-
打開項目
# 在 IDEA 中打開項目
-
編輯文件
# 編輯文件
-
查看變更
# 在 IDEA 的 Version Control 面板中查看變更
-
提交變更
# 在 IDEA 的 Version Control 面板中提交變更
-
切換分支
# 在 IDEA 的 Version Control 面板中切換分支
-
合并分支
# 在 IDEA 的 Version Control 面板中合并分支
-
解決沖突
# 在 IDEA 的 Version Control 面板中解決沖突
七、Git Ignore
Git Ignore 文件用于指定哪些文件或目錄不需要被 Git 管理。可以使用 *.log
忽略所有日志文件,使用 target/
忽略整個 target 目錄等。
示例:創建 Git Ignore 文件
-
創建 Git Ignore 文件
touch .gitignore
-
編輯 Git Ignore 文件
# 忽略日志文件 *.log# 忽略目標目錄 target/
-
添加并提交 Git Ignore 文件
git add .gitignore git commit -m "Add .gitignore"
八、總結
1. Git 常用命令總結
命令 | 描述 |
---|---|
git init | 創建新的 Git 項目 |
git clone | 克隆遠程項目 |
git add | 將文件添加到暫存區 |
git commit | 提交變更 |
git status | 查看當前狀態 |
git log | 查看提交歷史 |
git branch | 查看或創建分支 |
git checkout | 切換分支 |
git merge | 合并分支 |
git push | 將本地代碼推送到遠程倉庫 |
git pull | 拉取遠程代碼 |
git reset | 回退版本 |
git stash | 暫時存儲未提交的變更 |
git diff | 查看差異 |
2. 單人開發與多人協作場景總結
在單人開發中,主要關注基本工作流程和實際開發場景中的問題解決。在多人協作中,需要關注基本流程、沖突解決和工作流。掌握這些內容,可以相對熟練地使用 Git 進行版本控制。
圖形解釋步驟
工作區、暫存區和本地倉庫的關系
工作區 -> 暫存區 -> 本地倉庫git add git commit
分支的創建和合并
main|vdevelop <- feature-branch^|git checkout -b feature-branch|vgit merge feature-branch
沖突解決流程
git pull origin main
解決沖突
git add .
git commit -m "Resolve conflict"
git push origin new-feature
希望這些詳細的筆記和圖形解釋步驟對你有所幫助!如果有任何問題或需要進一步的解釋,請隨時告訴我。