前言
Git作為當今最流行的分布式版本控制系統,已經成為開發者必備的技能之一。無論你是獨立開發者還是團隊協作,掌握Git的基本操作都能極大提高工作效率。本文將詳細介紹Git的常用命令,幫助你快速上手并精通Git的基本使用。
一、Git基礎概念
在深入命令之前,我們先了解幾個Git的核心概念:
- 倉庫(Repository):項目所在的目錄,包含所有文件的歷史記錄
- 工作區(Working Directory):你當前編輯的文件目錄
- 暫存區(Staging Area):準備提交的文件暫存區域
- 提交(Commit):對文件更改的永久快照
- 分支(Branch):獨立開發線,默認有master/main分支
- 遠程倉庫(Remote):托管在網絡上的項目倉庫
二、Git安裝與配置
1. 安裝Git
Windows: 下載Git for Windows (Git for Windows)
Mac: 使用Homebrew brew install git
Linux: sudo apt-get install git
(Ubuntu/Debian) 或 sudo yum install git
(CentOS)
2. 基本配置
# 設置用戶名
git config --global user.name "Your Name"# 設置郵箱
git config --global user.email "your.email@example.com"# 查看配置
git config --list# 設置默認編輯器為VS Code
git config --global core.editor "code --wait"
三、Git常用命令詳解
1. 創建和克隆倉庫
# 在當前目錄初始化新倉庫
git init# 克隆遠程倉庫
git clone <repository-url># 克隆指定分支
git clone -b <branch-name> <repository-url># 克隆深度為1(只獲取最新版本,節省時間空間)
git clone --depth 1 <repository-url>
2. 基本工作流程
# 檢查當前文件狀態
git status# 添加文件到暫存區
git add <file-name> # 添加特定文件
git add . # 添加所有更改文件
git add -A # 添加所有更改(包括刪除的文件)
git add -u # 添加已跟蹤文件的更改# 提交更改
git commit -m "提交信息"# 提交并跳過暫存區(自動add已跟蹤文件)
git commit -a -m "提交信息"# 修改最后一次提交
git commit --amend
3. 查看歷史記錄
# 查看提交歷史
git log# 簡潔版歷史
git log --oneline# 顯示文件更改詳情
git log -p# 顯示最近n條提交
git log -n <number># 圖形化顯示分支
git log --graph --oneline --all# 顯示某個文件的修改歷史
git log -p <file-name># 顯示某人的提交
git log --author="name"# 按日期篩選
git log --since="1 week ago"
4. 分支管理
# 查看所有分支
git branch # 本地分支
git branch -a # 所有分支(包括遠程)
git branch -v # 查看分支最后提交# 創建新分支
git branch <branch-name># 切換分支
git checkout <branch-name># 創建并切換分支
git checkout -b <branch-name># 刪除分支
git branch -d <branch-name> # 安全刪除(已合并)
git branch -D <branch-name> # 強制刪除(未合并)# 重命名當前分支
git branch -m <new-name># 合并分支
git merge <branch-name># 變基(將當前分支變基到目標分支)
git rebase <branch-name>
5. 遠程操作
# 查看遠程倉庫
git remote -v# 添加遠程倉庫
git remote add <remote-name> <repository-url># 重命名遠程倉庫
git remote rename <old-name> <new-name># 刪除遠程倉庫
git remote remove <remote-name># 獲取遠程更新但不合并
git fetch <remote-name># 拉取遠程更新并合并
git pull <remote-name> <branch-name># 推送到遠程
git push <remote-name> <branch-name># 推送并設置上游分支
git push -u <remote-name> <branch-name># 強制推送(謹慎使用)
git push -f# 刪除遠程分支
git push <remote-name> --delete <branch-name>
6. 撤銷操作
# 撤銷工作區修改(未add)
git checkout -- <file-name># 撤銷暫存區修改(已add)
git reset HEAD <file-name># 撤銷提交(保留更改在工作區)
git reset --soft HEAD~1# 撤銷提交(保留更改在暫存區)
git reset --mixed HEAD~1 # 默認選項# 徹底撤銷提交(丟棄更改)
git reset --hard HEAD~1# 恢復特定提交
git revert <commit-hash># 恢復丟失的提交(通過reflog)
git reflog
git reset --hard <commit-hash-from-reflog>
7. 儲藏與清理
# 儲藏當前更改
git stash# 儲藏包括未跟蹤文件
git stash -u# 查看儲藏列表
git stash list# 恢復最近儲藏
git stash apply# 恢復指定儲藏
git stash apply stash@{n}# 刪除儲藏
git stash drop stash@{n}# 恢復并刪除儲藏
git stash pop# 清理未跟蹤文件
git clean -n # 預覽將被刪除的文件
git clean -f # 刪除未跟蹤文件
git clean -fd # 刪除未跟蹤文件和目錄
8. 標簽管理
# 列出標簽
git tag# 創建輕量標簽
git tag <tag-name># 創建附注標簽
git tag -a <tag-name> -m "tag message"# 查看標簽詳情
git show <tag-name># 刪除標簽
git tag -d <tag-name># 推送標簽到遠程
git push <remote-name> <tag-name># 推送所有標簽
git push <remote-name> --tags# 刪除遠程標簽
git push <remote-name> :refs/tags/<tag-name>
9. 子模塊管理
# 添加子模塊
git submodule add <repository-url> <path># 克隆包含子模塊的項目
git clone <repository-url>
git submodule init
git submodule update# 或者一步完成
git clone --recurse-submodules <repository-url># 更新子模塊
git submodule update --remote
10. 高級操作
# 交互式暫存
git add -i# 交互式變基
git rebase -i HEAD~n# 二分查找引入bug的提交
git bisect start
git bisect bad
git bisect good <commit-hash>
# 測試后標記當前提交為good或bad
git bisect reset # 結束二分查找# 重寫提交歷史(謹慎使用)
git filter-branch
四、Git最佳實踐
- 提交規范:
-
- 提交信息要清晰明確
- 遵循約定式提交(Conventional Commits)
- 示例:
feat: 添加用戶登錄功能
或fix: 修復登錄頁面樣式問題
- 分支策略:
-
- 主分支(master/main)保持穩定
- 功能開發使用feature分支
- 修復bug使用hotfix分支
- 長期維護使用release分支
- 工作流程:
-
- 頻繁提交,小步前進
- 一個提交只做一件事
- 提交前檢查更改
git diff
- 定期從上游拉取更新
- .gitignore文件:
-
- 忽略不需要版本控制的文件(如日志、構建產物等)
示例內容:
-
- text
*.log
node_modules/
.DS_Store
*.exe
五、常見問題解決
- 沖突解決:
-
- 發生沖突時,Git會在文件中標記沖突部分
- 手動編輯文件解決沖突
- 使用
git add
標記沖突已解決 - 完成合并
git commit
- 撤銷公共歷史:
-
- 避免對已推送的歷史進行
reset --hard
- 使用
git revert
創建反向提交
- 避免對已推送的歷史進行
- 大文件處理:
-
- 使用Git LFS管理大文件
- 避免將二進制文件加入Git
- 憑證存儲:
-
- 使用SSH密鑰避免每次輸入密碼
或配置憑證存儲:
-
- bashgit config --global credential.helper store
六、可視化工具推薦
- Git GUI客戶端:
-
- GitHub Desktop
- Sourcetree
- GitKraken
- Tower
- IDE集成:
-
- VS Code Git集成
- IntelliJ IDEA Git工具
- Eclipse EGit
- 在線工具:
-
- GitHub
- GitLab
- Bitbucket
結語
Git是一個功能強大且靈活的工具,本文介紹的只是最常用的命令和操作。隨著使用經驗的積累,你會逐漸發現更多高級用法來提高工作效率。記住,Git的核心思想是記錄項目的歷史變化,而不是簡單地保存當前狀態。掌握Git不僅能幫助你更好地管理代碼,還能讓你在團隊協作中游刃有余。