2012-03-06 3 views
4

Je suis un nouvel utilisateur de GIT qui a expérimenté ce qui se passe quand vous faites un PULL et des différences sont trouvées entre deux versions d'un fichier quand je fais un PULL. D'après ce que j'ai vu, si deux changements ne sont pas en conflit (par exemple, l'un est en haut d'un fichier et l'autre en bas d'un fichier), les différences seront résolues AUTOMATIQUEMENT, sans toute intervention de ma part. OTOH, s'ils sont, par exemple, sur la même ligne de code, on me demande de les résoudre manuellement via l'éditeur KDIFF3.GIT: ne veux pas que toutes les modifications soient fusionnées automatiquement, même les plus évidentes

La façon dont nous travaillons chez moi, nous ne voulons pas que GIT/KDIFF3 fasse une fusion automatique. En d'autres termes, je veux que la même boîte de dialogue apparaisse lorsque GIT NE PEUT PAS résoudre les changements apportés à TOUS les changements, même les plus évidents.

Y at-il un paramètre, une option ou autre chose qui peut me permettre de le faire dans le même flux de contrôle? (PS-j'ai essayé l'option où vous faites juste un fetch mais je ne peux pas comprendre ce qui se passe avec cela et préférerais l'éviter de toute façon.)

Merci beaucoup. -Steve

+0

Êtes-vous simplement à la recherche de git pull --no-commit? –

Répondre

0

Utilisez git fetch, il ne fusionnera pas. Consultez ce lien pour voir la différence entre tirer et chercher. http://blog.mikepearce.net/2010/05/18/the-difference-between-git-pull-git-fetch-and-git-clone-and-git-rebase/

EDIT: Il vous suffit de lire la dernière partie de votre message. Je ne connais pas de moyen de faire une fusion sans fusion, comme cela est conçu pour faire. Je crois que fetch est votre seule option si vous voulez éviter la fusion.

EDIT2: Je ne l'ai pas essayé personnellement, mais le message de blog suivant a une approche qui semble correspondre ce que vous demandez: http://jasonrudolph.com/blog/2009/02/25/git-tip-how-to-merge-specific-files-from-another-branch/

Pour votre cas, ce que je crois que vous feriez est après avoir effectué l'extraction, vous effectuerez alors un diff entre la branche que vous voulez fusionner et la branche que vous avez récupérée. Ensuite, vous vérifiez chaque fichier individuel qui a changé et les commettre à votre goût. Je m'excuse si ce processus est fastidieux, mais je ne connais aucun moyen de faire apparaître la boîte de dialogue si un fichier change au cours d'une fusion.

+0

Merci pour la réponse! Donc, si faire un fetch, comment puis-je procéder pour résoudre les différences (manuellement) entre les fichiers? – Steve

+0

Pas besoin de vous excuser pour avoir essayé de vous aider! :) Alors, qu'est-ce que CHECKOUT alors? Je suis actuellement un citoyen d'un pays de contrôle de version (MKS), où "extraire" signifie extraire le fichier du référentiel MKS (en utilisant la terminologie GIT) afin que je puisse le modifier, et LOCKS LE FICHIER À MON NOM. Si quelqu'un d'autre dans mon équipe essaie de vérifier le fichier, on lui dira que le fichier est verrouillé. Ensuite, quand j'ai fini, je vérifie le fichier, les changements sont poussés (encore en utilisant le jargon GIT), et mon verrou est supprimé. Donc, est-ce que la caisse GIT a quelque chose en commun avec la caisse MKS? Merci! – Steve

+0

git ne verrouille pas les fichiers, donc non, checkout dans git n'a pas cela en commun avec MKS. Un checkout est principalement utilisé pour basculer entre les branches, mais il permet également la possibilité de vérifier les fichiers individuels (personnellement, je ne vérifie les fichiers individuels quand je le réinitialise à un état stable.) Parce que git est un VCS distribué, il y a pas besoin de verrouiller les fichiers. Chaque développeur a une copie du référentiel sur sa machine de développement. Pousser et tirer sont utilisés pour partager le code mis à jour. Je pense que vous essayez finalement d'accomplir quelque chose pour lequel git n'a pas été conçu. J'espère que cela pourra aider! – jtiger

Questions connexes