Понимание git: подключите ветку к удаленному репозиторию

У меня есть репозиторий на github, скажем, testrepo. Теперь я хотел бы создать локальный репозиторийrepo это имеет одну веткуorigin-master где я хочу иметь возможность редактировать вещи из хранилища.

repo/origin-master  <-------->  origin/master

Клонирование работает отлично:

mkdir repo && cd repo && git init 
# not necessary of course:
echo "master" > master && git add master && git ci -m "master"
git remote add origin [email protected]:<username>/testrepo.git
git fetch origin
git branch --set-upstream origin-master origin/master 
git checkout origin-master
# create a new file:
echo "for origin-master" > orig-master && git add orig-master && git ci -m "orig-master"

но

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

Как я могу сказать git, что если я хочу нажать на источник, я хочу нажать на локальную веткуorigin-master вorigin/master?

 jthill22 мая 2012 г., 01:03
Покажите последовательность, которая не работает, а не ту, которая работает.

Ответы на вопрос(3)

эта почт за полезные советы по продвижению к репродукции с непокрытой (т. е. с рабочей копией). По сути, здесь происходит то, что, когда вы продвигаетесь таким образом, удаленное хранилище обновляет не свою рабочую копию (реальные файлы), а только свою историю. Затем вам нужноgit reset --hard на нем, чтобы обновить файлы, но это опасно, поскольку вы потеряете незавершенные изменения.

В качестве общего совета я бы предпочел предпочесть pull-push при работе с несколькими непрошенными репозиториями: толкать только в голые репозитории!

 topskip22 мая 2012 г., 16:04
Хорошо, это хороший совет, я сделаю это.
Решение Вопроса

$ git config push.default upstream
$ git push origin

git push origin такой же какgit push origin :, который выталкивает все "совпадающие" ветви по умолчанию. Ваша ветка origin-master не совпадает, поэтому она пытается взять ветку, которая Делает совпадение master) и выдвинь это к источнику.

Кроме того, вы можете указатьpush refspecs для каждого удаленного узла:

$ git config --add remote.origin.push origin-master:master
$ git push origin

Смотрите также примеры git-push а также ГИТ-конфигурации.

какой рабочий процесс вы пытаетесь настроить, но поможет ли это?

" Как сделать так, чтобы существующая ветка git отслеживала удаленную ветку?"

 topskip22 мая 2012 г., 16:04
Я пробовал это, но когда я нажимаю, я получаю ошибку, вижу мой перефразированный вопрос.

Ваш ответ на вопрос