回答:
Git 2.5+(2015年第2四半期)はこの機能をサポートしています!
git repoがある場合はcool-app
、cdしてroot(cd cool-app
)に移動し、を実行しgit worktree add ../cool-app-feature-A feature/A
ます。これにより、feature/A
独自の新しい専用ディレクトリ内のブランチがチェックアウトされcool-app-feature-A
ます。
これにより、古いスクリプトが置き換えられ、contrib/workdir/git-new-workdir
「リンクされた」作業ツリーが実際にメインリポジトリの新しい$GIT_DIR/worktrees
フォルダーに記録される(Windowsを含むすべてのOSで動作する)より堅牢なメカニズムが提供されます。
繰り返しになりますが、リポジトリを(のようなフォルダーに/path/to/myrepo
)複製したら、メインツリーのリポジトリ履歴にリンクされた作業ツリーを保持しながら、異なる独立したパス(/path/to/br1
、/path/to/br2
)の異なるブランチにワークツリーを追加できます(--git-dir
オプションを使用する必要はありません)
詳細については、「Gitを使用した複数の作業ディレクトリ」を参照してください。
また、ワークツリーを作成したら、それを移動または削除できます(Git 2.17以降、2018年第2四半期を使用)。
見てみましょう$ GIT_SRC_DIRに/ contrib / WORKDIR /のgit-新WORKDIRを。
シンボリックリンクを使用して既存のリポジトリを指す作業ディレクトリを作成する簡単なスクリプト。これにより、異なる作業ディレクトリに異なるブランチを持つことができますが、すべて同じリポジトリからのものです。
私の小さなスクリプトhttp://www.redhotchilipython.com/en_posts/2013-02-01-clone-per-feature.html
基本的にgit cloneを実行して構成を置き換えます(元のリポジトリを「見る」ため、プル/プッシュは「メイン」リポジトリに移動します)が、実際のブートストラップからの抽象化を提供するのに十分簡単です。
友人のVonCが5か月前に言ったように、バージョン2.5.x以降に新しい機能が追加されました。git worktree。
Gitは同時に複数のワークツリーをサポートします。詳細については、以下を参照してください。
IDを使用して複数のワークツリーをサポートすることは非常に困難です。たとえば、これはワークツリーをサポートするためのJGet(Eclipse ID)の拡張要求です。
そのため、多くの問題を抱えて手動で(コマンドラインで)プロジェクトを管理するか、IDEで単一のワークツリーを操作する必要があります。
実際のところ、Gitは、リポジトリー・ディレクトリー内にリポジトリー・データの作業コピーを1つだけ持つことをサポートしているためです。
2つの異なる作業コピーを使用して同じリポジトリにcommit / pullする場合は、ベアリポジトリを作成し、2つの作業コピーに複製できます。
何かを終えたら、単に「メイン」のベアリポジトリにプッシュするだけです。
いくつかのヒント:
man git-clone
git clone --bare
git-new-workdir
。に関する回答を参照してください。