Git分支管理完全指南:从创建到合并与冲突解决

目录

1. Git分支基础概念

主分支与子分支

2. 分支查看与切换

查看当前分支

3. 分支创建与管理

本地分支操作

4. 文件提交与分支关系

5. 分支合并策略

本地有分支的情况

本地没有远程分支的情况

6. 分支冲突解决

解决方案

7. Git Stash:临时保存工作现场

8. 最佳实践建议


1. Git分支基础概念

在Git版本控制系统中,分支是开发过程中不可或缺的部分,它允许开发者在不影响主代码的情况下进行功能开发或问题修复。

主分支与子分支

  • ​master分支​​:主分支,通常代表项目的稳定版本
  • ​子分支​​:从主分支或其他分支派生出来的分支,用于特定功能开发或问题修复

2. 分支查看与切换

查看当前分支

# 查看当前所在分支(HEAD指向当前分支)
git log

# 另一种查看当前分支的方法
cat .git/HEAD

# 查看所有分支
git branch

# 查看包括远程分支在内的所有分支
git branch -a

3. 分支创建与管理

本地分支操作

# 创建并切换到新分支
git checkout -b 分支名

# 仅创建分支
git branch 分支名

# 切换分支
git checkout 分支名

# 切换到最近使用的分支
git checkout -

# 删除分支(-D强制删除)
git branch -d 分支名

​注意事项​​:

  • 不能删除当前所在的分支
  • 不能删除未合并或已发生变化的分支
  • 创建分支时,子分支会包含主分支当前的所有内容

4. 文件提交与分支关系

文件在不同分支间的可见性规则:

  1. ​未提交的修改​​:所有分支都能看到状态(假象)
  2. ​已提交到特定分支​​:仅在提交的分支上可见
  3. ​暂存区(add)但未提交​​:所有分支都能看到状态
# 将文件添加到暂存区
git add .

# 提交到本地仓库
git commit -m '注释'

# 推送到远程主分支
git push

# 推送到特定远程分支
git push origin 分支名

5. 分支合并策略

本地有分支的情况

# 切换到主分支
git checkout master

# 合并指定分支到当前分支
git merge 分支名

# 推送到远程仓库
git push

本地没有远程分支的情况

# 拉取远程分支信息
git pull

# 在master分支下拉取特定远程分支
git pull origin 分支名

# 常规拉取
git pull

# 推送主分支
git push origin master

6. 分支冲突解决

当多个分支修改同一文件的不同部分时,合并会产生冲突。

​典型场景​​:

  • dev1修改文件并提交
  • dev2修改同一文件的不同部分并提交
  • 尝试合并这两个分支时出现冲突

解决方案

  1. ​在正确分支上合并并修改​

    • 合并后手动解决冲突(保留正确内容,删除错误内容)
    • 提交修改
    • 删除无用的冲突分支(因其内容已不正确)
  2. ​在错误分支上合并并修改​

    • 合并后手动解决冲突(保留另一分支的正确内容)
    • 提交修改
    • 此时两分支内容将一致

​可视化冲突日志​​:

git log --graph

7. Git Stash:临时保存工作现场

当需要切换分支但当前修改尚未完成时,可以使用stash功能临时保存工作进度。

# 将当前修改存入堆栈
git stash

# 包含未跟踪文件
git stash -u

# 查看堆栈中的保存项
git stash list

# 恢复最近的stash并删除堆栈记录
git stash pop

​特点​​:

  • 使用stash后,git status看不到修改状态
  • 修改内容暂时不可见
  • 可在适当分支上恢复stash内容

8. 最佳实践建议

  1. ​分支命名​​:使用有意义的名称,如feature/login、bugfix/navbar等
  2. ​频繁合并​​:定期将主分支变更合并到开发分支,减少冲突
  3. ​小步提交​​:小而频繁的提交更容易管理和解决冲突
  4. ​清理分支​​:合并后及时删除不再需要的分支
  5. ​使用pull request​​:在团队协作中,通过PR进行代码审查后再合并

你可能感兴趣的:(git,git)