Git push / clone до нового сервера


127

Я просто вивчаю Git, і я щось не можу розробити. Після створення та використання сховища git локально на моєму Mac, чи можу я переслати копію на інший сервер десь ще? Я за брандмауером, тому, на жаль, не можу бігати git cloneз іншої машини.

Відповіді:


137
  1. git remote add назва URL
  2. git push назва гілки

Приклад:

git remote add origin git@github.com:foo/bar.git
git push origin master

Див. Документи для git push- ви можете встановити віддалений як віддалений за замовчуванням для даної гілки; якщо ви цього не зробите, ім'я originособливе. Просто git pushодні будуть робити те ж саме , як git push origin thisbranch (для будь-якої гілки ви перебуваєте).


7
Для більш детального ефекту як "клонування натискання", а не просто pushinh _branch_ : git push -u --allми можемо опустити, originоскільки це ім'я для натискання за замовчуванням, а -uтакож буде відслідковувати віддалені гілки.
Крегокс

13
Цього має бути достатньо, щоб створити порожній голий сховище на сервері за допомогою, git init --bare /foo/bar.gitа потім натиснути місцеве місце (наприклад, у цій відповіді). Вам не потрібно нічого переносити за допомогою zip / tared на сервер.
OderWat

1
Відправлення OderWat. Наприклад, зробіть "git init --bare foo / bar.git" під час входу в пульт (тобто git@github.com), тоді "віддалене походження" матиме призначення, на яке слід ввести. Для прикладу github, я думаю, ви могли б використовувати веб-інтерфейс сховища / Додати github, а потім дотримуватися поради "Натисніть на наявний сховище з командного рядка", який він надає. Github радить "-u", щоб викликати відслідковування відстеження.
Дейв Х

Цей метод може бути канонічним, але він тупий і робить git менш корисним. Мені подобається деякий git, але в хороших небес це є деякі проблеми з інтерфейсом ..
Росс Роджерс

Я взяв на себе сміливість видалити абзац "EDIT", який було додано до оригінального запитання, що дозволило зробити цю процедуру сумнівною. Я не думаю, що це так, і, мабуть, це був коментар, а не питання редагування в будь-якому випадку.
Серпень Ліллеас

75

Що ви, можливо, захочете зробити - це спочатку на своїй локальній машині зробити голий клон сховища

git clone --bare /path/to/repo /path/to/bare/repo.git  # don't forget the .git!

Тепер архівуйте новий каталог repo.git, використовуючи tar / gzip або будь-який ваш улюблений інструмент архівування, а потім скопіюйте архів на сервер.

Скасуйте репо на своєму сервері. Потім вам потрібно буде встановити пульт дистанційного керування у вашому локальному сховищі:

git remote add repo-name user@host:/path/to/repo.git #this assumes you're using SSH

Тоді ви зможете підштовхнути та витягнути з віддаленого репо за допомогою:

git push repo-name branch-name
git pull repo-name branch-name

4
Чи можете ви пояснити коментар "не забувай .git!"? Де сенс додавання .git до кінця папки? Коли я повинен це зробити? Конвенція лише?
мастило

5
".Git" - це лише неофіційний стандарт для виявлення голого репо-гіта
Грант Лімберг,

3
Я не дотримуюсь цієї ідеї ... це не порушує цілі налаштування сервера git і насправді використовувати його для «передачі / копіювати / тримати речі в синхронізації / резервного копіювання» , а не стиснути і з допомогою якої - то інший спосіб?
Крегокс

1
Це саме те, що мені було потрібно, тому що оригінальний репо був у мережі, яка не мала доступу до мережі, на якій існував сервер, на який я хотів натиснути. Це дозволило мені поставити репо на коробку, до якої був доступ.
michaeltwofish

3
@Cawas вам потрібно лише вручну зафіксувати / скопіювати / витягнути репо-файл. після цього все, що вам потрібно - це git push and pull.
запчастини

9

Існує багато способів переміщення сховищ навколо, git bundleце приємний спосіб, якщо у вас недостатня доступність в мережі. Оскільки сховище Git насправді є лише каталогом, наповненим файлами, ви можете "клонувати" сховище, зробивши копію .gitкаталогу будь-яким способом, який вам найбільше підходить.

Найефективніший спосіб - десь використовувати зовнішній сховище (використовувати GitHub або налаштувати Gitosis ), а потім git push.


7
remote server> cd /home/ec2-user
remote server> git init --bare --shared  test
add ssh pub key to remote server
local> git remote add aws ssh://ec2-user@<hostorip>:/home/ec2-user/dev/test
local> git push aws master

Мені подобається простота вашої відповіді, але я не впевнений, це те, що мені потрібно чи ні. У мене на GitHub є існуюче репортаж GIT, і тепер я хочу натиснути на живі файли наш сервер Ubuntu (на якому встановлений GIT). Чи можете ви додати коментарі, щоб зробити процес зрозумілішим?
Дейв Еверітт

1

Ви можете натиснути гілку на віддалений сервер, скажімо, github . Спершу потрібно виконати початкову настройку проекту, потім клонувати проект і:

git push <remote repo> <your branch>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.