2012-01-09 25 views
0

Я совершенно новый в GIT, но я хорошо понял основы. Тем не менее, я чувствую себя смущенным ...Rebase multiple merges on same files

Мы используем github, а моя ветка была впереди впереди и 20 позади ведущей ветки (настолько устаревшей).

я сделал следующее:

git checkout myBranch 
git rebase master 

Я, кажется, слились одни и те же файлы несколько раз по какой-то причине.

Я думаю, это потому, что я применяю свои изменения к каждой из разных версий, которые были совершены на главной ветке?

Это заняло довольно долгое время, и, когда я закончил, я предположил, что смогу тогда просто оттолкнуть назад (теперь, надеюсь, до конца) ветку обратно в github. Но он говорит мне, что есть номера изменения быстро вперед - что я не понимаю ...

Итак я тянуть, и мерзавец говорит мне, что я должен объединить все те же файлы снова ...

Должно быть, мне не хватает чего-то фундаментального в моем понимании того, что здесь происходит.

ответ

2

По существу rebase временно удаляет ваши коммиты, сохраняет их в виде патчей, получает голову мастера, а затем снова накладывает патчи.

Вот сайт, в котором объясняется, что git rebase является сочным - http://book.git-scm.com/4_rebasing.html.

БУДЬТЕ ОСТОРОЖНЫ:Здесь будут драконы!http://vectorya.com/freevectors/vector-cartoons/dragon-baby-green/

Если вы абсолютно точно, проблем не будет, вы можете проигнорировать ошибку и выполнить git push --force. ОДНАКО, вы рискуете сломать центральный репозиторий. Не рекомендуется по Github - http://help.github.com/remotes/ Посмотрите на раздел Dealing with “non-fast-forward” errors

Или попытаться решить первую тягу, а затем нажмите - git pull origin master затем git push origin master

Одним из вариантов было бы использовать git merge вместо rebase. git pull origin master, чтобы обновить мастер. Были дебаты в сообществе по rebase vs merge, и у каждого есть свои плюсы и минусы.

Чтобы предотвратить дублирование контента, статьи по этой же теме - http://softwareswirl.blogspot.com/2009/04/truce-in-merge-vs-rebase-war.html, Git workflow and rebase vs merge questions и http://www.randyfay.com/node/89.

Примеров слияния в мастер:

  • git checkout master, а затем git merge mybranch

Чтобы объединить мастер в mybranch, а затем сливаются в мастер

  • git checkout mybranch, а затем git merge master
  • git checkout master, а затем
+0

Вы правы, добавили в следствие и помощь от github страницы –

+0

+1, значительно улучшилось! :) – ANeves

+0

@First Zero - Спасибо за ответ, раньше я видел вашу первую ссылку для переустановки, и на этой странице говорится, что вы должны переупаковать, если хотите сохранить историю фиксации. Я прочитал в нескольких других местах, что перебалансировка лучше, чем слияние по этой причине? – iKode