У меня есть проект, в котором я создал Git-репозиторий:
$ cd myproject
$ git init
$ git add .
$ git commit
Я хотел создать голого клона на другой машине:
$ cd ..
$ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git
Я выполнил клон, но не напечатал никакого ответа. Я вошел на сервер и попытался посмотреть, как хранятся файлы. Путь / GitRepos был пуст, поэтому я решил снова сделать клон:
$ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git
На этот раз ответ был:
fatal: путь назначения 'ssh: // user @ server: /GitRepos/myproject.git' уже существует и не является пустым каталогом.
Но я видел, что путь был пуст.
Что тут происходит ?
git clone --bare
будет делать то, что вы думаете, он будет делать.Ответы:
Возможно, это не связано непосредственно с вопросом; но одна ошибка, которую я только что сделал сам и вижу в OP, - это спецификация URL,
ssh://user@server:/GitRepos/myproject.git
а именно, у вас есть двоеточие:
и косая черта/
после него, обозначающие абсолютный путь.Затем я нашел клон Git, ssh: не удалось разрешить имя хоста - git, разработка - Николаса Каттлера (поскольку это была ошибка, которую я получал, в
git
версии 1.7.9.5), отметив:... которая была также моей проблемой! Так что в основном
git
сssh
, вы либо использованияssh://username@host.xz/absolute/path/to/repo.git/
- просто косая черта для абсолютного пути на сервереusername@host.xz:relative/path/to/repo.git/
- просто двоеточие (у него не должно бытьssh://
относительного пути на сервере (относительно домашнего каталогаusername
на сервере)Надеюсь, это поможет кому-то,
ура!
источник
ssh://
префикс. Я просто потратил 20 минут, чтобы понять это.git clone username@host.xz:relative/path/to/repo.git/
должно сработать.Для репозиториев на GitHub попробуйте:
Для настройки git для клонирования через ssh смотрите:
Генерация ключей SSH и добавьте сгенерированный ключ в Настройки аккаунта -> Ключи SSH
Клонирование по SSH
источник
Вам нужно выполнить команду clone на том, что вы называете сервером. Но держу пари, что вы не используете ssh-сервер на локальном клиенте, так что он все равно не будет работать. Предложите вам следовать этому подходу (проверьте руководство, потому что я делаю это по памяти)
git init --bare
git remote add origin ssh://user@server:/GitRepos/myproject.git
с последующимgit push origin master
источник
Отказ от ответственности: это всего лишь копия комментария от bobbaluba, сделанного более заметным для будущих посетителей. Это помогло мне больше, чем любой другой ответ.
Вы должны отбросить
ssh://
префикс при использованииgit clone
в качестве примераисточник
попробуй это.
Шаг 1:
Шаг 2:
(используя клавишу ввода для значения по умолчанию) Шаг 3: Для настройки файла конфигурации
Шаг 4:
Шаг 5:
Когда вы закончите Шаг 4
1. Будет загружен файл test2.git 2. Вы
получите новый файл (known_hosts) в ~ / .ssh
PS: я сам создаю id_rsa и id_rsa.ub и доставляю его на сервер Gitlab. используя оба ключа на любой стороне клиента (Windows и Linux).
источник
Git 101:
git
является децентрализованной системой контроля версий Вам не нужен сервер, чтобы начать работу с git. Тем не менее, вы можете захотеть сделать это, как это круто выглядит, верно? (Это также полезно, если вы хотите работать над одним проектом с нескольких компьютеров.)Таким образом, чтобы запустить «сервер», вам нужно запустить, так
git init --bare <your_project>.git
как это создаст пустой репозиторий, который вы можете затем импортировать на свои машины без необходимости копаться в файлах конфигурации в вашем.git
директории.После этого вы можете клонировать репо на своих клиентах, как это должно работать, но я обнаружил, что некоторые клиенты (а именно
git-gui
) не смогут клонировать репо, которое полностью пусто. Чтобы обойти это нужно запуститьcd <your_project>.git && touch <some_random_file> && git add <some_random_file> && git commit && git push origin master
. (Обратите внимание, что вам может потребоваться настроить имя пользователя и адрес электронной почты для git этой машины, если вы этого не делали в прошлом. Фактические команды для запуска будут в сообщении об ошибке, которое вы получите, поэтому я просто опущу их.)Таким образом, на данный момент вы можете клонировать хранилище на любой машине, просто запустив
git clone <user>@<server>:<relative_path><your_project>.git
. (Как уже отмечали другие, вам может понадобиться добавить к нему префикс,ssh://
если вы используете абсолютный путь.) Это предполагает, что вы уже можете войти с вашего клиента на сервер. (Вы также получите бонусные баллы за настройку конфигурационного файла и ключейssh
, если вы намерены перенести много вещей на удаленный сервер.)Некоторые соответствующие ссылки:
Это в значительной степени говорит вам, что вам нужно знать.
И это для тех, кто знает основные принципы работы git, но иногда забывает точный синтаксис.
источник
Я хочу попробовать ответ, который включает в себя git-flow и три «точки» или сценарии использования, центральный репозиторий git, локальную разработку и рабочую машину. Это не очень хорошо проверено .
Я даю невероятно конкретные команды. Вместо того чтобы говорить
<your folder>
, я скажу/root/git
. Единственное место, где я меняю исходную команду - это замена моего конкретного имени сервера наexample.com
. Я объясню назначение папок, чтобы вы могли настроить его соответствующим образом. Пожалуйста, дайте мне знать о любой путанице, и я обновлю ответ.Версия git на сервере 1.7.1. Сервер CentOS 6.3 (Final).
Версия git на компьютере разработчика - 1.8.1.1. Это Mac OS X 10.8.4.
Центральный репозиторий и производственная машина находятся на одной машине.
Центральный репозиторий, который пользователи svn могут относить как «сервер», настроен следующим образом. У меня есть папка, в
/root/git
которой я храню все свои репозитории git. Я хочу создать git-репозиторий для проекта, который я называю 'flowers'.Команда git выдала два сообщения:
Не о чем беспокоиться.
На разработке машина настроена следующим образом. У меня есть папка, в которую
/home/kinjal/Sites
я положил все свои проекты. Теперь я хочу получить центральное хранилище git.Это подводит меня к точке, где я могу начать добавлять вещи к нему. Я сначала настроил git flow
По умолчанию это на ветке
develop
. Я добавляю свой код здесь, сейчас. Затем мне нужно зафиксировать в центральном репозитории git.На данный момент это подтолкнуло к разработке ветвь. Я хочу также добавить это в основную ветку.
Обратите внимание, что я ничего не делал между началом и окончанием выпуска. И когда я закончил выпуск, мне предложили отредактировать два файла. Это подтолкнуло развивающуюся ветку к освоению.
На производственном сайте, который находится на той же машине, что и мой центральный git-репозиторий, я хочу поместить репозиторий в
/var/www/vhosts/example.net
. У меня уже есть/var/www/vhosts
.Если производственный компьютер также будет находиться на другом компьютере,
git clone
команда будет выглядеть так же, как и на компьютере разработчика.источник
Вначале мне немного не хватает навыков в GIT.
Это клонирует пустой репозиторий на вашем компьютере, который содержит только папки, внутри
.git
которых находится скрытый каталог. выполнить,ls -al
и вы должны увидеть.git
илиcd .git
внутри вашего хранилища.Можете ли вы добавить описание своего намерения, чтобы кто-то с большими навыками GIT мог помочь? Что вы действительно хотите делать, а не как вы планируете это делать?
источник
Я сделал: git clone --bare "/ GITREPOSITORIES / RepoA" "ssh: // luc @ EERSTENASDS119J / volume1 / RepoA" Результат: fatal: путь назначения 'ssh: // luc @ EERSTENASDS119J / volume1 / RepoA' уже существует и существует не пустой каталог.
Система создала каталог ssh: // luc @ EERSTENASDS119J / volume1 / RepoA в моем текущем пути.
Так что git clone не интерпретировал спецификацию URL. Использовал обходной путь Алек.
источник
git clone git @ server: пример / proyect.git
источник