2013-09-21 2 views
2

Так что я не уверен, если это было причиной моей проблемы, но я случайно сделал:git - Не могу нажать, не перескочить вперед на моей ветке?

git push -u origin master 

вместо:

git push -u origin facebook 

, когда я был на моем facebook отрасли. Он ответил:

Branch master set up to track remote branch master from origin. 

Теперь, когда я пытаюсь нажать:

To [email protected]:url.git 
! [rejected]  facebook -> facebook (non-fast-forward) 
error: failed to push some refs to '[email protected]:url.git' 
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. 

Я не могу вытащить либо:

You asked me to pull without telling me which branch you 
want to merge with, and 'branch.facebook.merge' in 
your configuration file does not tell me, either. Please 
specify which branch you want to use on the command line and 
try again (e.g. 'git pull <repository> <refspec>'). 
See git-pull(1) for details. 

If you often merge with the same branch, you may want to 
use something like the following in your configuration file: 

    [branch "facebook"] 
    remote = <nickname> 
    merge = <remote-ref> 

    [remote "<nickname>"] 
    url = <url> 
    fetch = <refspec> 

See git-config(1) for details. 
+0

Это только вы с доступом? – exussum

+0

Нет, другие тоже. – dtgee

+0

когда вы делаете 'git pull', он обновляет facebook и позволяет вам нажать? – exussum

ответ

2

Ну это когда вы пытаетесь нажать и вы сделали изменения в файле, которые конфликтуют с последней версией в Git.

Попробуйте это:

git pull origin facebook 

Если есть ошибка:

git merge 
git commit -a -m 'message' 
git push origin facebook 
0

Вам необходимо исправить 2 вопроса

1.) Возвратить неправильный "фейсбук" совершает что ты нажал к «ведущей» ветке восходящего репо.

Самый простой способ сделать это может заключаться в том, чтобы снова клонировать репо из восходящего потока в новый каталог. Использовать, например. gitk, чтобы увидеть, какие ошибки совершают в главной ветке, вернуть их и нажать на них. Теперь ваши коллеги счастливы, потому что неправильные вещи в репо исправлены.

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

2.) Исправьте свое собственное репо, чтобы ветки больше не смущались. Проще всего было бы забыть о старом репо и просто продолжить новый клон. Однако, если есть важные штампы или другие ветви, которые не были перенесены в любой восходящий поток, вам необходимо отремонтировать настройку своего старого репо. Самый простой способ - отредактировать .git/config напрямую. Возьмите чистое репо, у которого не было таких аварий, как образец, если вы не знаете, как это должно выглядеть.

Лично я часто предпочитаю git fetch над git pull. Я не думаю, что git fetch может потерпеть неудачу. Git pull делает выборку и слияние в одной команде, иногда просто лучше делать одну из них В удаленных филиалах удаленных филиалов/origin/branchname у вас есть точные снимки того, что находится в удаленном репо во время последнего выборки. Они доступны только для чтения, поэтому вы не можете их испортить. (Они называются удаленными, но они не хранятся удаленно, что часто неправильно понимается). Ваши местные филиалы читаются/записываются. Если кто-то прикручен, вы можете даже удалить его и проверить его снова. Git создаст новую локальную ветку из удаленной ветви. (Если вы не хотите удалять ветку, если она содержит важные фиксации, которые никогда не были нажаты)

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

Я сам использую только git push (без каких-либо аргументов), поэтому такого путаницы не может быть. (За исключением того, что я первый раз нажимаю новую ветку.) Кроме того, я использую только git fetch вместо git pull, поэтому он всегда удался, и я могу проверить, что сделали другие. (но тогда мне нужно объединить удаленные ветви, если я сохраню для них локальный, там может произойти подобное смешение, но все же оно будет только локальным и может быть удалено без нарушения других)

Дополнение: В принятом ответе в Git Pull Doesn't Do A Git Fetch приведены дополнительные сведения о push/fetch/pull и о том, как (а) использовать их.

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