一、基礎(chǔ)配置
-
設(shè)置用戶信息
git config --global user.name "Your Name"# 配置全局用戶名(提交代碼時(shí)顯示的作者)git config --global user.email "your@email.com"# 配置全局郵箱(需與遠(yuǎn)程倉庫賬號(hào)綁定)git config --global core.editor "code --wait"# 配置默認(rèn)編輯器(示例為 VS Code,提交時(shí)調(diào)用) -
查看與修改配置
git config --list# 列出當(dāng)前所有配置項(xiàng)(含全局 / 本地倉庫配置)git config user.name# 單獨(dú)查看用戶名配置git config --global --unset user.email# 刪除全局郵箱配置(需重新設(shè)置時(shí)使用)
二、倉庫操作
-
初始化與關(guān)聯(lián)倉庫
git init# 在當(dāng)前目錄創(chuàng)建新 Git 倉庫(生成隱藏的.git 文件夾)git remote add origin <倉庫URL># 關(guān)聯(lián)本地倉庫到遠(yuǎn)程倉庫(首次推送前執(zhí)行)git remote -v# 查看已關(guān)聯(lián)的遠(yuǎn)程倉庫地址(顯示 fetch/push 雙向地址) -
克隆遠(yuǎn)程倉庫
git clone <倉庫URL># 將遠(yuǎn)程倉庫完整復(fù)制到本地(含所有分支歷史)git clone <倉庫URL> --depth 1# 克隆淺倉庫(僅拉取最新 1 次提交,節(jié)省時(shí)間)git clone <倉庫URL> <自定義目錄名># 克隆到指定本地目錄(避免目錄名與倉庫名一致) -
狀態(tài)與日志查看
git status# 查看工作區(qū) / 暫存區(qū)文件狀態(tài)(紅色 = 未暫存,綠色 = 已暫存)git log# 顯示詳細(xì)提交歷史(含作者、時(shí)間、commit id)git log --oneline# 簡潔格式顯示歷史(僅顯示 commit id 前 7 位 + 提交信息)git log --graph --oneline# 圖形化顯示分支合并歷史(直觀查看分支走向)git reflog# 查看所有操作記錄(含已刪除提交、reset 操作,用于找回誤刪內(nèi)容)
三、文件操作
-
暫存與提交更改
git add <文件名># 將指定文件從工作區(qū)添加到暫存區(qū)git add .# 添加當(dāng)前目錄所有修改(新增 / 修改 / 刪除文件)到暫存區(qū)git add -p <文件名># 交互式添加(逐段選擇文件修改內(nèi)容,避免冗余提交)git commit -m "標(biāo)簽: 提交信息"# 提交暫存區(qū)到本地倉庫(標(biāo)簽參考:feat/fix/docs)git commit -am "標(biāo)簽: 提交信息"# 直接提交已跟蹤文件(跳過 git add,未跟蹤文件無效)git commit --amend# 修改最近一次提交信息(未推送到遠(yuǎn)程時(shí)使用) -
撤銷與恢復(fù)修改
git checkout -- <文件名># 丟棄工作區(qū)對指定文件的修改(恢復(fù)到最近提交 / 暫存狀態(tài))git reset HEAD <文件名># 將暫存區(qū)的文件撤回至工作區(qū)(取消 git add 操作)git restore <文件名># (新版 Git)替代 git checkout --,丟棄工作區(qū)修改git restore --staged <文件名># (新版 Git)替代 git reset HEAD,將暫存區(qū)文件撤回git rm <文件名># 刪除文件并添加到暫存區(qū)(等價(jià)于手動(dòng)刪除后 git add)git rm --cached <文件名># 從暫存區(qū)移除文件,但保留本地文件(停止跟蹤該文件)
四、分支管理
-
分支基礎(chǔ)操作
git branch# 顯示所有本地分支(當(dāng)前分支前帶 *)git branch -a# 顯示所有分支(本地 + 遠(yuǎn)程,遠(yuǎn)程分支格式:remotes/origin/xxx)git branch -vv# 查看分支與遠(yuǎn)程分支的跟蹤關(guān)系(如 main -> origin/main)git branch <新分支名># 創(chuàng)建新分支(基于當(dāng)前分支最新提交,不切換)git checkout -b <新分支名># 創(chuàng)建新分支并立即切換(舊版命令)git switch -c <新分支名># 創(chuàng)建新分支并立即切換(新版 Git 推薦,更直觀)git checkout <分支名># 切換到已存在的本地分支(舊版命令)git switch <分支名># 切換到已存在的本地分支(新版 Git 推薦) -
分支刪除與合并
git branch -d <分支名># 刪除本地已合并的分支(未合并會(huì)提示失敗,防止誤刪)git branch -D <分支名># 強(qiáng)制刪除本地分支(無論是否合并,謹(jǐn)慎使用)git merge <分支名># 將指定分支合并到當(dāng)前分支(如合并 dev 到 main)git merge --abort# 合并沖突時(shí),放棄當(dāng)前合并操作(回到合并前狀態(tài))git rebase <分支名># 變基操作(將當(dāng)前分支提交 “嫁接” 到目標(biāo)分支,使歷史更線性)git rebase --abort# 變基沖突時(shí),放棄當(dāng)前變基操作 -
遠(yuǎn)程分支同步
git fetch# 拉取遠(yuǎn)程倉庫所有分支更新(不合并到本地,僅同步信息)git fetch origin <分支名># 拉取遠(yuǎn)程指定分支的更新(節(jié)省時(shí)間)git pull# 拉取遠(yuǎn)程跟蹤分支更新并合并(等價(jià)于 git fetch + git merge)git pull origin <遠(yuǎn)程分支>:<本地分支># 拉取遠(yuǎn)程分支并合并到指定本地分支git push -u origin <分支名># 推送本地分支到遠(yuǎn)程并建立跟蹤(首次推送新分支用)git push# 推送本地當(dāng)前分支到遠(yuǎn)程跟蹤分支(已建立跟蹤后使用)git push origin --delete <分支名># 刪除遠(yuǎn)程分支(需先確保本地分支已處理)
五、高級(jí)操作
-
版本回退
git reset --soft HEAD~1# 撤銷最近 1 次提交(保留工作區(qū) / 暫存區(qū)修改,僅刪提交記錄)git reset --mixed HEAD~1# 撤銷最近 1 次提交(保留工作區(qū),刪除暫存區(qū),默認(rèn)模式)git reset --hard HEAD~1# 徹底撤銷最近 1 次提交(刪除工作區(qū) / 暫存區(qū)修改,謹(jǐn)慎?。?/p>git reset --hard <commit-id># 回滾到指定 commit(需先通過 git log 獲取 commit id)git revert <commit-id># 創(chuàng)建新提交撤銷指定提交(已推送到遠(yuǎn)程時(shí)使用,不破壞歷史) -
標(biāo)簽管理(版本標(biāo)記)
git tag# 列出所有本地標(biāo)簽(常用于標(biāo)記發(fā)布版本,如 v1.0.0)git tag -a <標(biāo)簽名> -m "描述"# 創(chuàng)建帶注釋的標(biāo)簽(含版本說明,推薦)git tag <標(biāo)簽名># 創(chuàng)建輕量標(biāo)簽(僅記錄 commit id,無額外信息)git tag -d <標(biāo)簽名># 刪除本地標(biāo)簽git push origin <標(biāo)簽名># 推送指定標(biāo)簽到遠(yuǎn)程倉庫git push origin --tags# 推送所有本地標(biāo)簽到遠(yuǎn)程倉庫git push origin --delete <標(biāo)簽名># 刪除遠(yuǎn)程標(biāo)簽 -
臨時(shí)暫存(工作區(qū)保存)
git stash# 暫存當(dāng)前工作區(qū)未提交的修改(臨時(shí)切換分支時(shí)使用)git stash list# 查看所有暫存的 stash 記錄(按時(shí)間排序,stash@{0} 為最新)git stash pop# 恢復(fù)最近 1 次 stash 的內(nèi)容,并刪除該 stash 記錄git stash drop <stash-id># 刪除指定 stash 記錄(如 git stash drop stash@{1})
六、沖突解決
-
差異對比
git diff# 顯示工作區(qū)與暫存區(qū)的文件差異(未 git add 的修改)git diff --staged# 顯示暫存區(qū)與最新提交的文件差異(已 git add 未 commit 的修改)git diff <分支1> <分支2># 比較兩個(gè)分支的所有文件差異git diff <commit-id1> <commit-id2># 比較兩個(gè) commit 之間的差異 -
沖突處理工具
git mergetool# 啟動(dòng)外部合并工具(如 VS Code、Beyond Compare)解決沖突git cherry-pick <commit-id># 將指定 commit “復(fù)制” 到當(dāng)前分支(跨分支復(fù)用單個(gè)提交)git checkout --theirs <文件名># 沖突時(shí),選擇遠(yuǎn)程分支的文件版本git checkout --ours <文件名># 沖突時(shí),選擇本地分支的文件版本
使用提示
- 分支命名建議:main(主分支)、dev(開發(fā)分支)、feature/xxx(功能分支)、hotfix/xxx(緊急修復(fù)分支)
- 提交信息規(guī)范:按 “標(biāo)簽:描述” 格式(如 feat: 新增登錄功能、fix: 修復(fù)支付 bug),可通過 git hook 強(qiáng)制校驗(yàn)
- 危險(xiǎn)操作預(yù)警:git reset --hard、git checkout -- <文件> 會(huì)刪除本地修改,執(zhí)行前建議用 git status 確認(rèn)狀態(tài)
- 幫助查詢:任何命令后加 --help(如 git merge --help)可查看官方詳細(xì)文檔