2010-10-21 32 views
4

J'ai une arborescence de travail sur ma machine locale et un référentiel distant également. Disons que je veux construire rapidement une version antérieure de mon projet à un tag connu sans perturber l'état actuel de la version de travail. Mon inclination est à la caisse un arbre séparé, qui semble aller comme dans cette question:La manière la plus simple de récupérer une balise précédente à des fins de lecture seule dans Git

Download a specific tag with Git

Avec un clone du dépôt distant suivi d'une caisse là-dedans. Mais le clone fait beaucoup de travail et arrête tout l'état de révision. Existe-t-il une façon légère de dire "saisis-moi l'état actuel du monde à ce commit/tag et le vaporiser dans ce répertoire?" (Un contrôle de révision supplémentaire n'est pas nécessaire - c'est "en lecture seule" en ce qui concerne Git.)

Merci.

Répondre

5

Si c'est tout local, vous pouvez le faire:

mkdir /path/to/test-tree 
cd /path/to/repo 
git read-tree <tag> 
git checkout-index -a --prefix=/path/to/test-tree/ # don't forget the last slash 

# read-tree copies content into the index 
# to restore it: 
git read-tree HEAD 

C'est en supposant que vous n » t attention à l'autre arbre ayant des informations git du tout. Si vous le souhaitez, vous pouvez utiliser le git-new-workdir script, qui crée essentiellement un clone, sauf le remplissage du répertoire .git avec des liens symboliques vers le repo d'origine, de sorte qu'il ne prend pas d'espace disque supplémentaire. C'est une bonne approche - pas d'espace disque supplémentaire, et vous pouvez utiliser un repo pour le développement, un pour le test, etc.

1

Essayez

git checkout -b new_branch [previous_tag] 
+0

Je ne suis pas sûr de vouloir créer une "branche". Quand j'en aurai fini avec mon arbre en lecture seule, je ferai d'habitude juste 'rm -rf' et je l'oublierai. Créer une branche crée un état à l'intérieur de Git, n'est-ce pas? –

+0

@quixoto: Eh bien, vous pouvez simplement faire 'git branch -D new_branch', et la branche est partie comme si elle n'avait jamais existé. – Chetan

+0

On dirait que vous parlez les uns aux autres. Chetan, l'OP veut un arbre séparé, sans déranger l'arbre actuel du repo - donc pas de vérification à l'intérieur. – Cascabel