2012-01-29 4 views
1

J'ai une configuration de prise en pension nue avec les branches suivantes:GIT remplacer le contenu de la branche

dev 
*master 
stage 
prod 

J'ai cloné à un document de travail et a émis les commandes suivantes:

git checkout -b stage remotes/origin/stage 
git checkout -b dev remotes/origin/dev 

Qu'est-ce que Je dois faire est de pousser le contenu entier de ma branche de mise en scène dans ma branche de dev. Fondamentalement, il s'agit d'une première installation, et j'ai commencé par pousser le code de production dans une branche de mise en scène (fonctionnait parfaitement) et maintenant je pousse mon code de mise en scène dans la branche de développement.

Le problème que je rencontre est un conflit de fusion sur les fichiers binaires. Comment puis-je dire à git de ne même pas regarder les conflits de fusion, et au lieu de copier directement sur le contenu de la branche de la scène dans la branche de développement?

Répondre

1

Décidé la façon la plus simple de le réparer était de le faire:

clone le repo deux fois, une fois dans un dossier dev une fois dans un dossier de scène puis

cd dev 
git rm -rf * 
git commit -a -m "take that n00b repo!" 
git push 
cp -r ../stage/* . 
git add * 
git commit -a -m "how you like dem apples??" 
git push 

inélégante mais il a obtenu le poste fait, et était beaucoup moins douloureux que de gérer les conflits de fusion de git. Intéressant, pouvez-vous git à distance ajouter un repo que vous avez cloné à partir de

3

Semble comme --s ours l'option de merge est juste ce que vous avez besoin.

http://book.git-scm.com/5_advanced_branching_and_merging.html

+0

On dirait que ce ne serait pas autorisé ... –

+0

@JohnZ La seule chose qui pourrait le bloquer est la collision de noms. Il ne peut pas y avoir 2 télécommandes 'origin', mais beaucoup de télécommandes avec la même URL que' origin'al. –

2

Vous avez quelques options:

  1. Fusion avec la stratégie "nôtre"
  2. de fusion normalement, puis modifier la fusion commit après avec 'git checkout HEAD^-.'
  3. Réinitialiser la branche dev pour pointer vers la mise en scène avec 'git reset --hard staging'
  4. Ne pas fusionner, mais juste valider ce qui est en staging après 'git checkout staging -.'

Les options 1 et 3 sont probablement les meilleures. Vous devez connaître le DAG (google "git for computer scientist").

Nous utilisons ce flux de travail: https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR

Il a été très bon pour nous.

Questions connexes