相关疑难解决方法(0)

使用Git的多个工作目录?

我不确定这是否是Git所支持的东西,但理论上它似乎应该对我有用.

我的工作流程通常涉及我同时在多个分支中编辑文件.换句话说,我经常想在一个分支中打开一些文件,而我在另一个分支中编辑另一个文件的内容.

我的典型解决方案是进行两次检查,但遗憾的是我不能在它们之间共享分支和引用.我想要的是只有两个工作目录由同一个.git文件夹管理.

我知道本地git clone解决方案(默认情况下,硬链接共享对象,以及--shared选项,它使用原始repo设置备用对象存储),但这些解决方案只减少了磁盘空间使用量,特别是在--shared的情况下,似乎充满了危险.

有没有办法使用一个.git文件夹,并有两个工作目录由它支持?或者是Git硬编码只是随时检查一个工作目录?

git

233
推荐指数
3
解决办法
8万
查看次数

'<Branch>'已经在git worktrees的'</ other/location>'中检出

我开始使用git worktrees.它似乎工作,但我在尝试检出克隆的工作树中的分支时遇到此错误:

fatal: '<branch>' is already checked out at '</other/location>'
Run Code Online (Sandbox Code Playgroud)

如何在不删除.git/worktrees目录的情况下解决这个问题?

git git-worktree

24
推荐指数
3
解决办法
5559
查看次数

git子模块更新很慢.我该怎么调试它为什么慢?

我正在使用git子模块,git submodule update --init --recursive命令很慢(8秒),虽然似乎没有更新要更新.

我想调试它为什么慢,但似乎没有--verbose开关.有没有想过要调试它在做什么?

我正在运行Ubuntu 14.04和Git 1.9.

git

11
推荐指数
3
解决办法
3526
查看次数

使用子模块为项目创建工作树

我有一个顶级项目,有大约 10 个子模块和一些嵌套子模块。

./top-project/
./top-project/module-a
./top-project/module-b
...
Run Code Online (Sandbox Code Playgroud)

一些子模块有一个经典的 url,如url = git:software/module-a,其他子模块有一个相对于远程顶级项目的 url,如url = ../module-b。顶级项目 url 是url = git:software/top-project.

我想创建顶级项目及其所有子模块的工作树副本。

git worktree add -f ../top-project-v2
Run Code Online (Sandbox Code Playgroud)

但我找不到一种方法使子模块指向其原始路径。我希望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
Run Code Online (Sandbox Code Playgroud)

有什么办法可以做到吗?

git git-submodules git-worktree

6
推荐指数
1
解决办法
492
查看次数

如何在存储库的两个本地副本之间传输一系列 Git 提交?

目前,我在我的机器上签出了同一个 Git 项目的两个副本。我知道传统上人们不会这样做;更典型的做法是检查项目一次并根据需要切换分支。我拥有第二个副本的主要原因是,我可以在 IDE 中本地查看合并请求 \xe2\x80\x94\xc2\xa0,以及运行代码 \xe2\x80\x94,而无需从任何内容切换上下文我可能正在进行工作。该工作可能不适合我隐藏、提交或停止运行长时间运行的进程。

\n

我不小心在本地对项目的错误副本进行了一些更改,并希望将它们移动到正确的副本。

\n

我知道我可以创建一个分支,将它们推送到服务器,在另一个分支上检查它们,然后删除远程分支。这并不是太繁重。

\n
cd /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
Run Code Online (Sandbox Code Playgroud)\n

话虽如此,这些更改还没有准备好供其他人使用,如果我可以在本地完成所有这些操作而无需涉及远程服务器,那就太好了。

\n

有没有一种方法可以将一个签出的 get 项目中的一系列提交应用到该项目的不同副本而不推送它?

\n

git

2
推荐指数
1
解决办法
531
查看次数

标签 统计

git ×5

git-worktree ×2

git-submodules ×1