GIT заменяет содержимое ветки - PullRequest
1 голос
/ 29 января 2012

У меня есть голая репо со следующими ветками:

dev
*master
stage
prod

Я клонировал это в рабочую копию и выполнил следующие команды:

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

Что мне нужно сделать, это перенести все содержимое моей промежуточной ветви в мою ветку разработки. По сути, это первоначальная установка, и я начал с переноса производственного кода в промежуточную ветку (работала без нареканий), а теперь я помещаю свой промежуточный код в ветку dev.

Проблема, с которой я сталкиваюсь, - это конфликт слияния бинарных файлов. Как мне сказать git не смотреть даже на конфликты слияния, а просто копировать содержимое ветви stage в ветку dev?

Ответы [ 3 ]

3 голосов
/ 29 января 2012

Похоже, --s ours вариант merge - это то, что вам нужно.

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

2 голосов
/ 29 января 2012

У вас есть несколько вариантов:

  1. Объединить с помощью "нашей" стратегии
  2. Объединить как обычно, а затем изменить коммит слияния после с помощью 'git checkout HEAD ^ -.'
  3. Сбросьте ветку dev так, чтобы она указывала на подготовку с помощью 'git reset --hard staging'
  4. Не объединяйте, а просто фиксируйте то, что находится в стадии подготовки после 'git checkout staging -.'

Варианты 1 и 3, вероятно, являются лучшими.Вам нужно знать DAG (git "git for computer science").

Мы используем этот рабочий процесс: https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR

Это было очень хорошо для нас.

1 голос
/ 30 января 2012

Решил, что самый простой способ это исправить:

дважды клонировать репо, один раз в папку dev, один раз в папку stage, затем

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

Inelegant, но онработа сделана, и была намного менее болезненной, чем работа с конфликтами слияний в git.

...