2017-03-19 3 views
1

Il y a deux dépôts /a/.git et /b/.git et ils ont tous les deux un fichier appelé c.txt. Ce fichier était le même entre eux avant mais maintenant c.txt a été modifié dans repo a. Comment puis-je extraire cette modification et l'appliquer à repo b sans copier-coller manuellement? La modification de c.txt a été commise avec d'autres changements dans le repo a mais je veux seulement le patch du c.txt spécifique.Comment appliquer les modifications d'un fichier spécifique de l'autre dépôt git à mon propre dépôt

P.S. et si possible, je voudrais préserver l'auteur original en validant cette modification à repo b.

Répondre

2

Vous pouvez utiliser étapes ci-dessous pour rendre la version de c.txt de repoA (/a/.git) à repoB (/b/.git):

# In local repoB /b/.git 
git remote add -f a /a/.git 
gitk --all #To find the commit id where remotes/a/master point to (assume the new version of c.txt in master branch) 
git cherry-pick <commit id you find in above step> -X theirs 

maintenant la nouvelle version de c.txt en /b/.git avec la conservation de l'auteur original.

+0

Merci. Cela devrait fonctionner mais la modification de certains autres fichiers (que je ne veux pas commettre) sera également engagée dans mon repoB. Je devrais utiliser 'git cherry-pick xxx -n' et accepter/rejeter les modifications du fichier et le valider manuellement. –

1

Vous devez ajouter une nouvelle télécommande avec repo-a-url (par exemple, repob) dans repo-b. Puis checkout le fichier à repo-b une branche spécifique (par exemple, maître).

Allez dans repo-b puis essayez les commandes suivantes:

$ git remote add repoa <repo-a-url>  # add a new remote repoa = repo-a-url 
$ git fetch repoa      # sync with repoa 

$ git checkout repoa/master c.txt  # checkout the file to 'repoa' 'master' branch 

$ git log --numstat --oneline c.txt  # show the change lists of c.txt file 
+0

Merci. Celui-ci devrait aussi fonctionner mais ça ne marchera pas si je modifie l'autre partie du fichier (c'est de ma faute de ne pas le mentionner). Cherry-pick devrait faire mieux que ça. –