如何在新初始化的裸Git仓库中创建首个工作树?
如何为无初始提交的Git裸仓库创建首个工作树
需求目录结构
目标搭建的目录结构如下:
./parent-folder/.git ./parent-folder/main-worktree ./parent-folder/feature-a-worktree ./parent-folder/feature-b-worktree
已在parent-folder目录下执行git init --bare .git初始化裸仓库,但无初始提交,需要创建首个工作树,同时保证parent-folder下仅存在裸仓库.git和指定的工作树目录。
无初始提交裸仓库的首个工作树创建步骤
由于裸仓库没有任何分支和提交,直接使用git worktree add会报错,需先生成初始提交:
方式1:直接创建正式工作树并完成初始化
cd ./parent-folder # 添加main-worktree,同时指定要创建的main分支(此时分支尚未存在) git --git-dir=.git worktree add ./main-worktree main # 进入新创建的工作树 cd main-worktree # 创建初始文件并完成首次提交 echo "# Project Initialization" > README.md git add README.md git commit -m "Initial commit" # 返回parent-folder目录 cd ..
方式2:通过临时工作树生成初始提交(可选)
cd ./parent-folder # 创建临时工作树 git --git-dir=.git worktree add ./temp # 进入临时工作树完成初始提交 cd temp echo "# Initial Commit" > README.md git add README.md git commit -m "Initial commit" cd .. # 将临时工作树重命名为正式的main-worktree mv temp main-worktree
完成初始提交后,即可正常添加其他功能分支的工作树:
git --git-dir=.git worktree add ./feature-a-worktree feature/a git --git-dir=.git worktree add ./feature-b-worktree feature/b
已有提交的远程仓库搭建参考
如果是基于已有提交的远程仓库搭建该目录结构,可执行以下命令:
cd ./parent-folder git clone --bare <remote-url-of-repo-with-previous-commits> .git git --git-dir=.git worktree add ./main-worktree main # 按需添加其他工作树 git --git-dir=.git worktree add ./feature-a-worktree feature/a
内容的提问来源于stack exchange,提问作者jam
相关产品推荐
相关产品推荐

