14 votes

git partial pull

Je maintiens un référentiel A .

Un autre contributeur a cloné A vers un autre dépôt B .

Plus tard, l'autre contributeur a ajouté des fichiers F qui n'est pas pertinent pour moi, en B .

Maintenant, je veux fusionner les changements dans B retour à A mais sans s'engager F . Comment s'y prendre ?

8voto

wilhelmtell Points 25504

Récupérer la tête et faire une sélection à partir de là.

git remote add jessica git://jessica.com/repo.git
git fetch jessica master
git cherry-pick 235a5
...

3voto

sml Points 1129

Que vous pourriez faire :

git checkout <remote_branch> <paths>

<paths> est le fichier que vous voulez réellement. C'est plus facile si les fichiers que vous voulez sont dans des répertoires séparés de ceux que vous ne voulez pas, car vous pouvez utiliser des caractères de remplacement.

Sinon, essayez :

git pull --squash

Cela peut être un peu manuel, car vous devez alors supprimer les fichiers que vous ne voulez pas avant de valider, mais c'est aussi la seule façon de le faire si les fichiers que vous ne voulez pas ont été ajoutés dans le cadre de la même validation qui a modifié les fichiers que vous voulez. faire veulent.

L'inconvénient (assez important) est que vous perdez l'historique des livraisons de la branche distante.

1voto

Joseph Spiros Points 1056

La réponse courte est que vous ne pouvez pas "tirer partiellement" avec git.

Cependant, vous pouvez extraire les changements de B et ensuite utiliser git-rebase(1) ou git-filter-branch(1) pour modifier le(s) commit(s) contenant F avant de pousser a A . Gardez à l'esprit que cela va changer (par rapport à B ) les hachages du ou des commit(s) que vous modifiez, de sorte que les futures fusions tentées sur B sera moins intelligent que d'habitude.

Jetez un coup d'œil à le chapitre de Pro Git sur la réécriture de l'histoire .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X