Git 2.5+ (Q2 2015) le supportera officiellement avec la nouvelle commande git checkout --to=<path>. Voir ma réponse ci-dessous .
VonC
2
En fait, la commande sera git worktree add <path> [<branch>](Git 2.5 rc2)
VonC
Réponses:
156
Git 2.5+ (Q2 2015) prend en charge cette fonctionnalité!
Si vous avez un dépôt git cool-app, cd vers root ( cd cool-app), exécutez git worktree add ../cool-app-feature-A feature/A. Ce contrôle sur la branche feature/Adans son propre répertoire dédié, cool-app-feature-A.
Cela remplace un script plus ancien contrib/workdir/git-new-workdir, avec un mécanisme plus robuste où ces arbres de travail «liés» sont en fait enregistrés dans le nouveau $GIT_DIR/worktreesdossier principal du référentiel (afin de fonctionner sur n'importe quel système d'exploitation, y compris Windows).
Encore une fois, une fois que vous avez cloné un dépôt (dans un dossier comme /path/to/myrepo), vous pouvez ajouter des arbres de travail pour différentes branches dans différents chemins indépendants ( /path/to/br1, /path/to/br2), tout en ayant ces arbres de travail liés à l'historique du dépôt principal (plus besoin d'utiliser une --git-diroption)
un script simple pour créer un répertoire de travail qui utilise des liens symboliques pour pointer vers un référentiel existant. Cela permet d'avoir différentes branches dans différents répertoires de travail mais tous à partir du même référentiel.
Il fera git clone et remplacera la configuration (pour "regarder" le dépôt d'origine, donc pull / push ira dans le dépôt "principal"), mais c'est assez simple pour servir une abstraction du bootstrapping réel.
Comme notre ami VonC l'a dit il y a cinq mois, il y a maintenant une nouvelle fonctionnalité depuis la version 2.5.x qui fait le travail. git worktree .
Cependant, il est très difficile de prendre en charge plusieurs arbres de travail avec des ID. Par exemple, il s'agit d'une demande d'amélioration dans JGet (eclipse ID) pour prendre en charge worktree.
Donc, vous devez gérer le projet manuellement (ligne de commande) avec beaucoup de problèmes ou travailler avec un seul arbre de travail dans un IDE.
Pour l'instant, cette réponse n'est pas correcte. Veuillez mettre à jour la réponse.
narendra-choudhary
-2
Pas vraiment car Git ne prend en charge qu'une copie de travail des données du référentiel dans le répertoire du référentiel.
Si vous souhaitez valider / extraire le même référentiel avec deux copies de travail différentes, vous pouvez créer un référentiel nu et le cloner en deux copies de travail .
Chaque fois que vous avez terminé quelque chose, vous poussez simplement vers le référentiel nu "principal" .
git checkout --to=<path>
. Voir ma réponse ci-dessous .git worktree add <path> [<branch>]
(Git 2.5 rc2)Réponses:
Git 2.5+ (Q2 2015) prend en charge cette fonctionnalité!
Si vous avez un dépôt git
cool-app
, cd vers root (cd cool-app
), exécutezgit worktree add ../cool-app-feature-A feature/A
. Ce contrôle sur la branchefeature/A
dans son propre répertoire dédié,cool-app-feature-A
.Cela remplace un script plus ancien
contrib/workdir/git-new-workdir
, avec un mécanisme plus robuste où ces arbres de travail «liés» sont en fait enregistrés dans le nouveau$GIT_DIR/worktrees
dossier principal du référentiel (afin de fonctionner sur n'importe quel système d'exploitation, y compris Windows).Encore une fois, une fois que vous avez cloné un dépôt (dans un dossier comme
/path/to/myrepo
), vous pouvez ajouter des arbres de travail pour différentes branches dans différents chemins indépendants (/path/to/br1
,/path/to/br2
), tout en ayant ces arbres de travail liés à l'historique du dépôt principal (plus besoin d'utiliser une--git-dir
option)Pour en savoir plus, consultez " Plusieurs répertoires de travail avec Git? ".
Et une fois que vous avez créé un arbre de travail, vous pouvez le déplacer ou le supprimer (avec Git 2.17+, Q2 2018).
la source
Jetez un œil à $ GIT_SRC_DIR / contrib / workdir / git-new-workdir .
la source
Je suggère mon petit script http://www.redhotchilipython.com/en_posts/2013-02-01-clone-per-feature.html
Il fera git clone et remplacera la configuration (pour "regarder" le dépôt d'origine, donc pull / push ira dans le dépôt "principal"), mais c'est assez simple pour servir une abstraction du bootstrapping réel.
la source
Comme notre ami VonC l'a dit il y a cinq mois, il y a maintenant une nouvelle fonctionnalité depuis la version 2.5.x qui fait le travail. git worktree .
la source
Git prend en charge plusieurs arbres de travail en même temps. Pour plus d'informations, consultez:
Cependant, il est très difficile de prendre en charge plusieurs arbres de travail avec des ID. Par exemple, il s'agit d'une demande d'amélioration dans JGet (eclipse ID) pour prendre en charge worktree.
Donc, vous devez gérer le projet manuellement (ligne de commande) avec beaucoup de problèmes ou travailler avec un seul arbre de travail dans un IDE.
la source
Pas vraiment car Git ne prend en charge qu'une copie de travail des données du référentiel dans le répertoire du référentiel.
Si vous souhaitez valider / extraire le même référentiel avec deux copies de travail différentes, vous pouvez créer un référentiel nu et le cloner en deux copies de travail .
Chaque fois que vous avez terminé quelque chose, vous poussez simplement vers le référentiel nu "principal" .
Quelques indices:
man git-clone
git clone --bare
la source
git-new-workdir
.