練習2:Git分支操作
練習目標
掌握Git分支的創建、切換、合并等操作,理解分支在開發中的作用。
練習步驟
步驟1:準備基礎倉庫
# 創建練習目錄
mkdir branch-practice
cd branch-practice# 初始化倉庫
git init# 創建初始文件
echo "# 分支練習項目" > README.md
git add README.md
git commit -m "初始化項目"
步驟2:創建和切換分支
# 查看當前分支
git branch# 創建新分支
git branch feature-login# 切換到新分支
git checkout feature-login# 或者使用新命令創建并切換
git checkout -b feature-register
步驟3:在不同分支上開發
# 在feature-login分支上工作
git checkout feature-login# 創建登錄功能文件
echo "function login() { console.log('登錄功能'); }" > login.js
git add login.js
git commit -m "添加登錄功能"# 切換到feature-register分支
git checkout feature-register# 創建注冊功能文件
echo "function register() { console.log('注冊功能'); }" > register.js
git add register.js
git commit -m "添加注冊功能"
步驟4:查看分支歷史
# 查看所有分支
git branch -a# 查看分支圖
git log --graph --oneline --all# 查看特定分支的歷史
git log --oneline feature-login
git log --oneline feature-register
步驟5:合并分支
# 切換到主分支
git checkout main# 合并登錄功能分支
git merge feature-login# 查看合并后的狀態
git status
git log --oneline# 合并注冊功能分支
git merge feature-register
步驟6:解決合并沖突(模擬)
# 在兩個分支上修改同一個文件
git checkout feature-login
echo "// 登錄模塊" > app.js
git add app.js
git commit -m "添加登錄模塊"git checkout feature-register
echo "// 注冊模塊" > app.js
git add app.js
git commit -m "添加注冊模塊"# 嘗試合并(會產生沖突)
git checkout main
git merge feature-login
git merge feature-register # 這里會有沖突
步驟7:解決沖突
# 查看沖突文件
cat app.js# 手動編輯app.js文件,解決沖突
# 刪除沖突標記,保留需要的內容
echo "// 登錄模塊
// 注冊模塊" > app.js# 添加解決后的文件
git add app.js
git commit -m "解決合并沖突"
步驟8:刪除分支
# 刪除已合并的分支
git branch -d feature-login
git branch -d feature-register# 查看剩余分支
git branch
練習檢查點
完成練習后,請檢查以下幾點:
- 能夠創建新分支
- 能夠在分支間切換
- 能夠在不同分支上獨立開發
- 能夠合并分支
- 能夠解決合并沖突
- 能夠刪除已合并的分支
- 理解分支的作用和優勢
擴展練習
1. 分支命名規范練習
# 創建不同類型的分支
git checkout -b feature/user-profile
git checkout -b bugfix/login-error
git checkout -b hotfix/security-patch
git checkout -b release/v1.0.0
2. 分支保護練習
# 模擬保護分支(在實際項目中通過平臺設置)
git checkout main
echo "重要文件,不要直接修改" > important.txt
git add important.txt
git commit -m "添加重要文件"# 嘗試在main分支上直接修改
echo "直接修改" >> important.txt
git add important.txt
git commit -m "直接修改重要文件"
3. 遠程分支操作
# 推送分支到遠程(如果有遠程倉庫)
git push origin feature-login
git push origin feature-register# 查看遠程分支
git branch -r# 拉取遠程分支
git fetch origin
git checkout -b feature-remote origin/feature-remote
分支管理最佳實踐
1. 分支命名規范
- feature/xxx:新功能分支
- bugfix/xxx:bug修復分支
- hotfix/xxx:緊急修復分支
- release/xxx:發布分支
2. 工作流程
- 從主分支創建功能分支
- 在功能分支上開發
- 完成開發后合并回主分支
- 刪除功能分支
3. 合并策略
- Fast-forward:適合簡單的線性歷史
- Merge commit:保留分支歷史
- Squash merge:將多個提交合并為一個
常見問題
Q: 什么時候應該創建新分支?
A: 當開始開發新功能、修復bug或準備發布時,都應該創建新分支。
Q: 如何選擇合并策略?
A: 根據項目需求選擇,簡單項目用fast-forward,復雜項目用merge commit。
Q: 合并沖突如何避免?
A: 經常同步主分支的更新,及時解決沖突,避免長期分支。
Q: 什么時候刪除分支?
A: 分支合并到主分支后,確認不再需要時就可以刪除。