2013-03-14 2 views
1

Я внесла некоторые изменения в код.Git fetch/merge не работает

  • мерзавец добавить -A
  • мерзавец совершить -m ".." принести
  • мерзавец мастер толчок происхождения

! [rejected] master -> master (non-fast-forward) error: failed to push some refs to '.....' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.

  • мерзавец мастер происхождения

remote: Counting objects: 42, done. remote: Compressing objects: 100% (26/26), done. remote: Total 26 (delta 17), reused 0 (delta 0) Unpacking objects: 100% (26/26), done. From ...... * branch
master -> FETCH_HEAD

  • мерзавец мастер слияния

Already up-to-date.

  • мерзавец объединить происхождение/мастер

Already up-to-date.

  • мерзавец объединить происхождение/Мастер

Already up-to-date. Yeeah!

  • мерзавец мастер толчок происхождения

! [rejected] master -> master (non-fast-forward) error: failed to push some refs to '....' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.

Так же снова.

Что происходит? С git pull это работает, но я читаю, что лучше использовать fetch/merge, поэтому, пожалуйста, скажите мне, что я делаю неправильно.

+0

Если есть что-то, что я больше не могу видеть, это «Уже обновленные». Msgs: D –

ответ

3

git pull приведет к точному результату, равному git fetch и git merge.

git fetch работает немного иначе, как вы его называете. Обычно вы просто звоните git fetch. Это приведет к обновлению всех удаленных филиалов от источника. Впоследствии ваша собственная ветка по-прежнему master, а удаленная ветка - origin/master, поэтому, если вы хотите объединить origin/master в master, вы должны проверить master и git merge origin/master.

git fetch origin master просто доставит эту ветку и сохранит ее во временную ветку FETCH_HEAD. вы можете объединить его, используя git merge FETCH_HEAD.

Но вы, вероятно, хотите сделать простой git pull. ;)

Подсказка: используйте git branch -av, чтобы увидеть все ваши локальные и удаленные ветки.

+0

Спасибо, это сработало. Скажем, я использую git fetch, и он обновит 3 ветки. branch1, branch2, branch3, теперь я хочу только объединить branch1 и branch3. (объединить каждую ветвь в ее происхождение, а не вместе). Как мне это сделать? – gisek

+0

'git checkout master; git merge origin/branch1; git merge origin/branch3' - объединение всегда объединяет данную ветку в текущую, поэтому вы просто просто объединяете первую, а затем вторую. вы также можете объединить оба одновременно с 'git merge origin/branch1 origin/branch3'. – michas

0

Какая отрасль вы проверили? git merge origin/master master не нацелен master: Вы всегда сливаетесь с текущей ветвью.

+0

Я в главной ветке.Я просто пытался использовать все комбинации: D. Итак, как это сделать правильно? – gisek