IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    一日一技:如何同时在多个分支写代码?

    青南发表于 2023-11-15 13:02:35
    love 0

    当我们在维护公司项目时,可能会遇到这样的场景:我正在开发一个新功能,突然需要修一个Bug。

    这个时候,有些同学是这样做的:

    1
    2
    3
    4
    5
    6
    7
    8
    git add .
    git commit -m 'WIP'
    git checkout -b 新的分支名

    ...新的代码修改完成并push以后...

    git checkout 老分支
    ...继续开发...

    更有一些经验的同学,可能会这样写:

    1
    2
    3
    4
    5
    git stash
    git checkout -b 新的分支
    ...新的代码修改完成并push以后...
    git checkout 老分支
    git stash pop

    但如果在修这个Bug的时候,又来了一个更紧急的Bug需要修怎么办?到后面很容易就把前面的代码搞忘了。

    其实我们有更好的办法,那就是使用git worktree命令。这个命令甚至可以让你同时在10个分支上开发,并且1秒无负担切换到任意分支。

    假设现在我所在的项目文件夹为/Users/kingname/Projects/JobCleaner,在feature分支。现在来了一个Bug需要修复,于是,我只需要执行如下命令:

    1
    2
    3
    4

    git worktree add ../JobCleanerBugFix master
    cd ../JobCleanerBugFix
    git pull origin master

    此时,Git会自动在/Users/kingname/Projects/文件夹下面,创建一个新的文件夹JobCleanerBugFix。并且这个代码已经在master分支了。你可以直接使用PyCharm或者任何其他的代码编辑器,打开这个文件夹,然后像正常开发一样修复Bug。

    整个过程中,/Users/kingname/Projects/JobCleaner始终是你之前开发新功能的代码,假设你之前的PyCharm有一个窗口开着这个文件夹,那么你随时可以正常在里面修改代码。

    这个时候如果又来了一个更紧急的Bug了,那么你只需要在/Users/kingname/Projects/JobCleaner里面再次执行代码,创建第三个文件夹即可:

    1
    2
    3
    git worktree add ../JobCleanerP0Bug master
    cd ../JobCleanerP0Bug
    git pull origin master

    这三个文件夹互相独立,你的IDE可以分别打开这三个文件夹,同步修改任何代码。他们完全不会有任何影响,看起来就跟3个独立的项目一样。

    理论上你可以无限这样添加。

    当你在/Users/kingname/Projects/JobCleanerP0Bug下面已经改完了代码,你只需要正常提交就可以了:

    1
    2
    3
    git add xxx.py yyy.py
    git commit -m '修复bug'
    git push origin master:bugfix

    提交完成,确认没有任何问题以后,回到/Users/kingname/Projects/JobCleaner文件夹,执行命令git worktree remove ../JobCleanerP0Bug/,就会自动删除/Users/kingname/Projects/JobCleanerP0Bug文件夹。



沪ICP备19023445号-2号
友情链接