Git fetch un seul répertoire
J'ai un développeur qui travaille sur un dossier et un autre qui fonctionne sur un autre.
Je voudrais mettre à jour la production avec un dossier spécifique
Je suis à la recherche d'une commande comme:
cd /myproject
git pull myfolder
et s'attendre à ce que seul dossier sera mis à jour
Est-il possible?
ok, je vais reformuler...
J'ai un projet, une branche et deux développeurs et deux dossiers dans le projet. chaque développeur travaille sur un dossier. à la fois apporter des modifications et de les pousser dans la branche.
Je veux tirer seulement un dossier sur ma machine locale
De base/Simple n'est-ce pas?
Votre question n'est pas très clair. Disons que vous avez des dossiers
ok, je vais reformuler... j'ai un projet, une branche et deux développeurs et deux dossiers dans le projet. chaque développeur travaille sur un dossier. à la fois apporter des modifications et de les pousser dans la branche. Je veux tirer seulement un dossier sur ma machine locale
Êtes-vous à l'aide de Git pour gérer une copie de travail? Ou êtes-vous vraiment tout simplement à la recherche pour obtenir le contenu d'un dossier dans le référentiel sur votre machine? À en juger par votre commentaire PherricOxide, il sonne comme le dernier.
dev1
, dev2
, et production
. Demandez-vous comment apporter toutes les modifications à partir production
d'une autre branche, ou êtes-vous demandé comment essentiellement à définir le contenu de production
à l'un des dev de dossiers? De toute façon, la façon dont vous vous approchez de cela sonne comme votre travail à l'encontre de l'outil.ok, je vais reformuler... j'ai un projet, une branche et deux développeurs et deux dossiers dans le projet. chaque développeur travaille sur un dossier. à la fois apporter des modifications et de les pousser dans la branche. Je veux tirer seulement un dossier sur ma machine locale
Êtes-vous à l'aide de Git pour gérer une copie de travail? Ou êtes-vous vraiment tout simplement à la recherche pour obtenir le contenu d'un dossier dans le référentiel sur votre machine? À en juger par votre commentaire PherricOxide, il sonne comme le dernier.
OriginalL'auteur fredy | 2013-08-19
Vous devez vous connecter pour publier un commentaire.
En supposant que ce que vous êtes vraiment se poser est de saisir à distance des fichiers à partir d'un git
dépôt, sans avoir un arbre de travail de votre propre (ou un clone de l'
référentiel localement), vous pourriez faire ceci:
Cela dit pour créer un format gzip tar de la branche master du dépôt
vivant à
<url-to-repo>
, mais inclure uniquement le contenu sousmyfolder
.Conduites par
tar
sera désarchiver les données et les mettre au courantrépertoire de travail.
Si vous êtes en train d'essayer de gérer un arbre de travail et de travailler avec les deux autres
les développeurs, alors ce que vous demandez de faire vraiment de la va à l'encontre de la
outil de. Mais vous auriez à être beaucoup plus de précisions à propos de ce que vous essayez de
accomplir dans le but de quelqu'un pour faire un bon flux de travail suggestion.
Mise à jour:
De sorte qu'il ne sembler comme si vous voulez simplement aller chercher un dossier de changements dans un gérés
arbre de travail. Désolé, mais Git ne fonctionne pas de cette façon. Comme je l'ai dit dans l'
les commentaires ci-dessous, Git gère les arbres de fichiers. Il ne permet pas partie d'un
arbre à une révision, et une autre partie pour être à un autre révision comme
vous êtes ce qui suggère peut-être vous êtes un ancien utilisateur de Subversion où c'était
possible?
Vous pouvez obtenir un effet similaire à ce que vous voulez, mais vous devez modifier
votre copie de travail. Je ne voudrais pas commettre la modification, sauf si vous voulez
jetez un des développeurs de travail. Vous pourriez à ce:
git fetch
apportera à vos références à distance jusqu'à ce jour -, il va chercher l'dernières informations sur les serveurs.
git checkout @{u} -- myfolder
feramyfolder
ressembler à ce qui existe dans le suivi de la branche. Cela a deuxconséquences:
Vous n'avez pas tous les changements sur votre succursale locale (et vous
n'en voulez pas, si ce n'est pas grave), et
myfolder
montrera que d'être modifiés parce que le contenu demyfolder
aété mis à jour avec la dernière version disponible sur le dépôt distant, mais il est
pas le même que celui de la révision en cours.
Pour obtenir votre copie de travail de retour à la normale, ce faire:
À partir de là, vous appeler suivez votre mécanisme habituel pour l'obtention de votre branche
up-to-date avec la télécommande (probablement
git pull
).Ceci, cependant, n'est probablement pas la façon dont vous souhaitez utiliser. En dépit de votre commentaire,
"n'a pas d'importance du cas d'utilisation", il importe vraiment. Il y a souvent mieux
moyens d'atteindre votre objectif global et de gérer le développement, mais c'
il faut comprendre ce que vous essayez de faire. Pour le moment, ce que vous
proposer vraiment va à l'encontre de la façon dont Git est conçue pour fonctionner.
Alors, permettez-moi de mettre un peu les choses là-bas pour vous. De la recherche à l'aide de sujet branches
comme une manière de gérer le développement de travaux, plutôt que d'utiliser des dossiers
pour chaque développeur dans l'arbre. Claire et logique, des modifications peuvent être apportées sur les branches
et la fusion comme vous le tester et approuver en vue de leur inclusion dans la production.
Un bon endroit pour commencer est
ici.
Il contient une bonne quantité de l'information elle-même, et certains de suivi sur les liens pour
plusieurs styles différents de Git flux de travail. L'endroit où vous voulez à la fin est
où il y a un commit qui représente la version que vous avez effectivement mis en
la production, sans détruire le travail que d'autres font pour vous. Idéalement,
vous auriez balise de ce qui a été poussé dans la production de manière significative.
Je sais que personne n'aime entendre cela, mais la formation peut être très utile dans votre cas.
GitHub propose quelques gratuit cours en ligne
ainsi que plusieurs autres ressources. À en juger par l'expérience, une fois que vous avez saisi comment
Git fonctionne et les problèmes qu'il résout, vous vous retrouverez avec un bien meilleur flux de travail.
Si c'est à jour, n'avez-vous pas déjà ses changements? Qu'avez-vous essayé? Vous devez mettre à jour votre question avec cette information.
disons que j'ai tiré tout à mon PC. ensuite, les deux dossiers ont été mis à jour. aujourd'hui, je veux obtenir uniquement les modifications à partir d'un dossier. puis-je le faire?
Je sens que vous êtes en train de dire la même chose encore et encore--et je ne veux pas que d'être agressif, c'est juste que vos réponses sont l'ajout de beaucoup plus de clarté à ce problème. Ce qui sont que vous essayez d'accomplir, au-delà de juste essayer d'obtenir des changements dans un seul dossier? Pourquoi vous voulez seulement les changements à partir d'un dossier? Quel problème essayez-vous de résoudre? Il, parce que vous êtes malheureux avec les changements dans l'autre dossier et ce que vous voulez vraiment est de revenir? Pourquoi n'êtes-vous pas et votre les développeurs travaillant sur les branches au lieu de dans les dossiers si vous voulez plus de contrôle sur ce qui se passe dans la production?
Merci de ne pas abandonner..... j'ai une installation stable sur mon ordinateur. je veux tester uniquement les modifications d'un développeur - sens arriver les changements d'un seul dossier, pas deux. Comment puis-je mettre à jour mon environnement avec un seul dossier (n'importe pas le cas d'utilisation. puis-je tirer de git seuls les changements d'un dossier?)
OriginalL'auteur John Szakmeister
Avez-vous une sorte de branche de la production? En supposant un dev et de la branche de production...
C'est une sorte de terrible façon de faire les choses, parce que vous perdez de l'historique des modifications lorsque vous commander et de se réengager juste ce dossier.
Votre 3ème commande checkout est incorrect. Il devrait être
git checkout dev -- myfolder
(ledev
etmyfolder
sont inversés).OriginalL'auteur PherricOxide
Oui, il est facile de
git fetch
un seul git sous-répertoire. Supposons que vous avez un projet de répertoire de votre télécommande git-repo.Pour le moment, supposons que vous avez cloné le projet à votre système de fichiers local comme un dépôt git.
Dans le cas où vous avez imbriqué structure de répertoire,
Alors dans ce cas, vous devez utiliser le répertoire que vous voulez,
OriginalL'auteur kmario23