2016-10-30 2 views
1

Мы должны добавить новые функции в существующий проект. Итак, каждый создает свою собственную ветку, чтобы сделать функцию.Филиал Github не может быть изменен

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

Теперь, когда мы находимся в самом начале запуска проекта, было изменено множество небольших файлов, таких как файл pom.xml, файл .gitlab-ci.yml, что дало мне много ошибок слияния. Кроме того, пока я пытался получить умственное сцепление с этим целым github, мои товарищи по команде добавили еще несколько кодов, тем временем, и я не могу увидеть лес через деревья.

так что я пытаюсь сохранить мой новый код, но обновить свою конкретную ветвь со всем кодом из основной ветви.

, если я не ошибаюсь, это как раз то, что переформатирует правильно?

в то время как я выполнил перебазироваться, как так:

-git rebase master 

он дал мне 20 ошибок слияния. Но дело в том, что это происходит через каждое обновление, сделанное с момента начала моей ветки, когда оно сначала разветвлено, и много раз, когда его только тот же файл переписывается. поэтому я просто скопировал файл из github в мой проект (его только несколько файлов), а затем внимательно прочитал каждую ошибку слияния и, если она возникла в файлах, которые я скопировал, я просто их пропустил.

(что также было странно, что некоторые из этих файлов постоянно получаю ошибки даже жесткие я просто скопировать вставить точный файл из филиала я перебазирования в)

тогда, когда я finnaly пройти мимо последней ошибки, это дает мне это

fatal: update_ref failed for ref 'refs/heads/dev_504': 
cannot lock ref  'refs/heads/dev_504': ref refs/heads/dev_504 is at 
XXXXXXX 
but expected  XXXXXXXX 
Could not move back to refs/heads/dev_504 

тогда я перезагрузить компьютер и получить этот

fatal: cannot resume: .git/rebase-apply/final-commit does not exist. 

тогда я прервать перебазироваться и когда я попробовать еще раз, я получаю 20 ошибок снова.

github настолько сложный, что все, что я хочу сделать, это получить код из основной ветки и добавить к нему ссылку (это всего лишь 1 файл кстати).

так что в качестве альтернативы я могу просто заставить вытащить из главной ветки, а затем просто добавить свой файл? я чувствую, что это не так, как ур сделал это.

P.S. : Я добавил библиотеку через maven, это влияет на то, чтобы вытащить и толкнуть?

Благодаря

+0

Если вы хотите, чтобы сделать его проще, вы могли бы начать перебазирование в интерактивном режиме всех ваши фиксации на начальных мастерах (т.е. на коммят, где вы начали свой филиал), и сквош всех коммитов в один. Затем переустановите это одиночное commit на master. У вас все еще будут конфликты, но вам придется разрешать их только один раз. –

ответ

0

Что вы можете сделать, это сжать/сквош все совершающее на вашей ветке в один консолидированы совершить. Для этого вам нужно найти общего предка для master и feature_branch. Команда git merge-base --all master feature_branch даст хэш (ы) наилучшего общего предка (-ов) (лучше, если есть только один хэш). Помните этот хэш (X). Теперь вам нужно представить свою работу как единую фиксацию. Вы можете выполнить интерактивную перезагрузку или сбросить ярлык (git reset --soft, git commit). Я лично предпочитаю последнее. Убедитесь, что вы находитесь в своей ветке функций и имеете чистое состояние.

git reset --soft X 
git commit -m'MESSAGE' 
git rebase master <= sort conflicts 
git checkout master 
git merge feature_branch <=it will be FastForward merge 
Смежные вопросы