目錄
- 1. Git 基本操作
- 1.1 添加文件到暫存區
- 1.2 提交更改到本地倉庫
- 1.3 查看工作區狀態
- 1.4 查看提交歷史
- 1.5 查看引用日志(包括已刪除的記錄)
- 2. 版本回退與撤銷
- 2.1 版本回退
- 2.2 查看已刪除的提交記錄
- 3. 分支管理
- 3.1 查看分支
- 3.2 創建并切換到新分支
- 3.3 合并分支
- 3.4 刪除分支
- 4. 分支命名規范與用途
- 5. 忽略文件管理
- 5.1 創建 .gitignore 文件
- 6. 遠程倉庫操作
- 6.1 生成 SSH 公鑰
- 6.2 查看公鑰
- 6.3 添加遠程倉庫
- 6.4 拉取遠程倉庫代碼
- 7. 常見問題與解決方案
- 7.1 如何解決合并沖突?
- 7.2 如何撤銷已提交的更改?
- 7.3 如何查看遠程倉庫信息?
- 8. 總結
Git 是一個功能強大且廣泛使用的版本控制工具,適用于個人項目和團隊協作。本文整理并補充了常見的 Git 命令,涵蓋基本操作、分支管理、版本回退、忽略文件配置、遠程倉庫操作等內容,幫助你更高效地使用 Git 管理代碼。無論你是初學者還是有一定經驗的開發者,這篇指南都能為你提供清晰且實用的參考。
1. Git 基本操作
1.1 添加文件到暫存區
git add .
- 作用:將當前工作目錄下的所有更改(包括新建、修改、刪除的文件)添加到暫存區。
- 說明:
git add .
會遞歸添加當前目錄及其子目錄下的所有更改。如果只想添加特定文件,可以使用git add 文件名
。
1.2 提交更改到本地倉庫
git commit -m "提交信息"
- 作用:將暫存區的更改提交到本地倉庫,并附上描述性的提交信息。
- 注意:
- 提交信息應簡潔明了,清晰描述本次提交的內容,例如
git commit -m "Add user login feature"
。 - 如果提交信息為空,Git 會提示錯誤,建議始終提供有意義的提交信息。
- 提交信息應簡潔明了,清晰描述本次提交的內容,例如
1.3 查看工作區狀態
git status
- 作用:顯示當前工作目錄和暫存區的狀態,告訴你哪些文件被修改、暫存或未跟蹤。
- 使用場景:
- 檢查哪些文件需要
git add
或git commit
。 - 確認當前分支和工作區是否干凈。
- 檢查哪些文件需要
1.4 查看提交歷史
git log
- 作用:顯示當前分支的提交歷史,包括提交的哈希值(commit ID)、作者、日期和提交信息。
- 進階用法:
git log --oneline
:以單行形式顯示提交歷史,簡潔明了。git log --graph
:以圖形化方式顯示分支合并歷史。git log --author="用戶名"
:篩選特定作者的提交記錄。
1.5 查看引用日志(包括已刪除的記錄)
git reflog
- 作用:顯示所有引用操作的歷史記錄,包括提交、分支切換、版本回退等,即使某些提交已經被刪除。
- 使用場景:
- 找回被
git reset
刪除的提交。 - 查看分支的歷史操作記錄。
- 找回被
- 示例:
通過git reflog # 輸出示例: # abc1234 HEAD@{0}: reset: moving to abc1234 # def5678 HEAD@{1}: commit: Add new feature
git reset --hard abc1234
可以恢復到指定的引用狀態。
2. 版本回退與撤銷
2.1 版本回退
git reset --hard commitID
- 作用:將當前分支的 HEAD 指針重置到指定的
commitID
,并丟棄該提交之后的所有更改(包括工作區和暫存區)。 - 注意:
--hard
是危險操作,會徹底丟棄未保存的更改,建議先用git status
確認工作區干凈。- 如果需要保留工作區和暫存區的更改,可以使用
git reset --soft commitID
。
- 使用場景:撤銷錯誤的提交或回退到某個歷史版本。
2.2 查看已刪除的提交記錄
如前所述,git reflog
是查看已刪除提交的利器。通過 reflog
,你可以找到被 git reset
或其他操作刪除的提交的 commitID
,然后通過 git reset --hard commitID
恢復。
3. 分支管理
3.1 查看分支
git branch
- 作用:列出本地倉庫中的所有分支,當前分支前會有一個
*
標記。 - 進階用法:
git branch -r
:查看遠程分支。git branch -a
:查看本地和遠程所有分支。
3.2 創建并切換到新分支
git checkout -b dev
- 作用:創建名為
dev
的新分支,并立即切換到該分支。 - 等價操作:
git branch dev # 創建分支 git checkout dev # 切換到分支
3.3 合并分支
git merge 分支名
- 作用:將指定分支(
分支名
)的更改合并到當前分支。 - 操作步驟:
- 切換到目標分支(例如
git checkout master
)。 - 執行合并(例如
git merge dev
)。
- 切換到目標分支(例如
- 注意:
- 如果有沖突,Git 會暫停合并,提示解決沖突。
- 解決沖突后,需手動
git add
和git commit
完成合并。
3.4 刪除分支
git branch -d b1
- 作用:刪除已合并的分支
b1
。 - 注意:如果分支未合并,Git 會阻止刪除,需使用強制刪除:
git branch -D b1
- 強制刪除:直接刪除分支
b1
,無論是否已合并,謹慎使用。
4. 分支命名規范與用途
合理的分支命名和使用策略可以提高團隊協作效率。以下是常見的 Git 分支模型:
- master:生產分支,包含可部署到生產環境的穩定代碼。
- develop:開發分支,集成所有開發功能,供測試和驗證。
- feature/xxxx:功能分支,用于開發新功能,完成后合并到
develop
分支。命名示例:feature/user-auth
。 - hotfix/xxxx:修復分支,用于修復生產環境的緊急 bug,完成后合并到
master
、develop
和test
分支。命名示例:hotfix/login-bug
。
5. 忽略文件管理
5.1 創建 .gitignore 文件
.gitignore
-
作用:通過
.gitignore
文件指定不被 Git 跟蹤的文件或目錄。 -
常見忽略內容:
- 臨時文件:
*.log
、.DS_Store
。 - 依賴目錄:
node_modules/
、venv/
。 - 配置文件:
.env
、config.secret.yaml
。
- 臨時文件:
-
示例
.gitignore
文件:# 忽略日志文件 *.log # 忽略 node_modules 目錄 node_modules/ # 忽略環境配置文件 .env
-
注意:
.gitignore
文件需提交到 Git 倉庫,以確保團隊共享忽略規則。- 如果文件已被 Git 跟蹤,需先執行以下命令移除跟蹤:
git rm -r --cached 文件名
6. 遠程倉庫操作
6.1 生成 SSH 公鑰
ssh-keygen -t rsa
- 作用:生成 SSH 密鑰對,用于安全連接遠程 Git 倉庫(如 GitHub、GitLab)。
- 步驟:
- 運行命令,按提示設置保存路徑和密碼(可直接回車使用默認設置)。
- 默認生成文件:
~/.ssh/id_rsa
(私鑰)和~/.ssh/id_rsa.pub
(公鑰)。
6.2 查看公鑰
cat ~/.ssh/id_rsa.pub
- 作用:顯示公鑰內容,復制后添加到遠程倉庫(如 GitHub 的 SSH Keys 設置)。
- 注意:確保公鑰正確添加到遠程倉庫,否則無法通過 SSH 推送代碼。
6.3 添加遠程倉庫
git remote add origin git@<倉庫地址>
- 作用:將本地倉庫與遠程倉庫關聯,
origin
是遠程倉庫的默認別名。 - 示例:
git remote add origin git@github.com:username/repository.git
6.4 拉取遠程倉庫代碼
git pull
- 作用:從遠程倉庫拉取最新代碼并合并到當前分支。
- 等價操作:
git fetch origin git merge origin/分支名
- 注意:如果本地和遠程分支沖突,需先解決沖突。
7. 常見問題與解決方案
7.1 如何解決合并沖突?
- 執行
git merge 分支名
時,如果出現沖突,Git 會標記沖突文件。 - 打開沖突文件,手動修改沖突部分(通常以
<<<<<<<
、=======
、>>>>>>>
標記)。 - 解決沖突后,執行:
git add . git commit
7.2 如何撤銷已提交的更改?
- 如果想撤銷最后一次提交,但保留更改:
git reset --soft HEAD^1
- 如果想徹底撤銷提交并丟棄更改:
git reset --hard HEAD^1
7.3 如何查看遠程倉庫信息?
git remote -v
- 作用:顯示當前倉庫關聯的遠程倉庫地址。
8. 總結
通過以上命令和規范,你可以輕松管理 Git 倉庫,實現代碼版本控制、分支協作和遠程同步。以下是快速參考表:
命令 | 作用 |
---|---|
git add . | 添加所有更改到暫存區 |
git commit -m "信息" | 提交更改到本地倉庫 |
git status | 查看工作區狀態 |
git log | 查看提交歷史 |
git reflog | 查看引用日志(包括已刪除記錄) |
git reset --hard commitID | 回退到指定版本 |
git branch | 查看分支 |
git checkout -b 分支名 | 創建并切換到新分支 |
git merge 分支名 | 合并指定分支到當前分支 |
git branch -d 分支名 | 刪除已合并分支 |
git branch -D 分支名 | 強制刪除分支 |
git pull | 拉取遠程倉庫代碼 |
git remote add origin 地址 | 添加遠程倉庫 |