2016-12-26 1 views
1

intérieur RepoA, il y a un répertoire (directoryA) avec certains fichiers (file1, file2, file3) et je veux déplacer ces fichiers de RepoA à RepoB.Comment importer des fichiers de RepoA vers RepoB tout en conservant les validations associées à ces fichiers?

Ceci est RepoA:

RepoA 
    directoryA 
     file1 
     file2 
     file3 
    directoryB 
     file1 
     file2 
     file3 

Après ce que je veux faire, RepoB ressemblerait à ceci:

RepoB 
    directoryA 
     file1 
     file2 
     file3 

je pouvais télécharger directoryA de RepoA et de le transférer à RepoB, mais je perd les commits associés à file1, file2 et file3.

Je ne peux pas non transférer l'ensemble RepoA à RepoB (comme dans une fusion), parce que les commits de directoryB seraient hors de propos dans RepoA.

Modifier: Je l'ai essayé d'utiliser git filter-branch --subdirectory-filter directoryName -- --all

Il ne fonctionne pas pour moi, chaque fois que j'essaie de tirer après l'exécution de cette commande, je reçois l'erreur:

fatal: refusing to merge unrelated histories 
+1

Yo veut dire que vous souhaitez garder l'historique de repo A? tout cela ou juste pour les fichiers liés au répertoire? – MTZ4

+1

Je ne veux que l'historique des fichiers que je suis en train de déplacer, et non l'historique de Repo A. – maviz

Répondre

2

Tout d'abord, s'il vous plaît faire une nouvelle branche et vérifiez-la pour ce processus, car l'opération suivante modifiera l'historique de RepoA local et supprimera certains fichiers:

Dans le rapport local,

(1) git filter-branch --subdirectory-filter directoryA <branch> 
(2) mkdir directoryA 
(3) mv * directoryA 
(4) git add . 
(5) git commit -am 'message' 

En RepoB locale,

(6) git remote add repoA <local RepoA’s path> 
(7) git pull RepoA <branch> 

Si vous obtenez l'erreur: fatal: refusing to merge unrelated histories lors de l'étape (7), vous pouvez tirer en ignorant les histoires sans lien en faisant git pull RepoA <branch> --allow-unrelated-histories

Ensuite file1, Les historiques de validation file2 et file3 s'affichent dans RepoB. Vous pouvez utiliser gitk --all pour voir plus clairement. Pour plus de détails, veuillez vous référer à here. (Les deux premiers commentaires (this et this) pourraient le clarifier davantage).

+0

Ne fonctionne pas. Les autres répertoires qui étaient en repo-a ont disparu. En outre, je ne peux pas tirer de repo-a locale à repo-b: Je reçois l'erreur >> fatale: refus de fusionner des histoires sans rapport – maviz

+0

Je viens de lire la référence que vous avez mentionné et lire les commentaires.Ils provoquent toujours la même erreur et se produisent toujours dans la même étape (pull step) $ fatal: refus de fusionner des historiques non liés – maviz

+1

Oui, après la première commande, vous trouverez que RepoA n'a que des fichiers qui ont été inclus dans le sous-dossier sont maintenant dans le répertoire racine du RepoA. C'est pourquoi les deuxième et troisième commandes font: mettre à nouveau les fichiers dans le sous-dossier. Pour l'étape git pull, vous pouvez essayer 'git pull RepoA maître --allow-unrelated-histories' à la place. –