2009-11-27 3 views
1

Так у меня есть 3 GIT ветви:Слияние нескольких ветвей гита в мастер?

  • мастер
  • обновления
  • auth_upgrade

У меня нет действительно использовали ветви, как я должен ... так master это путь устаревший, refresh несколько устарел, а auth_upgrade фактически является ветвью, которая полностью текущая.

Итак ... В конечном итоге я хочу сделать auth_upgrade ведущую ветку, а затем git push это мое сообщение github.

Каков наилучший способ для этого?

ответ

2

Вы могли бы вытащить auth_upgrade в master.

$ git co master 
$ git pull . auth_upgrade 
  • затем сделать магистральную работу по master и использовать эту ветку для синхронизации с удаленным ..
  • применить ту же процедуру refresh, если есть некоторые уникальные изменения, которые вы хотите включить ..

см:

$ man git-pull 

    git-pull - Fetch from and merge with another repository or a local branch 
+0

Проблема, с которой я столкнулся, заключается в том, что между auth_upgrade и master есть всевозможные конфликты с различиями между файлами. Как я могу для auth_upgrade просто перезаписать любые различия кода в главном? – Shpigford

+0

Пожалуйста, изучите/http://www.kernel.org/pub/software/scm/git/docs/git-merge.html/ /Стратегии слияния: ours/ Это разрешает любое количество головок, но результирующее дерево слияния всегда относится к текущему ветви ветви, эффективно игнорируя все изменения из всех других ветвей. Он предназначен для замены старой истории развития боковых ветвей. – miku

0

Вы можете переименовать ветви с опцией git branch -m:

git branch -m master old_master 
git branch -m auth_upgrade master 
+0

Но если я переименовать '' auth_upgrade' к master', а затем попытаться нажать на GitHub, Я получаю ошибки «без перемотки вперед». Кроме того, все новые файлы и изменения между 'master' и' auth_ugrade' не становятся толкаемыми, поэтому, когда я развертываю из ветви, файлы полностью выходят из строя. – Shpigford

+0

Ах, вы не упомянули, что 'master' не был предком' auth_upgrade'. Это имеет значение.Я оставлю свой ответ, если он будет полезен для кого-то другого, у которого есть аналогичная ситуация, которую можно решить с помощью переименования. –

0

Если, когда вы говорите 'из даты' т старые ветви - строгие предки, тогда у вас действительно нет проблем с слиянием.

Если вы просто хотите, чтобы сделать вашу текущую ветку в основную ветвь на удаленном хранилище вы можете просто сделать:

git push origin HEAD:master 

Edit: от одного из ваших комментариев это звучит, как вы не имеете все изменения от удаленного мастера в текущей ветке, хотя, так что вам может понадобиться, чтобы объединить их в перед отправкой успешно:

git fetch 
git merge origin/master 

вы можете удалить вам местные отделения. delete с помощью небольшого -d безопасен тем, что он удаляет только ветви, являющиеся предками вашей текущей ветви.

git branch -d master 
git branch -d refresh. 

Если это беспокоит вас, что ваше местное отделение не называется мастер теперь можно сделать:

git checkout -b master 
git branch -d auth_upgrade 
Смежные вопросы