Нажмите на новое приложение в существующем Git-хранилище - PullRequest
1 голос
/ 16 мая 2011

У меня есть существующее хранилище Git на Github.

Я хотел реорганизовать свой код, поэтому я начал новый проект, назовем его NewApp. Я превратил папку NewApp в репозиторий git, вызвав git init.

Затем я поставил изменения и зафиксировал их.

Затем я добавил хранилище

git remote add github github@github.com:myAccount/myRepo

Теперь я хочу перенести в хранилище ветку с именем development. Поэтому я использую git push github development

После чего я получаю сообщение об ошибке: не удалось подтолкнуть некоторые ссылки на git@github.com:myAccount/myRepo.git

Все объяснения, которые я могу найти в Интернете, предполагают, что вы сначала должны сделать git pull из этой ветки. Я не хочу этого делать, потому что это даст мне старый код, который будет совершенно другим. Но я все равно сделал это, а затем изменил код, но он все еще не работал для меня.

Что происходит? Почему вы не можете просто переписать то, что в данный момент находится в определенной ветке?

Ответы [ 2 ]

4 голосов
/ 16 мая 2011

Создавая новый репо (git init), вы фактически делаете новый корневой коммит, который вы не сможете отправить в существующее репо.

A git pull ничего не решит, так как все равно будет два корневых коммита.

Для вашей реорганизации я бы скорее рекомендовал создать ветку из существующего коммита (т.е. клонировать существующее репо и создать ветку в этом клонированном репо) вместо инициализации нового репо.

2 голосов
/ 16 мая 2011

Я думаю, что ошибка failed to push some refs возникает потому, что:

git push github development

... эквивалентно:

git push github development:development

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

git checkout -b development
git push -u github development

(-u нужен только один раз, чтобы установить связь между вашей локальной веткой developmentи тот, что на GitHub.)


Обновление: То, что я предложил выше, должно работать, но, как VonC указывает в своем ответе правильная вещьДля этого нужно было клонировать существующий репозиторий, создать новую ветку на основе master, а затем зафиксировать вашу новую версию в этой ветке.Таким образом, у вас есть общая история, и это (а) значительно упростит объединение для git и (б) более точно отобразит историю вашего проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...