O Git 2.5+ (Q2 2015) apoiará oficialmente isso com o novo comando git checkout --to=<path>. Veja minha resposta abaixo .
VonC
2
Na verdade, a ordem será: git worktree add <path> [<branch>](GIT 2,5 RC2)
VonC
Respostas:
156
O Git 2.5+ (Q2 2015) suporta esse recurso!
Se você possui um repositório git cool-app, cd para root ( cd cool-app), execute git worktree add ../cool-app-feature-A feature/A. Isso verifica a ramificação feature/Aem seu próprio diretório dedicado,cool-app-feature-A ,.
Isso substitui um script mais antigo contrib/workdir/git-new-workdir, por um mecanismo mais robusto no qual essas árvores de trabalho "vinculadas" são realmente registradas na nova $GIT_DIR/worktreespasta principal do repositório (para que funcione em qualquer sistema operacional, incluindo o Windows).
Novamente, depois de clonar um repo (em uma pasta como /path/to/myrepo), você pode adicionar ruas de trabalho para diferentes ramos em diferentes caminhos independentes ( /path/to/br1, /path/to/br2), mantendo essas árvores de trabalho vinculadas ao histórico principal do repo (não é mais necessário usar uma --git-diropção)
um script simples para criar um diretório de trabalho que usa links simbólicos para apontar para um repositório existente. Isso permite ter ramificações diferentes em diretórios de trabalho diferentes, mas todas do mesmo repositório.
Ele fará o git clone e substituirá a configuração (para "olhar" no repositório original, então o pull / push entrará no repositório "principal") basicamente, mas é simples o suficiente para servir uma abstração do bootstrap atual.
No entanto, é muito difícil oferecer suporte a várias árvores de trabalho com IDs. Por exemplo, esta é uma solicitação de aprimoramento no JGet (eclipse ID) para suportar a árvore de trabalho.
Portanto, você precisa gerenciar o projeto manualmente (linha de comando) com muitos problemas ou trabalhar com uma única árvore de trabalho em um IDE.
A partir de agora, esta resposta não está correta. Atualize a resposta.
Narendra-choudhary 02/0318
-2
Na verdade, o Git não suporta apenas uma cópia de trabalho dos dados do repositório dentro do diretório do repositório.
Se você quer se comprometer / puxar para o mesmo repositório com duas cópias diferentes de trabalho, você pode criar um bare repositório e clone-lo para duas cópias de trabalho .
Sempre que você terminar alguma coisa, basta acessar o repositório básico "principal" .
git checkout --to=<path>
. Veja minha resposta abaixo .git worktree add <path> [<branch>]
(GIT 2,5 RC2)Respostas:
O Git 2.5+ (Q2 2015) suporta esse recurso!
Se você possui um repositório git
cool-app
, cd para root (cd cool-app
), executegit worktree add ../cool-app-feature-A feature/A
. Isso verifica a ramificaçãofeature/A
em seu próprio diretório dedicado,cool-app-feature-A
,.Isso substitui um script mais antigo
contrib/workdir/git-new-workdir
, por um mecanismo mais robusto no qual essas árvores de trabalho "vinculadas" são realmente registradas na nova$GIT_DIR/worktrees
pasta principal do repositório (para que funcione em qualquer sistema operacional, incluindo o Windows).Novamente, depois de clonar um repo (em uma pasta como
/path/to/myrepo
), você pode adicionar ruas de trabalho para diferentes ramos em diferentes caminhos independentes (/path/to/br1
,/path/to/br2
), mantendo essas árvores de trabalho vinculadas ao histórico principal do repo (não é mais necessário usar uma--git-dir
opção)Veja mais em " Vários diretórios de trabalho com o Git? ".
E depois de criar uma árvore de trabalho, você pode movê-la ou removê-la (com Git 2.17+, segundo trimestre de 2018).
fonte
Dê uma olhada em $ GIT_SRC_DIR / contrib / workdir / git-new-workdir .
fonte
Sugiro meu pequeno script http://www.redhotchilipython.com/en_posts/2013-02-01-clone-per-feature.html
Ele fará o git clone e substituirá a configuração (para "olhar" no repositório original, então o pull / push entrará no repositório "principal") basicamente, mas é simples o suficiente para servir uma abstração do bootstrap atual.
fonte
Como nosso amigo VonC disse há cinco meses, agora há um novo recurso desde a versão 2.5.x que faz o trabalho. git worktree .
fonte
O Git suporta várias árvores de trabalho ao mesmo tempo. Para mais informações, veja:
No entanto, é muito difícil oferecer suporte a várias árvores de trabalho com IDs. Por exemplo, esta é uma solicitação de aprimoramento no JGet (eclipse ID) para suportar a árvore de trabalho.
Portanto, você precisa gerenciar o projeto manualmente (linha de comando) com muitos problemas ou trabalhar com uma única árvore de trabalho em um IDE.
fonte
Na verdade, o Git não suporta apenas uma cópia de trabalho dos dados do repositório dentro do diretório do repositório.
Se você quer se comprometer / puxar para o mesmo repositório com duas cópias diferentes de trabalho, você pode criar um bare repositório e clone-lo para duas cópias de trabalho .
Sempre que você terminar alguma coisa, basta acessar o repositório básico "principal" .
Algumas dicas:
man git-clone
git clone --bare
fonte
git-new-workdir
.