TFS: Remplacer une branche à l'autre
Est-il possible d'écraser une branche à l'autre?
Ou est la seule solution pour supprimer la branche B et de créer une nouvelle branche à partir de la Branche A?
pourquoi voudriez-vous faire cela?
Nous avons une branche avec certaines inachevées code cochée, le code qui n'est plus d'actualité.
Nous avons une branche avec certaines inachevées code cochée, le code qui n'est plus d'actualité.
OriginalL'auteur Henrik | 2010-01-19
Vous devez vous connecter pour publier un commentaire.
Sauf si vous êtes sous TFS 2010, je vous recommande d'utiliser de Fusion + Résoudre à rapprocher les deux branches de retour dans la synchronisation.
Qui doivent égaliser tout, sauf pour les fichiers qui ont été créés uniquement dans B et jamais fusionnées. Utiliser le Dossier Diff pour trouver & de les concilier.
Supprimer + rebranch dans 2005/2008 court le risque de cauchemar-à-debug conflits d'espace de noms dans l'avenir. L'autre option, si vous avez de 2008, est de Détruire + rebranch. Évidemment, cela suppose que vous êtes ok avec perte de toute l'histoire de la copie originale de B.
Encore TFS2013
Qu'entendez-vous par "Sauf si vous êtes sous TFS 2010"? Souhaitez-vous utiliser autre chose que de la fusion et de résoudre la combinaison qui vous décrit ici pour TFS 2010? Pourquoi?
Si la valeur que vous êtes de passage à l'option automatique de la résolution de la commande sera TakeTheirs au lieu de acceptTheirs? C'est la valeur que j'ai trouvé dans la documentation. msdn.microsoft.com/en-us/library/6yw3tcdy(v=vs. 100).aspx
Peut-être que je me trompe, mais je ne voudrais pas donner une réponse correcte. La "force" l'option ignore simplement l'histoire et de fusionner les changements, même si certains d'entre eux ont été fusionnées avant. Le point clé ici est que les TFS de fusion n'est pas le fonctionnement basé sur le contenu du fichier, mais basé sur l'histoire. Le "sans fondement" fusionner est en fait de résoudre complètement le problème.
OriginalL'auteur Richard Berg
Dans Visual Studio 2010, j'ai simplement utilisé le fondement de fusion pour obtenir ceci:
De fusion Tf /sans fondement [chemin d'accès source] [chemin] /récursive
Lorsque l'résoudre les conflits fenêtre pop-up, sélectionnez "Prendre la version de source". Remarque, les fichiers n'existent que dans la cible ne sera pas supprimée à l'aide de fusion sans base, mais vous pouvez comparer les 2 branches d'identifier les différences et de les supprimer manuellement.
Se référer à: http://msdn.microsoft.com/en-us/library/bb668976.aspx
OriginalL'auteur Showching Tong
J'ai eu du succès en utilisant Richard Berg répondre mais se sentait comme s'il y avait quelques détails qui manquaient. C'est ainsi que j'ai été en mesure d'éliminer les différences liées à la résolution de conflit et les ensembles de modifications qui n'avaient pas été fusionnée à la source et de faire la cible identique à la source. Notez que cela est de savoir comment je vais faire référence à l'branches - source est celui qui ne doit pas être modifié pendant que la cible est celui qui devrait être fait identique à la source.
tf merge $/target $/source /recursive /discard
Remarque: assurez-vous que vous avez réglé le dossier de travail d'un chemin d'accès dans votre espace de travail afin que la tf de l'outil sait qui de l'espace de travail et serveur TFS à utiliser.
Vérifier qu'il existe des différences entre les branches qui doivent être prises en compte si non, aucune action supplémentaire n'est requise.
3.1. Afficher l'historique sur la cible de la branche et de trouver la dernière fusion complète de la source à la cible (ignorer le "cherry picking" fusionne comme ce sera le résultat de beaucoup de faux positifs) - note de la certain nombre de modifications. Une alternative plus facile serait d'effectuer un publipostage à partir de la source de la branche dans la branche cible pour obtenir la dernière version à partir de la source de la branche dans la branche cible.
3.2. Clic droit sur la branche source dans l'Explorateur du Contrôle de Source et sélectionnez Comparer dans le menu contextuel. Ne prendre que la dernière version de la source si vous fusionnées à la source de la branche dans la branche cible à l'étape 2.1. Sinon, sélectionnez l'ensemble de modifications de la Version Source | zone de liste déroulante Type, puis entrez le numéro de révision de l'étape 2.1.
3.3. Utilisez la flèche du menu déroulant sur le bouton Parcourir à côté de la Cible de Chemin de champ pour sélectionner le Chemin d'accès au Serveur. Ensuite, sélectionnez la branche cible dans la boîte de dialogue qui s'ouvre.
3.4. Cliquez sur OK dans le dialogue Comparer pour effectuer la comparaison.
tf merge $/source $/target /recursive /force /version:T
Remarque: la T spécification de version indique la version la plus récente.
Fermer les conflits de fusion de dialogue.
Automatiquement résoudre tous les conflits par le choix de la source de la branche.
tf resolve $/target /recursive -auto:TakeTheirs
De l'enregistrement.
Confirmer qu'il n'y a plus de candidats pour les fusions de la cible à la source et qu'il n'y a pas de différences entre les deux branches (il suffit d'utiliser la dernière version que nous n'avons forcé de fusion de la dernière version à l'étape 4.).
Voir MSDN pour plus de détails sur la tf fusion et résoudre commandes.
OriginalL'auteur Scott Munro
Supprimer la branche B et en créer un nouveau à partir de la branche A.
Est-il une raison pourquoi vous ne voulez pas le faire?
Pas de problèmes que je peux penser (à part le fait que l'onu-la suppression de l'ancienne direction serait difficile si vous avez jamais voulu le faire)
Cette réponse a été downvoted - je devine car l'histoire serait perdu. Mais quelle est l'importance de cette histoire vraiment, si votre objectif est de faire de la branche cible identique à la source? C'est toujours une option dans certains scénarios.
OriginalL'auteur Martin Woodward