Как связать локальный проект с другим репозиторием на GitHub?
У меня на GitHub есть репозиторий, в который я вручную загрузил файлы через браузер.
На своём компьютере я после этого внёс много изменений. Как мне теперь своему локальному проекту сказать через git, чтобы он запушил изменения в репозиторий, который я создал вручную?
1, Инициировать репу в локальной файловой системе
2. Добавить внешний репо с гитхаба
3. Пульнуть оттуда версию
4. Разрешить конфликты
5. Сделать новый коммит
6. Запушить его в гитхаб.
в первом варике между
3. Пульнуть оттуда версию
4. Разрешить конфликты
Наверное стоит добавить стэш всех изменений, потом пул в чистую репу, потом применение из стеша, и уже потом разрешение конфликтов.
Связывают не репозитории а конкретные ветки. Если вам дорога́ та ветка на гитхабе с единственным коммитом, то просто переименуйте её, чтобы не мешала отправлять актуальный проект.
Если же хочется непременно объединить две истории, то вам нужно предварительно подгрузить историю с гитхаба к себе, и только потом отправлять.
Например пересадить вашу локальную ветку поверх того коммита с гитхаба git pull --rebase origin main
Либо через коммит слияния git pull --allow-unrelated-histories origin main
Я придумал такой способ. Не знаю, на сколько он будет рабочий)
Я хочу клонировать репозиторий на компьютер. Потом в нём заменить все файлы отредактированные, а потом обратно запушить. Только вот вопрос, видно ли будет таким образом изменения в проекте?
Это рабочий способ. Но я думал вы хотите сохранить историю которая локально?
Я показал как отправить всю историю и ничего не потерять.
Зачем вам тогда гит, если вы просто копируете файлы вместо того чтобы использовать гит?
Сергей Кузнецов, я хочу сохранить историю коммитов на гитхабе. Сохранится ли она при таком способе? По идее все файлы останутся те же, в них только код поменяется.
Зачем вам тогда гит, если вы просто копируете файлы вместо того чтобы использовать гит?
Скопировал проект до того момента, как начал пользоваться гитом.
SNeverov, вы так и не ответили. Сколько коммитов сейчас на гитхабе? О насколько большой истории речь?
Все три предложенные мной способа сохраняют обе истории.
Самый простой способ, это не пытаться склеить истории а просто оставить их как есть сейчас в разных ветках. Достаточно только переименовать одну из них, чтобы эти разные ветки не конфликтовали своими именами.
Если очень хочется объединить истории и далее уже продолжать одну ветку, то придется разрешить конфликты.
При rebase количество конфликтов может быть равно количеству коммитов в той ветке, которую вы хотите наверх посадить.
При merge конфликт придется разрешить лишь один раз.
Мой вам совет — вы не разберётесь в гите с наскоку. Он хоть и простой, не не является интуитивно-понятным. Без прочтения руководства и практики не освоить.
Я вам полное решение сказал, а вы не понимаете смысла команд ))
Для вас это непонятные заклинания.
Остановитесь сейчас и пройдите вот этот небольшой курс на 16 уроков. https://ru.hexlet.io/courses/intro_to_git
Там теория и практика. А после вернитесь сюда и задайте вопрос снова если что-то останется не понятно.
Это имеется ввиду pull? Если да, то не заменит ли он весь код мой?
Pull — команда обновления. Она не заменяет, она скачивает новое.
Насчёт кода это вам решать, а коммиты в гите неизменяемые, их невозможно удалить. Весь код в вашей власти, как сделаете, так и будет.
Но если вы не понимаете что делаете, то выстрелите себе в ногу )))
1. переименовать директорию проекта на локальном диске
2. с гитхаба склонировать проект на локальный диск
3. скопировать с заменой свои файлы в полученный репозиторий.
4. сделать коммит и пушить не гитхаб
Например пересадить вашу локальную ветку поверх того коммита с гитхаба
Именно так я и хотел сделать, но я не понимаю, как мне правильно свой локальный проект связать с этой веткой.
Я пытался сделать через git remote add origin, но таким образом я создал новую ветку в репозитории. И потом я не понял, каким образом мне эту ветку накинуть сверху ветки "main".
Не ругайтесь особо, я - новичок.
образом мне эту ветку накинуть сверху ветки "main".
Я же написал точную команду в ответе.
Но я не понимаю зачем вам это?
Просто переименуйте старую main на гитхабе, а потом отправьте с компа свежую main на гитхаб. Вся история в итоге останется и вы сможете любую версию проекта вытащить.
Не усложняйте задачу, особенно если не понимаете что делаете. Лучше почитайте книжку по гиту.