2014-09-16 2 views
6

У меня есть мое первое знакомство с git через класс, который я принимаю. У меня есть несколько файлов в каталоге на моем компьютере, и я могу создавать и передавать их без проблем. Однако, когда я пытаюсь нажать файлы в моем хранилище GitHub, я продолжаю получать это сообщение:Git Предоставление первой ошибки при попытке нажать

Pushing to https://github.com/BigMeanCat/CMDA 
To https://github.com/BigMeanCat/CMDA 
! [rejected]  master -> master (fetch first) 
error: failed to push some refs to 'https://github.com/BigMeanCat/CMDA' 
hint: Updates were rejected because the remote contains work that you do 
hint: not have locally. This is usually caused by another repository pushing 
hint: to the same ref. You may want to first integrate the remote changes 
hint: (e.g., 'git pull ...') before pushing again. 
hint: See the 'Note about fast-forwards' in 'git push --help' for details. 

Может кто-нибудь помочь мне с тем, что это значит и как это исправить? Я видел несколько людей с подобными проблемами в Интернете, но я БРЕНД НОВЫЙ, чтобы git и недостаточно хорошо знаком с языком командной строки git. Я немного не решаюсь принимать определенные предложения, так как я не знаю, решит ли это проблему или усугубит ситуацию.

Спасибо!

+4

Раствор находится в само сообщение об ошибке –

+0

Есть некоторые отличия от мастера на github, и сначала вам нужно их получить; так что просто сделайте «git fetch», а затем создайте «хозяин начала генерации git» – sop

+1

@sop. Просто git fetch не хватит, он также должен объединить/переустановить изменения. –

ответ

2

Это означает, что кто-то нажал на работу в удаленный репозиторий, чтобы объединить его с вашей работой, вы можете запустить git pull --rebase, а затем перевести свою совместную работу обратно в удаленный репозиторий.

+1

OP является новым для Git. Я бы не рекомендовал такую ​​«продвинутую» команду как «git pull --rebase» для новичков. – Jubobs

+1

@Jubobs Я думаю, что это самый простой способ справиться с потенциальным слиянием. –

+0

Возможно, но это может также смутить ОП на такой ранней стадии его обучения Гит. Во всяком случае, я думаю, что мы пропустили важную информацию. Мы должны дождаться, пока ОП даст нам более подробную информацию о том, что он сделал. – Jubobs

12

Кто-то еще (или вы на какой-либо другой машине) нажал набор изменений в удаленный репозиторий. У вас на вашей локальной машине еще нет этих изменений. Таким образом, чтобы решить эту ситуацию, вы должны сначала

git pull 

, а затем

git push 

Однако, вы не сможете git pull в то время как у вас есть изменения в вашем рабочем дереве, поэтому, прежде чем тянуть/толкать, вас сначала необходимо указать commit или stash ваши местные изменения. Это потенциально может вызвать ситуацию слияния, если удаленные изменения совпадают с вашими локальными.

+0

Спасибо! Я выяснил свою проблему и объяснил это в некоторых комментариях выше, но git pull и git push были именно тем, что мне было нужно. – FizzikalGrafiti

0

Когда вы начинаете работать с git, вы можете немного взглянуть на документацию: http://git-scm.com/doc. Из вашего описания Я понимаю, что у вас есть существующий репозиторий с файлами, которые совместно используются с другими одноклассниками. Поэтому вам нужно сначала вытащить весь проект (со всеми файлами). Имея обновленную версию проекта в вашем локальном репозитории, вы можете нажать фиксацию изменений в репозитории.

+0

Спасибо. Раньше я просматривал это руководство, но я все еще выясняю, что происходит. Я работаю с командой других студентов, но я не дал им разрешения работать с моими файлами или нажимать на мой репозиторий. Когда я тяну, я делаю запрос на растяжение в удаленном репозитории или из командной строки из локального каталога, содержащего мои файлы (предположим, мой локальный репозиторий)? Локальный репозиторий должен иметь то же имя, что и локальный репозиторий? – FizzikalGrafiti

+0

** локальный ** репозиторий должен иметь то же имя (то есть имя папки), а структура файлов должна быть такой же, как и в ** удаленном ** репозитории. Команда git pull сделает обновление локального репозитория, так что он точно такой же, как и удаленный репозиторий. – Mateusz

7

У меня была такая же ошибка, затем я решил эту тему с помощью команды «-force». Вкратце, напишите эту команду;

git push origin master --force 

Внимание: Возможно, вы пытались сделать нажать ваши коды снова и снова прежде, вот почему вы приняли это решение error.My перезаписать силой с ревизией. Посредством этого метода ваш репозиторий может привести к несоответствию других людей. Но если вы работаете в одиночку (не как группа, работающая), вы можете легко использовать «-force», как я упоминал выше.

1

@tunacy сказал это хорошо.

кто-то совершил хранилище, так что вам просто нужно сделать

git pull 

и

git push 

что все вы также можете использовать

git merge 

для слияния

+0

помолитесь за вопрос «бедная душа, ожидающая ответа на 2+ года :) – agg3l

2

Вы можете решить эту проблему командой.

git push origin master --force 
+0

Это переопределяет ограничение' git push'. Не рекомендуется для совместной работы. Из документации git: Если кто-то еще построил поверх вашей первоначальной истории, когда вы пересобираете, кончик ветки на пульте дистанционного управления может продвигаться с ее фиксацией, а слепое нажатие с --force ** потеряет работу **. – Casey

0

мерзавец тянуть хороший вариант

Но также: мерзавец мастер толчок происхождения --force команда будет в конечном итоге поможет, если проблема не устранена

Смежные вопросы