Git作為目前最流行的分布式版本控制系統,已經成為開發者必備的技能之一。本文將全面介紹Git的核心概念、基本操作、分支管理以及與GitHub的協作開發,幫助讀者從零開始掌握Git的使用。
一、Git概述
1.1 Git發展歷史
Git誕生于2005年,由Linux之父Linus Torvalds開發。當時Linux內核開發社區與BitKeeper(當時使用的版本控制系統)的合作關系終止,促使Linus開發了Git這一全新的版本控制系統。Git的設計目標包括:
-
極快的速度
-
簡單的設計
-
強大的非線性分支支持(支持上千個并行開發分支)
-
完全分布式架構
-
高效處理大型項目(如Linux內核)
1.2 Git與SVN對比
特性 | Git(分布式) | SVN(集中式) |
---|---|---|
架構 | 每個開發者都有完整倉庫副本 | 只有一個中央倉庫 |
網絡依賴 | 大部分操作不需要網絡 | 幾乎所有操作都需要網絡 |
分支處理 | 輕量級分支,創建/切換快速 | 分支是目錄拷貝,操作較慢 |
提交速度 | 本地提交,極快 | 必須連接服務器,較慢 |
歷史查看 | 本地即可查看完整歷史 | 需要連接服務器查看歷史 |
適用場景 | 適合分布式團隊協作 | 適合集中管理的團隊 |
二、Git安裝與配置
2.1 Windows系統安裝
-
下載Git:訪問Git官網下載Windows版本
-
安裝Git:
-
運行安裝程序
-
基本保持默認選項,一路"Next"
-
安裝完成后可在右鍵菜單看到Git選項
-
-
安裝TortoiseGit(圖形界面工具):
-
下載TortoiseGit并安裝
-
安裝過程中配置Git路徑(通常是
C:\Program Files\Git\bin\git.exe
) -
設置用戶名和郵箱(用于標識提交者)
-
-
安裝中文語言包(可選):
-
下載對應版本的中文語言包
-
安裝后在TortoiseGit設置中選擇中文界面
-
2.2 基本配置
配置全局用戶名和郵箱:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
查看配置信息:
git config --list
三、Git基礎操作
3.1 創建倉庫
命令行方式:
mkdir myproject
cd myproject
git init
圖形界面方式:
-
在文件夾中右鍵選擇"Git在這里創建版本庫"
-
確認后會在目錄下生成
.git
隱藏文件夾
3.2 工作區與暫存區
-
工作區:實際看到的項目目錄
-
暫存區(stage/index):臨時存放修改的地方
-
版本庫:
.git
目錄,存儲所有版本數據
文件狀態變化流程:
工作區 → git add → 暫存區 → git commit → 版本庫
3.3 基本操作命令
-
添加文件到暫存區:
git add filename # 添加單個文件
git add . # 添加所有修改
-
提交到版本庫:
git commit -m "提交說明"
-
查看狀態:
git status
-
查看修改內容:
git diff # 查看工作區與暫存區差異
git diff --cached # 查看暫存區與版本庫差異
-
查看提交歷史:
git log
git log --pretty=oneline # 簡潔顯示
3.4 撤銷修改
-
丟棄工作區修改:
git checkout -- filename
-
從暫存區撤回:
git reset HEAD filename
-
版本回退:
git reset --hard HEAD^ # 回退到上一個版本
git reset --hard commit_id # 回退到指定版本
四、遠程倉庫
4.1 GitHub使用
-
創建SSH Key:
ssh-keygen -t rsa -C "your.email@example.com"
生成的公鑰(id_rsa.pub
)內容添加到GitHub賬戶的SSH Keys中
-
添加遠程倉庫:
git remote add origin git@github.com:username/repo.git
-
推送本地分支:
git push -u origin master # 第一次推送
git push origin master # 后續推送
-
克隆遠程倉庫:
git clone git@github.com:username/repo.git
4.2 遠程操作命令
-
查看遠程倉庫:
git remote -v
-
從遠程獲取更新:
git fetch origin # 只獲取不合并
git pull origin master # 獲取并合并
-
刪除遠程分支:
git push origin --delete branch_name
五、分支管理
5.1 分支基本操作
-
創建分支:
git branch dev # 創建分支
git checkout dev # 切換分支
git checkout -b dev # 創建并切換
-
查看分支:
git branch # 查看本地分支
git branch -r # 查看遠程分支
git branch -a # 查看所有分支
-
合并分支:
git checkout master # 切換到主分支
git merge dev # 合并dev分支
-
刪除分支:
git branch -d dev # 刪除已合并分支
git branch -D dev # 強制刪除未合并分支
5.2 解決沖突
當合并分支出現沖突時:
-
手動編輯沖突文件(Git會用
<<<<<<<
,=======
,>>>>>>>
標記沖突內容) -
解決沖突后重新添加并提交:
git add filename
git commit -m "解決沖突"
5.3 分支策略
推薦的工作流程:
master分支:僅用于發布穩定版本
dev分支:集成開發分支
feature分支:開發新功能(每個功能一個分支)
六、Git高級技巧
6.1 忽略文件
創建.gitignore
文件,添加需要忽略的文件模式:
# 忽略所有.class文件
*.class# 忽略target目錄
target/# 忽略特定文件
config.properties
6.2 儲藏(Stash)
臨時保存工作現場:
git stash # 儲藏當前修改
git stash list # 查看儲藏列表
git stash apply # 恢復最近一次儲藏
git stash drop # 刪除儲藏
git stash pop # 恢復并刪除儲藏
6.3 標簽管理
-
創建標簽:
git tag v1.0 # 輕量標簽
git tag -a v1.0 -m "版本1.0" # 附注標簽
-
查看標簽:
git tag
git show v1.0
-
推送標簽:
git push origin v1.0 # 推送單個標簽
git push origin --tags # 推送所有標簽
七、Git圖形工具
7.1 TortoiseGit常用操作
-
克隆倉庫:
-
右鍵選擇"Git克隆"
-
填寫URL和目標目錄
-
-
提交修改:
-
右鍵選擇"Git提交"
-
選擇要提交的文件,填寫提交信息
-
-
查看歷史:
-
右鍵選擇"顯示日志"
-
-
分支操作:
-
右鍵選擇"創建分支"/"切換/檢出"
-
7.2 IDE集成(IntelliJ IDEA)
-
配置Git路徑:
-
File → Settings → Version Control → Git
-
-
導入項目到Git:
-
VCS → Import into Version Control → Create Git Repository
-
-
提交更改:
-
點擊工具欄√圖標或Ctrl+K
-
-
推送更改:
-
VCS → Git → Push
-
-
更新項目:
-
VCS → Update Project 或 工具欄↓圖標
-
八、Git最佳實踐
-
提交規范:
-
提交信息清晰明確,說明做了什么修改
-
推薦格式:
<類型>: <描述>
,如feat: 添加用戶登錄功能
-
-
分支策略:
-
主分支保持穩定,開發在新分支進行
-
功能分支盡量小而專注
-
-
頻繁提交:
-
小步提交,每個提交解決一個問題
-
避免大而全的提交
-
-
代碼審查:
-
使用Pull Request進行代碼審查
-
確保代碼質量后再合并到主分支
-
九、常見問題解答
Q1: 如何撤銷已經推送的提交?
git revert commit_id # 創建反向提交
git push
Q2: 如何修改最后一次提交?
git commit --amend
Q3: 如何找回刪除的分支?
git reflog # 查看操作歷史
git checkout -b branch_name commit_id
Q4: 如何解決合并沖突?
-
手動編輯沖突文件
-
刪除沖突標記(
<<<<<<<
,?=======
,?>>>>>>>
) -
保存后添加并提交
十、學習資源推薦
-
Pro Git電子書
-
Git官方文檔
-
GitHub Guides
-
Learn Git Branching(交互式學習)
結語
Git作為現代軟件開發的核心工具,掌握它將極大提升你的開發效率。本文涵蓋了Git的基礎知識到高級技巧,建議讀者在學習的同時多加實踐。記住,Git的學習曲線可能有些陡峭,但一旦掌握,你將體會到它帶來的巨大便利。