git同时在两个分支上工作

时间:2010-01-12 11:22:11

标签: git branch

我有一个有很多分支的项目。

我希望同时处理多个分支,而无需使用git checkout来回切换。

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

6 个答案:

答案 0 :(得分:122)

Git 2.5 +(2015年第2季度)将支持该功能:一旦克隆了git repo,您​​就可以使用新命令git worktree add <path> [<branch>]签出不同路径中的多个分支。

用一个更强大的机制替换旧脚本contrib/workdir/git-new-workdir,其中这些“链接”工作树实际上记录在主repo新$GIT_DIR/worktrees文件夹中(以便在任何操作系统上工作,包括Windows )。

同样,一旦你克隆了一个仓库(在/path/to/myrepo之类的文件夹中),就可以在不同的独立路径中为不同的分支添加工作树(/path/to/br1,{{ 1}}),同时将那些工作树链接到主要仓库历史记录(不再需要使用/path/to/br2选项)

请点击“ Multiple working directories with Git? ”了解更多信息。

一旦你创建了worktree, you can move or remove it(使用Git 2.17 +,2018年第二季度)。

答案 1 :(得分:39)

看看$GIT_SRC_DIR/contrib/workdir/git-new-workdir

  

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

答案 2 :(得分:0)

我建议使用我的小脚本http://www.redhotchilipython.com/en_posts/2013-02-01-clone-per-feature.html

它将执行git clone并替换config(以“查看”原始repo,因此pull / push将基本进入“main”repo),但它足够简单,可以提供实际引导的抽象。

答案 3 :(得分:0)

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

如何使用ID支持多个工作树是非常困难的。例如,这是JGet(eclipse ID)中的enhancement request以支持工作树。

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

答案 4 :(得分:-1)

并不是因为Git只支持在存储库目录中拥有一个存储库数据的工作副本。

如果要使用两个不同的工作副本提交/拉入同一存储库,则可以创建存储库并将其克隆为两个工作副本

无论何时完成某项操作,只需按下“main”裸存储库即可。

一些提示:

man git-clone

git clone --bare

答案 5 :(得分:-1)

就像我们的朋友VonC在五个月前所说的那样,现在有一个新功能,因为版本2.5.x可以完成这项工作。 git worktree