我不确定这是否是Git所支持的东西,但理论上它似乎应该对我有用.
我的工作流程通常涉及我同时在多个分支中编辑文件.换句话说,我经常想在一个分支中打开一些文件,而我在另一个分支中编辑另一个文件的内容.
我的典型解决方案是进行两次检查,但遗憾的是我不能在它们之间共享分支和引用.我想要的是只有两个工作目录由同一个.git文件夹管理.
我知道本地git clone解决方案(默认情况下,硬链接共享对象,以及--shared选项,它使用原始repo设置备用对象存储),但这些解决方案只减少了磁盘空间使用量,特别是在--shared的情况下,似乎充满了危险.
有没有办法使用一个.git文件夹,并有两个工作目录由它支持?或者是Git硬编码只是随时检查一个工作目录?
我开始使用git worktrees.它似乎工作,但我在尝试检出克隆的工作树中的分支时遇到此错误:
fatal: '<branch>' is already checked out at '</other/location>'
如何在不删除.git/worktrees目录的情况下解决这个问题?
我正在使用git子模块,git submodule update --init --recursive命令很慢(8秒),虽然似乎没有更新要更新.
我想调试它为什么慢,但似乎没有--verbose开关.有没有想过要调试它在做什么?
我正在运行Ubuntu 14.04和Git 1.9.
我有一个顶级项目,有大约 10 个子模块和一些嵌套子模块。
./top-project/
./top-project/module-a
./top-project/module-b
...
一些子模块有一个经典的 url,如url = git:software/module-a,其他子模块有一个相对于远程顶级项目的 url,如url = ../module-b。顶级项目 url 是url = git:software/top-project.
我想创建顶级项目及其所有子模块的工作树副本。
git worktree add -f ../top-project-v2
但我找不到一种方法使子模块指向其原始路径。我希望top-project-v2/module-agit 指向top-project/module-a,而不是克隆一个全新的模块-a。
如果我这样做cd top-project-v2; git submodule upate --init --recursive,命令会成功,但子模块不会链接到顶级项目子模块。
如果我这样做git checkout --recurse-submodules origin/v2,我会得到一个错误:
git checkout --recurse-submodules origin/v2
fatal: not a git repository: ../../top-project/.git/worktrees/top-project-v2/modules/module-a
fatal: could not reset submodule index
有什么办法可以做到吗?
目前,我在我的机器上签出了同一个 Git 项目的两个副本。我知道传统上人们不会这样做;更典型的做法是检查项目一次并根据需要切换分支。我拥有第二个副本的主要原因是,我可以在 IDE 中本地查看合并请求 \xe2\x80\x94\xc2\xa0,以及运行代码 \xe2\x80\x94,而无需从任何内容切换上下文我可能正在进行工作。该工作可能不适合我隐藏、提交或停止运行长时间运行的进程。
\n我不小心在本地对项目的错误副本进行了一些更改,并希望将它们移动到正确的副本。
\n我知道我可以创建一个分支,将它们推送到服务器,在另一个分支上检查它们,然后删除远程分支。这并不是太繁重。
\ncd /path/to/source-project\n\ngit switch -c myTempBranch\ngit push -u origin myTempBranch\n\ncd /path/to/other-project\n\ngit pull\ngit merge myTempBranch\ngit push -d origin myTempBranch\n话虽如此,这些更改还没有准备好供其他人使用,如果我可以在本地完成所有这些操作而无需涉及远程服务器,那就太好了。
\n有没有一种方法可以将一个签出的 get 项目中的一系列提交应用到该项目的不同副本而不推送它?
\n