假如一个人基于dev分支开发三个功能,这三个更需要并行开发,有时候功能1开发到一半 需要开发功能2 反复切换分支,怎么管理不混乱,用到git哪些功能
在使用 Git 进行并行开发时,遇到需要在不同的功能分支间切换的情况,可以通过以下几种方法来管理,以确保不混乱:
-
使用
git stash
:- 当你在开发功能1时,需要切换到功能2,可以使用
git stash
命令将当前工作区的修改暂存起来,然后切换到功能2的分支。完成功能2的开发后,切回功能1的分支,使用git stash apply
恢复之前暂存的修改。
# 在功能1分支上执行 git stash # 切换到功能2分支 git checkout feature-2 # 在功能2上完成开发 # 切换回功能1分支 git checkout feature-1 # 恢复之前暂存的修改 git stash apply
- 当你在开发功能1时,需要切换到功能2,可以使用
-
使用多个工作目录(
git worktree
):git worktree
允许你在同一个仓库中创建多个工作目录,每个目录可以对应一个分支。这样,你可以在不同的目录下并行开发不同的功能,而无需频繁切换分支。
# 在仓库根目录执行 git worktree add -b feature-2 ../feature-2-branch # 进入新的工作目录 cd ../feature-2-branch # 在这个目录下完成功能2的开发
-
使用
git commit
:- 如果功能1和功能2的开发不会相互影响,也可以在功能1未完成时,将功能1的修改提交到本地仓库,然后切换到功能2的分支进行开发。这样,在不同的分支上都有一个完整的提交记录,可以更灵活地进行切换。
# 在功能1分支上执行 git add . git commit -m "Partial completion of feature 1" # 切换到功能2分支 git checkout feature-2 # 在功能2上完成开发
选择哪种方式取决于你的团队和项目的具体情况。通常,git stash
和 git worktree
是在单个工作目录中进行并行开发的常用方式。记住,为每个功能分支创建一个专用的分支,合并到主分支之前确保测试通过,可以减少冲突和混乱的可能性。
参考:
善用Git的stash和unstash,让你的idea工作的更加丝滑起来-今日头条
https://www.toutiao.com/article/6980720409658409486/?source=aweme_search
Shelve,Stash和Local History - 知乎
https://zhuanlan.zhihu.com/p/638983619