git同时在两个分支上工作

git同时在两个分支上工作,git,branch,Git,Branch,我有一个有很多分支机构的项目 我想同时处理多个分支,而不必使用git checkout来回切换 除了将整个存储库复制到其他地方之外,还有什么方法可以做到这一点吗?不太可能,因为Git只支持在存储库目录中有一个存储库数据的工作副本 如果要提交/拉入具有两个不同工作副本的同一存储库,可以创建一个裸存储库并将其克隆到两个工作副本 每当您完成某件事情时,只需推送到“主”裸存储库 一些提示: mangit克隆 git克隆--bare看一看 创建工作目录的简单脚本,使用符号链接 指向现有存储库。这允许有不同

我有一个有很多分支机构的项目

我想同时处理多个分支,而不必使用
git checkout
来回切换


除了将整个存储库复制到其他地方之外,还有什么方法可以做到这一点吗?

不太可能,因为Git只支持在存储库目录中有一个存储库数据的工作副本

如果要提交/拉入具有两个不同工作副本的同一存储库,可以创建一个裸存储库并将其克隆到两个工作副本

每当您完成某件事情时,只需推送到“主”裸存储库

一些提示:

mangit克隆

git克隆--bare

看一看

创建工作目录的简单脚本,使用符号链接 指向现有存储库。这允许有不同的 分支位于不同的工作目录中,但都来自同一个目录 存储库


我建议用我的小剧本


基本上,它将进行git克隆并替换配置(以“查看”原始repo,因此pull/push将进入“main”repo),但它足够简单,可以从实际的引导中抽象出来。

git同时支持多个工作树。有关更多信息,请参阅:

然而,用ID支持多个工作树是非常困难的。例如,这是JGet(EclipseID)中支持工作树的一个示例

因此,您必须手动管理有很多问题的项目(命令行),或者使用IDE中的单个工作树。

Git 2.5+(2015年第2季度)支持此功能

如果您有git repo
cool app
,cd到根目录(
cd cool app
),请运行
git worktree add../cool-app-feature-a feature/a
。这将检查分支
功能/A
在其自己的新专用目录中,
cool-app-feature-A

它用一种更强大的机制取代了旧的脚本contrib/workdir/git new workdir,这些“链接的”工作树实际上记录在主repo new
$git_DIR/worktrees
文件夹中(以便在任何操作系统上工作,包括Windows)

同样,一旦您克隆了一个repo(在像
/path/to/myrepo
这样的文件夹中),您可以为不同独立路径中的不同分支添加工作树(
/path/to/br1
/path/to/br2
),同时将这些工作树链接到主repo历史记录(不再需要使用
--git dir
选项)

更多信息请参见“


一旦您创建了一个(使用Git 2.17+,2018年第二季度)。

就像我们的朋友五个月前说的那样,现在有一个新功能自2.5.x版以来就可以完成这项工作

类似的:我知道这很老了,但你能解释一下吗。@dav_I:像吗?@StefanNäwe啊我很困惑-早上太早了。。。使用链接更新了您的答案。“Git只支持存储库数据的一个工作副本”-1不正确,请参阅关于
Git new workdir
的答案。这是个好主意。只需克隆两次即可。Git 2.5+(2015年第2季度)的可能副本将通过新命令
Git checkout--to=
正式支持此功能。请参阅。实际上,命令将是
git worktree add[]
(git 2.5 rc2)。这应该是新的公认答案,因为2.5.X现在是推荐的版本,即使windows只是为了确认,这个过程也会是一样的,即使我在过去和现在已经创建了分支,想同时处理它们吗?谢谢:)@Milan是的:你可以查到已有分支的wortrees。@Milan你使用的是什么版本的Git?(在哪个操作系统上?)。正如我在中所记录的,
git worktree add
在git的最新版本中得到了改进。@millan非常欢迎您。2.17对我来说太老了。我还没有出生;)这和我5个月前在《行动》中提到的不一样吗。现在我感觉糟透了。我对那件事没有给予应有的重视。我的错。到目前为止,这个答案是不正确的。请更新答案。