Перенос данных через gitHub
Я новичок в гит, но пытаюсь разобраться. Подскажите, как правильно переносить данные с одного удаленного репо в другой. Моделирую ситуацию, когда есть рабочий комп(firstMachine), сервер(secondMachine) и репо на gitHub (gitRepoTest). Опишу свои действия с комментариями, чтобы знающие люди поправили в нужных местах:
- Создал репо в gitHub/gitRepoTest, создал в нем файл README.MD со сторокой "created in gitHub"
- Перенес в первый локальный репо (папка firstMachine) код:
- git init инициализирую репо
- git remote add sn https://github.com/user/repo.git добавил удаленный репо и присвоил ему короткое имя "sn"
- git fetch sn добавил удаленный репозиторий
- git checkout main перешел в ветку main
- Такми образом в локальном репо (firstMachine) у меня отобразился файл README.md Моя задача - создать ветку, работать в ней, отобразить изменения, созданные в данной ветке в репозитории на gitHub, а после этого перенести данные изменения на сервер (secondMachine):
- git checkout -b level-1 создаю ветку level-1 и перехожу в нее
- Делаю изменение в файле README.md - добавляю строку "new string in firstMachine" и сохраняю изменения:
- git add README.md
- git commit -m "created commit in firstMachine"
Тут начинаются проблемы... Далее мне нужно решить две задачи:
- Чтобы ветка level-1 отобразилась в gitHub/gitRepoTest c изменениями, которые я зафиксировал. Я сумел выполнить это командой:
- git push -u https://github.com/user/gitRepoTest.git level-1 в итоге ветка level-1 отобразилась в gitHub.
2. Вторая задача - мне нужно правильно отправить изменения из gitHub/gitRepoTest на secondMachine.
При этом дальнейшее взаимодействие такое - я что-то правлю на firstMachine, отправляю в gitHub и оттуда на secondMachine. Вот с этим пока загвоздка
Ответы (2 шт):
- Первый пункт без изменений
- Просто клонируете репозиторий, для этого на обоих компах выполняете:
git clone https://github.com/user/repo.git. Дополнительно прописывать remote, делать checkout на главную ветку после этого не нужно, это происходит автоматически при клонировании - Делаете изменения как вы описали (создание ветки, редактирование,
git add ...,git commit), потом отправляете изменения в репозиторий на github командойgit pushбез всяких дополнительных параметров (если вы уже находитесь в нужной ветке, то ее имя при пуше указывать не нужно). Если ветка с таким именем еще не пушилась, нужно выполнить командуgit push -u origin имя_ветки. - На втором компе делаете
git pull(подтянутся изменения той ветки, в которой вы находитесь) илиgit pull origin имя_ветки- если ветки в репозитории на этом компе еще нет. Вместо origin пишите название вашего remote, если он у вас назван как-то по-другому (например, у вас в вопросе это sn).
Итак, не уверен, что это верно по кол-ву кода, но это сработало... на secondMachine я так же инициализировал репо, добавил удаленный репо, в котором уже была ветка level-1. Далее я перешел в эту ветку:
$ git init
$ git remote add serv https://github.com/user/gitRepoTest.git
$ git fetch serv
$ git checkout level-1
Вобщем - все. На secondMachine отобразились изменения, сделанные на firstMachine.
Теперь любые изменения на firstMachine сохраняются и пушатся git push в ветку level-1, а на secondMachine их так же легко забрать git pull