两种Git分支创建方式结果是否一致?如何用git worktree实现?
Git分支创建与git worktree使用问题解答
问题A:两种方式的最终结果是否相同?
完全不同,核心差异有两点:
- 分支起点不一样:
方式一先切换到develop分支,再创建test/udp_client,所以这个分支是从develop的最新提交分叉出来的;方式二克隆仓库后直接创建develop/test/udp_client,此时当前分支是仓库默认主分支(一般是main或master),所以这个分支是从主分支的最新提交分叉的。 - 分支名称不一样:
一个是test/udp_client,另一个是develop/test/udp_client,这是两个完全独立的分支,不存在任何关联。
问题B:如何使用git worktree完成上述分支创建与切换操作?
git worktree允许你在本地不同目录同时管理多个分支,不用在同一个仓库里来回切换分支,对应两种方式的操作如下:
对应方式一的操作
如果test/udp_client分支已经存在:
git clone <main repository> cd <main repository> # 创建新工作目录并关联已有的test/udp_client分支 git worktree add ../test-udp-client test/udp_client # 进入新目录后自动处于该分支 cd ../test-udp-client
如果test/udp_client分支还没创建,可一步完成分支创建+工作目录关联:
git clone <main repository> cd <main repository> # 从develop分支创建test/udp_client分支,并绑定到新工作目录 git worktree add -b test/udp_client ../test-udp-client develop cd ../test-udp-client
对应方式二的操作
如果develop/test/udp_client分支已存在:
git clone <main repository> cd <main repository> # 创建新工作目录并关联已有的develop/test/udp_client分支 git worktree add ../develop-test-udp-client develop/test/udp_client cd ../develop-test-udp-client
如果分支未创建,一步完成:
git clone <main repository> cd <main repository> # 从当前默认主分支创建develop/test/udp_client分支,并绑定到新工作目录 git worktree add -b develop/test/udp_client ../develop-test-udp-client cd ../develop-test-udp-client
内容的提问来源于stack exchange,提问作者71GA
相关产品推荐
相关产品推荐

