Команда git clone windows не работает

Trying to access private corporate tfs. They gave me access by giving appropriate rights to windows user (domainlogin). I'm fine with accessing web interface of tfs, browse repository and stuff. ...

Trying to access private corporate tfs.
They gave me access by giving appropriate rights to windows user (domainlogin).

I’m fine with accessing web interface of tfs, browse repository and stuff.

But when I try to run

 git clone https://tfs.somehostname.com/tfs/somefolder/_git/therepository

It fails with

Cloning into 'therepository'...

fatal: Authentication failed for 'https://tfs.somehostname.com/tfs/somefolder/_git/therepository/'

Tried with home pc without corporate network stuff — same error.

Tried in PowerShell, Git Bash, Clone via VisualStudio — same error.

SSH is closed (gave request timeout).

Web & Git both ask for credentials once (tried deleting in Credentials Manager — asks again, after submitting web is fine, git fails)

Corporate helper tried to help, but all he gave is tfs logs.
He says, my username doesn’t come with requests (tracked by syncing my attempts timestamps with logs).

2018-07-19 07:04:00 SOMEIP GET /tfs/SOMEFOLDER/_git/REPOSITORY/info/refs service=git-upload-pack 443 - ANOTHERIP git/2.12.2+(Microsoft+Windows+NT+6.3.9600.0;+Win32NT+x64)+CLR/4.0.30319+VS15/15.0.0 - 401 2 5 62
2018-07-19 07:23:00 SOMEIP GET /tfs/SOMEFOLDER/_git/REPOSITORY/info/refs service=git-upload-pack 443 - ANOTHERIP git/2.18.0.windows.1 - 401 2 5 62
2018-07-19 07:23:00 SOMEIP GET /tfs/SOMEFOLDER/_git/REPOSITORY/info/refs service=git-upload-pack 443 - ANOTHERIP git/2.18.0.windows.1 - 401 1 3221225581 187

while others include it

2018-07-19 05:44:27 SOMEIP GET /tfs/SOMEFOLDER/_git/REPOSITORY/info/refs service=git-upload-pack 443 DOMAINLOGIN ANOTHERIP git/2.12.2+(Microsoft+Windows+NT+6.1.7601+Service+Pack+1;+Win32NT+x64)+CLR/4.0.30319+VS15/15.0.0 - 200 0 0 265

HTTPS cloning errors

There are a few common errors when using HTTPS with Git. These errors usually indicate you have an old version of Git, or you don’t have access to the repository.

Here’s an example of an HTTPS error you might receive:

> error: The requested URL returned error: 401 while accessing
> https://github.com/USER/REPO.git/info/refs?service=git-receive-pack
> fatal: HTTP request failed
> Error: The requested URL returned error: 403 while accessing
> https://github.com/USER/REPO.git/info/refs
> fatal: HTTP request failed
> Error: https://github.com/USER/REPO.git/info/refs not found: did you run git
> update-server-info on the server?

Check your Git version

There’s no minimum Git version necessary to interact with GitHub, but we’ve found version 1.7.10 to be a comfortable stable version that’s available on many platforms. You can always download the latest version on the Git website.

Ensure the remote is correct

The repository you’re trying to fetch must exist on GitHub.com, and the URL is case-sensitive.

You can find the URL of the local repository by opening the command line and
typing git remote -v:

$ git remote -v
# View existing remotes
> origin  https://github.com/ghost/reactivecocoa.git (fetch)
> origin  https://github.com/ghost/reactivecocoa.git (push)

$ git remote set-url origin https://github.com/ghost/ReactiveCocoa.git
# Change the 'origin' remote's URL

$ git remote -v
# Verify new remote URL
> origin  https://github.com/ghost/ReactiveCocoa.git (fetch)
> origin  https://github.com/ghost/ReactiveCocoa.git (push)

Alternatively, you can change the URL through our
GitHub Desktop application.

Provide an access token

To access GitHub, you must authenticate with a personal access token instead of your password. For more information, see «Creating a personal access token.»

If you are accessing an organization that uses SAML SSO and you are using a personal access token (classic), you must also authorize your personal access token to access the organization before you authenticate. For more information, see «About authentication with SAML single sign-on» and «Authorizing a personal access token for use with SAML single sign-on.»

Check your permissions

When prompted for a username and password, make sure you use an account that has access to the repository.

Tip: If you don’t want to enter your credentials every time you interact with the remote repository, you can turn on credential caching. If you are already using credential caching, please make sure that your computer has the correct credentials cached. Incorrect or out of date credentials will cause authentication to fail.

Use SSH instead

If you’ve previously set up SSH keys, you can use the SSH clone URL instead of HTTPS. For more information, see «About remote repositories.»

Error: Repository not found

If you see this error when cloning a repository, it means that the repository does not exist or you do not have permission to access it. There are a few solutions to this error, depending on the cause.

Check your spelling

Typos happen, and repository names are case-sensitive. If you try to clone git@github.com:user/repo.git, but the repository is really named User/Repo you will receive this error.

To avoid this error, when cloning, always copy and paste the clone URL from the repository’s page. For more information, see «Cloning a repository.»

To update the remote on an existing repository, see «Managing remote repositories».

Checking your permissions

If you are trying to clone a private repository but do not have permission to view the repository, you will receive this error.

Make sure that you have access to the repository in one of these ways:

  • The owner of the repository
  • A collaborator on the repository
  • A member of a team that has access to the repository (if the repository belongs to an organization)

Check your SSH access

In rare circumstances, you may not have the proper SSH access to a repository.

You should ensure that the SSH key you are using is attached to your personal account on GitHub. You can check this by typing
the following into the command line:

$ ssh -T git@github.com
> Hi USERNAME! You've successfully authenticated, but GitHub does not
> provide shell access.

If the repository belongs to an organization and you’re using an SSH key generated by an OAuth App, OAuth App access may have been restricted by an organization owner. For more information, see «About OAuth App access restrictions.»

For more information, see Adding a new SSH key to your GitHub account.

Check that the repository really exists

If all else fails, make sure that the repository really exists on GitHub.com!
If you’re trying to push to a repository that doesn’t exist, you’ll get this error.

Error: Remote HEAD refers to nonexistent ref, unable to checkout

This error occurs if the default branch of a repository has been deleted on GitHub.com.

Detecting this error is simple; Git will warn you when you try to clone the repository:

$ git clone https://github.com/USER/REPO.git
# Clone a repo
> Cloning into 'repo'...
> remote: Counting objects: 66179, done.
> remote: Compressing objects: 100% (15587/15587), done.
> remote: Total 66179 (delta 46985), reused 65596 (delta 46402)
> Receiving objects: 100% (66179/66179), 51.66 MiB | 667 KiB/s, done.
> Resolving deltas: 100% (46985/46985), done.
> warning: remote HEAD refers to nonexistent ref, unable to checkout.

To fix the error, you’ll need to be an administrator of the repository on GitHub.com.
You’ll want to change the default branch of the repository.

After that, you can get a list of all the available branches from the command line:

$ git branch -a
# Lists ALL the branches
>   remotes/origin/awesome
>   remotes/origin/more-work
>   remotes/origin/new-main

Then, you can just switch to your new branch:

$ git checkout new-main
# Create and checkout a tracking branch
> Branch new-main set up to track remote branch new-main from origin.
> Switched to a new branch 'new-main'

Есть репозиторий в gitlab. Двухфакторная авторизация отключена, ssh не используется.
Команда git clone lalala.la:77/la/lala.git под linux приводит к успешному склонированию проекта, а под windows к ошибке

remote: HTTP Basic: Access denied
fatal: Authentication failed for ‘httр://lalala.la:77/la/lala.git’
git did not exit cleanly (exit code 128) (7219 ms @ 01.04.2017 21:59:07)

И под линуксом, и под виндой ввожу одни и те же логины и пароли, пробовал на трёх разных машинах и на двух разных пользователях.
В чем может быть проблема, куда смотреть?
Заранее спасибо за любую подсказку.

_______________________________
UPD
Не работает только если пользоваться стандартным окошком ввода логина и пароля, если при его появлении нажать на «отмена» и ввести логин и пароль в командной строке, то все срабатывает.

_______________________________
UPD РЕШЕНИЕ
Проблема все же на стороне tortorize git.
Решить можно так:
Нужно переустановить git на этот раз в процессе установки отключив
«enable git credential manager»
После этого нужно переустановить tortorise, в процессе выбрав credital helper : none
И все, больше проблем при выгрузке репозитория не возникнет.

Did you try to clone with the http address?

The is currently a ticket with msysgit (issue 136) with the same problem, for which the current workaround is to clone with the http rather than the git address.

Other moves to try:

  • GIT_TRACE=1 (and post the output)
  • try with other or older versions of msysgit
  • check for any firewall/antivirus issue on your main computer

Here switching to an older version of msysgit could be the right option:
See this GitHub support thread:

Are you using the 1.6.4 prerelease of msysGit? There are known bugs with it.
We recommend a stable version, such as 1.6.0.

thanks chris, that’s it: after switching back to the previous version of msysGit (Git-1.6.3.2-preview20090608.exe) the problem does not occur any more.


The problem might actually affect any Git1.6.4 and older:

git tries to check if the pack file exists by sending out a HEAD request, but chokes on the 500 error that some (if not all) github returns.

Using the repository used by the reporter:

$ curl http://github.com/grails/grails.git/objects/info/packs
P pack-1290e84bed53bda28f0989dca48d836bd9104031.pack
P pack-bf40d38ae780512994e5127e832ed9d8853c186d.pack
P pack-f490d5f7d4671368f4a52c618ca9dce13b714ba1.pack
P pack-79e3a7f30e8989acc8403ac688be669a05384eef.pack

$ curl -I http://github.com/grails/grails.git/objects/pack/pack-bf40d38ae780512994e5127e832ed9d8853c186d.pack
HTTP/1.1 500 Internal Server Error
Server: nginx/0.6.26
Date: Fri, 04 Sep 2009 13:50:20 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Content-Length: 3193
Cache-Control: no-cache

See this thread.
The GitHub support teams is currently investigating the problem:

I don’t think the 500s are intentional, but there may be something odd with our setup that is causing them.
I have a ticket open to investigate the issue further. I have a feeling we won’t be messing with this till after the move, since it’s likely something with the server config.


Git1.6.4.4 does contain a fix since September, 16th:

The workaround for Github server that sometimes gave 500 (Internal server error) response to HEAD requests in 1.6.4.3 introduced a regression that caused re-fetching projects over http to segfault in certain cases due to uninitialized pointer being freed.

But mssysgit has yet to release (September 21th) any new build since the original 1.6.4 late July. (They are probably waiting for 1.6.5 or 1.7)

Did you try to clone with the http address?

The is currently a ticket with msysgit (issue 136) with the same problem, for which the current workaround is to clone with the http rather than the git address.

Other moves to try:

  • GIT_TRACE=1 (and post the output)
  • try with other or older versions of msysgit
  • check for any firewall/antivirus issue on your main computer

Here switching to an older version of msysgit could be the right option:
See this GitHub support thread:

Are you using the 1.6.4 prerelease of msysGit? There are known bugs with it.
We recommend a stable version, such as 1.6.0.

thanks chris, that’s it: after switching back to the previous version of msysGit (Git-1.6.3.2-preview20090608.exe) the problem does not occur any more.


The problem might actually affect any Git1.6.4 and older:

git tries to check if the pack file exists by sending out a HEAD request, but chokes on the 500 error that some (if not all) github returns.

Using the repository used by the reporter:

$ curl http://github.com/grails/grails.git/objects/info/packs
P pack-1290e84bed53bda28f0989dca48d836bd9104031.pack
P pack-bf40d38ae780512994e5127e832ed9d8853c186d.pack
P pack-f490d5f7d4671368f4a52c618ca9dce13b714ba1.pack
P pack-79e3a7f30e8989acc8403ac688be669a05384eef.pack

$ curl -I http://github.com/grails/grails.git/objects/pack/pack-bf40d38ae780512994e5127e832ed9d8853c186d.pack
HTTP/1.1 500 Internal Server Error
Server: nginx/0.6.26
Date: Fri, 04 Sep 2009 13:50:20 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Content-Length: 3193
Cache-Control: no-cache

See this thread.
The GitHub support teams is currently investigating the problem:

I don’t think the 500s are intentional, but there may be something odd with our setup that is causing them.
I have a ticket open to investigate the issue further. I have a feeling we won’t be messing with this till after the move, since it’s likely something with the server config.


Git1.6.4.4 does contain a fix since September, 16th:

The workaround for Github server that sometimes gave 500 (Internal server error) response to HEAD requests in 1.6.4.3 introduced a regression that caused re-fetching projects over http to segfault in certain cases due to uninitialized pointer being freed.

But mssysgit has yet to release (September 21th) any new build since the original 1.6.4 late July. (They are probably waiting for 1.6.5 or 1.7)

Попытка использовать git clone команда. Насколько я понимаю (исправьте, если ошиблись), для размещения репозитория Git вам просто нужен компьютер, на котором запущен ssh, и проект / репозиторий, находящийся на нем в разрешенном месте.

У меня есть репозиторий git в системе OS X, в которой работает ssh. Я пытаюсь клонировать его в системе Windows XP. У меня на машине XP установлен Git Bash. В консоли Git bash (MINGW) я без проблем могу подключиться к Mac по ssh.

Однако, git clone терпит неудачу …

$ git clone username@host:~/project/path/contactdb
Initialized empty Git repository in 
  c:/Documents and Settings/Administrator/My Documents/projects/contactdb/.git/
bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly

Пробовал с и без .git расширение:

$ git clone username@host:~/project/path/contactdb

$ git clone username@host:~/project/path/contactdb.git

Нужно ли мне устанавливать на Mac что-нибудь еще?

9 ответы

Вам необходимо установить Git на машине, на которой есть репозиторий Git, который вы хотите клонировать; также git-upload-pack при выполнении ssh должен быть в $ PATH на удаленном компьютере. Вы получаете что-то вроде следующего ответа при прямом ssh-подключении к удаленному компьютеру:

$ ssh username@host git-upload-pack --help
usage: git upload-pack [--strict] [--timeout=nn] <dir>

или следующие (неправильно) отклик:

$ ssh username@host git-upload-pack --help
bash: git-upload-pack: command not found

(конечно, имя оболочки зависит от того, какая удаленная сторона использует).

Что также может быть проблемой (хотя, возможно, не в вашем случае), это неправильно настроенная удаленная машина, которая использует интерактивную оболочку для ssh-соединения, либо дает некоторые сообщения при подключении, либо устанавливает интерактивные переменные, такие как печально известная переменная среды $ CDPATH.

Создан 16 июн.

Я решил проблему, добавив следующую строку в мой файл ~ / .bashrc на удаленном компьютере:

export PATH=$PATH:"/usr/local/bin:/usr/local/git/bin"

Проблема заключалась в том, что $ PATH не включал / usr / local / git / bin для неинтерактивных сеансов. Добавление к ~ / .bashrc исправило эту проблему.

Создан 05 янв.

Другой способ:

git clone —upload-pack / путь / к / git-upload-pack ssh: // пользователь @ хост / ~ / проект / путь / contactdb

ответ дан 14 авг.

я использовал

git клонировать mysite.net:/путь/к/сайту

который сработал для меня.

Создан 02 июн.

У меня была такая же проблема с mac os, и я решил ее, скопировав git-upload-pack из / usr / local / git / bin в / bin.

ответ дан 26 авг.

У меня была такая же проблема, и, не удаляя просроченный сертификат, все печально, что он начал работать. Единственное, что я на этот раз сделал иначе, так это переключить Wi-Fi с подключенного к прокси-сети на мою частную мобильную точку доступа. Затем я запускаю команду ниже в Терминале

$ git clone https://my-login@bitbucket.org/project-folder/project-name.git

Затем он начал клонирование и запросил пароль ..

Cloning into 'project-name'...
Password for 'https://my-login@bitbucket.org':

Репозиторий загружен ..

remote: Counting objects: 2449, done.
remote: Compressing objects: 100% (1244/1244), done.
remote: Total 2449 (delta 1388), reused 1999 (delta 1070)
Receiving objects: 100% (2449/2449), 768.56 KiB | 101.00 KiB/s, done.
Resolving deltas: 100% (1388/1388), done.

Создан 01 ноя.

ответ дан 05 апр.

Для msysgit использование параметра -u для указания пути к git-upload-pack не работает, если путь включает пробелы, потому что кавычки (одинарные, двойные), похоже, не поддерживаются (1.7.11.msysgit.1). Добавление его в мой PATH сработало (C: Program Files (x86) Git libexec git-core). [Однако у меня возникли дополнительные проблемы с настройкой]

ответ дан 24 авг.

Все перепробовал, свои ключи, пути и версии инструментов проверил. Тем не менее, мне не удалось клонировать репо из github с помощью «git shell», «git gui» и «tortoise git».

Я скачал и установил «Инструменты Visual Studio для Git»(что требовало» VS2012 Update 2 CTP «) и смог клонировать репо изнутри Visual Studio:

  • Нажмите «Главное меню-> Вид-> Team Explorer».
  • Нажмите «Team Explorer-> Подключиться к групповым проектам».
  • Нажмите «Team Explorer-> Раздел локальных репозиториев Git-> Клонировать».
  • Введите URL-адрес репозитория Git для клонирования (желтое поле)
  • Введите или найдите локальную папку для клонирования в
  • Нажмите «Клонировать».

Через мгновение репо было клонировано. Я успешно клонировал полдюжины репозиториев таким образом, где msysgit, github и tortoisegit не работали должным образом.

ответ дан 30 мар ’13, в 22:03

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками

git

or задайте свой вопрос.

Задача: форкнуть репозиторий в GitHub, создать ветку и работать с кодом.

Сразу появляется много вопросов — что такое GitHub, какие для этого нужны команды, зачем, а главное, как всем этим пользоваться? Давайте разберёмся.


Когда мы пишем код, мы постоянно туда что-то добавляем, удаляем, и иногда всё может ломаться. Поэтому перед любыми изменениями стоит сделать копию проекта. Если собирать проекты в папки с именами проект1, проект1_финали проект2_доделка, вы быстро запутаетесь и точно что-нибудь потеряете. Поэтому для работы с кодом используют системы контроля версий.

Система контроля версий — программа, которая хранит разные версии одного документа, позволяет переключаться между ними, вносить и отслеживать изменения. Таких систем много и все они работают по принципу компьютерной игры, где вы можете вернуться к месту сохранения, если что-то пошло не так.

Git — самая популярная система контроля версий. С Git можно работать через командную строку (или терминал). В каждой системе своя встроенная программа для работы с командной строкой. В Windows это PowerShell или cmd, а в Linux или macOS — Terminal.

Вместо встроенных программ можно использовать любую другую — например, Git Bash в Windows или iTerm2 для macOS.

Как работает терминал: мы вводим команду и получаем ответ компьютера — или всё получилось, или где-то ошибка, или нужно ввести что-то ещё — например, пароль. Поэтому большая часть этой инструкции состоит из команд для терминала. Сначала будет непривычно, но вам понравится.

Но давайте по порядку — установим Git на компьютер.

Устанавливаем и настраиваем Git

Windows. Скачайте Git для Windows, запустите exe-файл, следуйте инструкциям.

macOS. Скачайте Git для macOS и запустите dmg-файл. Если он не запускается, зайдите в Системные настройки — Безопасность и нажмите кнопку Open anyway (Всё равно открыть).

Linux. Установите Git через встроенный менеджер пакетов. Если у вас Ubuntu, используйте команду sudo apt-get install git. Команды для других дистрибутивов можно посмотреть здесь.

Как проверить, что Git установился

Откройте терминал и введите команду

Если Git установлен, то вы увидите номер версии, например, 2.35.1.

➜  ~ git --version
git version 2.35.1
➜  ~

Настраиваем Git

Теперь нужно ввести имя и адрес электронной почты, чтобы ваши действия в Git были подписаны, а ещё для привязки к GitHub.

Добавить имя (введите его внутри кавычек):

git config --global user.name "ваше имя"

Добавить электронную почту (замените email@example. com на вашу почту):

git config --global user.email email@example.com

Опция --global значит, что имя и почта будут использоваться для всех ваших действий в Git. Если вы хотите менять эту информацию для разных проектов, то вводите эти же команды, только без опции --global.

Регистрируемся на GitHub

GitHub (или Гитхаб) — веб-сервис на основе Git, который помогает совместно разрабатывать IT-проекты. На Гитхабе разработчики публикуют свой и редактируют чужой код, комментируют проекты и следят за новостями других пользователей.

Профиль на Гитхабе и все проекты в нём — ваше публичное портфолио разработчика, поэтому нужно завести профиль, если у вас его ещё нет.

  1. Зайдите на сайт https://github. com и нажмите кнопку Sign up.
  2. Введите имя пользователя (понадобится в дальнейшей работе), адрес электронной почты (такой же, как при настройке Git) и пароль.
  3. На почту придёт код активации — введите на сайте.
  4. Появится окно с выбором тарифного плана. Если вы пользуетесь Гитхабом для учёбы, то укажите, что профиль нужен только для вас и вы студент.
  5. Опросы и выбор интересов можно пропустить.

На этом всё — вы зарегистрировались и у вас есть собственный профиль.

Устанавливаем SSH-ключи

Чтобы получить доступ к проектам на GitHub со своего компьютера и выполнять команды без постоянного ввода пароля, нужно, чтобы сервер вас узнавал. Для этого используются SSH-ключи.

SSH — протокол для безопасного соединения между компьютерами.

SSH-ключ состоит из двух частей — открытого и закрытого ключа. Открытый ключ мы отправляем на сервер. Его можно не прятать от всех и не переживать, что кто-то его украдёт, потому что без закрытого ключа он бесполезен. А вот закрытый ключ — секретная часть, доступ к нему должен быть только у вас. Это важно.

Мы будем подключаться к GitHub по SSH. Это работает так:

  1. Вы отправляете какую-то информацию на GitHub, который знает ваш открытый ключ.
  2. GitHub по открытому ключу понимает, что вы это вы, и отправляет что-то в ответ.
  3. Только вы можете расшифровать этот ответ, потому что только у вас есть подходящий закрытый ключ.

А чтобы подключиться к GitHub с помощью SSH-ключа, сначала нужно его создать.

Проверяем SSH-ключи

Перед созданием нового SSH-ключа проверим, есть ли на компьютере другие ключи. Обычно они лежат в папке с названием .ssh — поэтому посмотрим, есть ли в ней что-то, с помощью команды в терминале:

Если у вас уже есть SSH-ключ, то в списке будут файлы с именами вроде id_rsa.pub, id_ecdsa.pub или id_ed25519.pub. А если терминал ругается, что директории ~/.ssh не существует, значит, у вас нет SSH-ключей. Давайте это исправим.

Создаём новый SSH-ключ

Откройте терминал и скопируйте туда эту команду. Не забудьте подставить в кавычки почту, на которую вы регистрировались на Гитхабе.

ssh-keygen -t ed25519 -C "your_email@example.com"

ed25519 — это алгоритм для генерации ключей. Если ваша система не поддерживает алгоритм ed25519 (и вы увидели ошибку), используйте немного другую команду с алгоритмом rsa:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Терминал спросит, куда сохранить ключ. Если не хотите менять имя файла, которое предлагает терминал, просто нажмите Enter.

> Generating public/private имя-ключа key pair.
> Enter a file in which to save the key (/c/Users/ваш-профиль/.ssh/id_имя-ключа):*[Press enter]*

Теперь нужно добавить пароль, которым будет зашифрован ваш ключ. Это стоит сделать, иначе в дальнейшем могут быть проблемы с настройкой, да и так просто безопаснее.

В результате создаётся новый SSH-ключ, привязанный к вашей электронной почте.

Создание ключа по шагам:

ssh-explained.png

Добавляем SSH-ключ в ssh-agent

ssh-agent — программа для хранения и управления SSH-ключами. Давайте запустим её и добавим туда наш SSH-ключ. Запускаем командой eval "$(ssh-agent -s)":

Если в ответ терминал покажет надпись «Agent pid» и число — значит, всё ок, агент запущен.

Теперь добавим наш ключ командой.

ssh-add ~/.ssh/id_ed25519

Если у вашего ключа другое имя, замените название id_ed25519 именем файла с ключом (это правило применяется и дальше в инструкции). Если вы устанавливали пароль на ключ, введите его два раза после ввода команды ssh-add (терминал подскажет, когда это сделать).

Теперь, если всё хорошо, появится надпись Identity added — значит, можно переходить к добавлению ключа на GitHub.

Копируем SSH-ключ

Чтобы добавить ключ на GitHub, нужно сначала его скопировать из вашего файла командой clip. Вы не увидите ключ на экране, но он появится в буфере обмена, и его можно будет вставить на Гитхаб.

clip < ~/.ssh/id_ed25519.pub

Команда clip может не сработать на вашем компьютере, тогда есть два способа узнать ключ — простой и сложный.

Сложный способ. Найдите скрытую папку .ssh, откройте файл id_ed25519.pub в текстовом редакторе и скопируйте его содержимое.

Простой способ. Введите команду ниже и ключ появится прямо в терминале — его нужно вручную скопировать в буфер обмена. Ключ начинается с ssh-ed22519 или ssh-rsa (или похожей строки) — поэтому копируйте строку прямо с самого начала.

~ cat ~/.ssh/id_ed25519.pub

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO63MT6VCFuZtCLhLj1J6I7dgEU2BsRdIsnvnr4ax+Fr shklyar@htmlacademy.ru

Не копируйте этот ключ из статьи — он уже не работает.

Добавляем SSH-ключ на GitHub

Это нужно сделать, чтобы GitHub вас узнавал.

Перейдите на страницу для работы с ключами в вашем профиле на GitHub и нажмите кнопку New SSH key.

github_addnew.png

В поле Title нужно добавить название нового ключа. Например, если вы используете Mac, вы можете назвать ключ MacBook Air, или, если ключ для курсов Академии, то Academy. А ключ, который вы скопировали на прошлом шаге, вставьте в поле Key.

ssh-add-github.png

Не копируйте ключ со скриншота — он уже не работает.

Теперь нажмите кнопку Add SSH key и, если потребуется, введите свой пароль от GitHub, чтобы подтвердить сохранение. Если всё сделано верно, новый ключ появится в списке на странице https://github. com/settings/keys.

github-added-key.png

Теперь мы можем поработать с проектом в репозитории.

Что такое репозиторий

Репозиторий — папка с файлами вашего проекта на сервере GitHub. Так вы можете работать с проектом откуда угодно, не переживая, что какие-то файлы потеряются — все данные останутся в репозитории.

Если над проектом работает несколько программистов, сначала создаётся мастер-репозиторий — это общий репозиторий с рабочей версией проекта. А каждый программист работает с форком — то есть полной копией мастер-репозитория. В форке вы можете безнаказанно менять код и не бояться что-то сломать в основной версии проекта.

Делаем форк мастер-репозитория

Заходим в нужный репозиторий и нажимаем на «вилку» с надписью fork.

fork.png

Появится окно Create a new fork — проверьте, что он называется так, как вам нужно, и жмите кнопку Create fork. Через пару секунд всё готово.

fork-details.png

Клонируем форк на компьютер — git clone

Клонировать форк — значит скачать его, чтобы работать с кодом на своём компьютере. Тут нам и пригодится SSH.

Открываем терминал и переходим в папку с будущим проектом — для этого используем команду cd your-project. Если вы хотите, чтобы проект лежал в папке device, введите

Если такой папки на компьютере нет, то сначала введите md your-project, чтобы создать эту папку, а затем cd your-project. Подробнее о командах.

Когда перейдёте в папку, введите команду git clone для клонирования репозитория:

git clone git@github.com:your-nickname/your-project.git

Замените your-nickname на ваше имя пользователя на GitHub, а your-project — на название проекта. Проще всего их найти прямо наверху страницы репозитория.

Если вы правильно настроили SSH-ключи, Git скопирует репозиторий на ваш компьютер.

➜  device git clone git@github.com:academy-student/1173761-device-34.git
Клонирование в «1173761-device-34»…
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 15 (delta 0), reused 15 (delta 0), pack-reused 0
Получение объектов: 100% (15/15), 145.07 КиБ | 900.00 КиБ/с, готово.

Если вы видите ошибку Error: Permission denied (publickey), скорее всего, вы ошиблись в настройке SSH-ключа. Вернитесь в этот раздел инструкции и повторите процесс настройки.

Кстати, если вы хотите, чтобы название папки с проектом у вас на компьютере отличалось от имени репозитория, можете дополнить команду клонирования, добавив в конце другое название:

git clone git@github.com:_your-nickname_/_your-project_.git folder_name

Теперь на вашем компьютере в папке your_project или в той, название которой вы указали, находится полная копия репозитория c GitHub.

В каждом репозитории есть как минимум одна основная ветка, которую создаёт сам Git — она называется master. Обычно в ней хранят проверенную версию программы без ошибок.

А если вы хотите исправить ошибку в коде или добавить что-то в проект, но не хотите сломать код в основной ветке, нужно создать новую ветку из master и работать из неё. Каждая ветка — что-то вроде второстепенной дороги, которая затем снова соединится с основной.

Создаём новую ветку — git branch

Откройте терминал и введите команду

Она показывает список веток, с которыми мы работаем в проекте, и выделяет текущую. Если мы находимся в master , то создаём новую ветку командой

git checkout -b имя-новой-ветки.
➜  1173761-device-34 git:(master) git checkout -b task1
Переключено на новую ветку «task1»
➜  1173761-device-34 git:(task1)

Если текущая ветка не master, переключитесь на неё с помощью команды checkout. После git checkout надо указать название нужной ветки.

Мы делаем это, чтобы новая ветка содержала свежую рабочую версию проекта. Если вы ошиблись в названии, например, допустили опечатку, вы можете изменить название ветки с помощью команды:

git branch -m старое-имя-ветки новое-имя-ветки.

Сохраняем изменения — git add

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

Если вы хотите сохранить изменения не во всех файлах, для начала введите команду git status. Она покажет текущее состояние в вашей ветке, а именно список с названиями изменённых файлов, если они есть, и укажет на те, которые ожидают записи и сохранения (обычно они выделены красным цветом).

git-status.png

Чтобы сохранить все изменения разом, используйте команду

Чтобы сохранить изменения только отдельных файлов, укажите их имена вручную. Например, если вы изменили файл index.html, введите

Если название очень длинное, вы начните его писать, нажмите Tab и терминал сам предложит продолжение пути к файлу.

Делаем коммит — git commit

Сделать коммит — значит зафиксировать все сохранённые изменения и дать им название. Это делается с помощью команды commit

git commit -m "ваше сообщение"

Текст сообщения должен быть лаконичным и вместе с этим сообщать о том, что делает коммит (внесённые изменения). Например,

  • Добавляет имя наставника в Readme
  • Вводит функцию сортировки изображений
  • Правит ошибку в поиске городов на карте

git-commit.png

Отправляем изменения на GitHub — git push

Сохранённые изменения пока не видны коллегам, потому что находятся в нашем локальном репозитории. Нужно отправить коммиты на GitHub. Для этого введите команду

git push origin название-текущей-ветки

Где origin означает репозиторий на компьютере, то есть ваш форк. Слово origin — часть команды, не меняйте это название на своё.

git-push-origin.png

Создаём пулреквест

Пулреквест (или PR) — это предложение изменить код в репозитории. PR должен проверить администратор мастер-репозитория — это может быть коллега-разработчик, техлид или наставник на курсе.

Если к коду нет вопросов, пулреквест принимается. Если нужно что-то исправить — отклоняется, и придётся исправить код и снова пройти цепочку git addgit commitgit push. Если вы и дальше работаете в той же ветке, а пулреквест ещё не принят, все ваши изменения автоматически добавятся в пулреквест, созданный из этой ветки после команды git push origin название-текущей-ветки.

Чтобы создать пулреквест, зайдите на страницу вашего форка на GitHub. Вверху появилась плашка Compare & pull request, а ещё можно зайти на вкладку Pull Requests.

pr-offer.png

Нажмите на неё и окажетесь на странице открытия пулреквеста. Проверьте описание и нажмите Create pull request.

pr-stage2.png

Готово, теперь ждём остаётся ждать одобрения пулреквеста или комментариев к нему.

Синхронизируем репозитории

Предположим, вы исправили код, руководитель или наставник одобрил ваши правки и принял пулреквест.

pr-closed.png

Теперь код в мастер-репозитории обновился, а в вашем форке нет, вы ведь не обновляли свою версию репозитория с тех пор, как клонировали её себе на компьютер. Приведём форк в актуальное состояние.

В локальном репозитории переключаемся на ветку master.

Забираем изменения из ветки master мастер-репозитория

git pull git@github.com:academy-student/1173761-device-34.git master

Отправляем изменения уже из своей ветки master в ваш форк на GitHub с помощью команды

Готово, теперь форк и оригинальный репозиторий находятся в актуальном состоянии.

Словарик

Система контроля версий — программа, которая хранит разные версии одного документа, позволяет переключаться между ними, вносить и отслеживать изменения.

Git — самая популярная система контроля версий. С Git можно работать через терминал.

Как работает терминал: мы вводим команду и получаем ответ компьютера — или всё получилось, или где-то ошибка, или нужно ввести что-то ещё.

GitHub (или Гитхаб) — веб-сервис, основанный на Git, который помогает совместно разрабатывать IT-проекты. На Гитхабе разработчики публикуют свой и редактируют чужой код, комментируют проекты и следят за новостями других пользователей.

SSH-ключ нужен, чтобы получить доступ к проектам на GitHub со своего компьютера и выполнять команды без постоянного ввода пароля, нужно, чтобы сервер нас узнавал.

ssh-agent — программа для хранения и управления SSH-ключами.

Репозиторий — папка с файлами вашего проекта на сервере GitHub или у вас на компьютере.

Мастер-репозиторий  это общий для всей команды репозиторий с рабочей версией проекта.

Форк — полная копия мастер-репозитория, в которой вы можете безопасно работать.

Клонировать форк — скачать его командой git clone, чтобы работать с кодом на своём компьютере.

Пулреквест (или PR) — предложение изменить код в репозитории. PR должен проверить администратор мастер-репозитория — это может быть коллега-разработчик, техлид или наставник на курсе.

Другие материалы по Git

  • Введение в системы контроля версий
  • Шпаргалка по Git. Решение основных проблем
  • Полезные команды для работы с Git

Вопрос:

Я не могу клонировать репозиторий Git и получаю эту ошибку:

krishna.soni@KRISHNACHANDRAS /c/Projects $ git clone http://stage.abc.com:10088/pqr
http://<url>/<repository> Cloning into '<repository>'... fatal: could not read Username for 'http://<url>': No such file or directory

Я прочитал Bitbucket, Windows и “фатальный: не смог прочитать пароль для” , но все еще есть проблема.

Я продолжил, но теперь получаю эту ошибку

sh.exe": chown: command not found

krishna.soni@KRISHNACHANDRAS /c
$ git clone ssh://krishna.sonipayu.in@stage.payupaisa.
/projects
Cloning into 'C:/projects'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

> krishna.soni@KRISHNACHANDRAS /c
>     $ git clone ssh:<url>
>     ts
>     Cloning into 'C:/projects'...
>     Permission denied (publickey).
>     fatal: Could not read from remote repository.

Please make sure you have the correct access rights

и репозиторий существует.

Лучший ответ:

Это похоже на проблему с разрешениями, а не на проблему с Windows 7.

Ваш ssh-ключ не авторизовался – Permission denied (publickey).

Вам нужно создать общедоступный ключ ssh и попросить администратора репозитория Git добавить открытый ssh ключ

Информация о том, как это сделать: Не удалось сохранить ssh-ключ

Ответ №1

Для людей, которые приходят сюда, которые просто пытаются получить репозиторий, но не заботятся о протоколе (ssh/https), вы можете просто хотеть использовать https вместо ssh (если это поддерживается).

Итак, например, вы используете

git clone https://github.com/%REPOSITORYFOLDER%/%REPOSITORYNAME%.git

вместо

git clone git@github.com:%REPOSITORYFOLDER%/%REPOSITORYNAME%.git

Ответ №2

Если после создания SSH по-прежнему возникает проблема, добавив его в свою учетную запись Bitbucket или где угодно, вам нужно сделать следующее на GitBash, OSX или Linux:

ssh-add -l

Затем, если вы не видите свой список, добавьте его с помощью

ssh-add ~/.ssh/identity

Это сработало для меня.

Ответ №3

Ответ №4

Я также столкнулся с той же проблемой. Я сделал следующее, и это сработало для меня:

  • Генерировать ключи от клиента GIT GUI в Windows. Скопируйте этот ключ в буфер обмена.
  • Откройте свою учетную запись на веб-сайте bitBucket/ GIT и добавьте этот ключ в свой профиль. Таким образом, сервер знает, что вы являетесь законным пользователем, получающим доступ из законной системы.
  • Что это. Все push команды работали для меня впредь.

Ответ №5

У меня была эта проблема на Mac – пока я правильно настроил SSH для доступа к моему репозиторию Git после перезапуска (и некоторое время, когда Mac находился в противостоянии), все мои учетные данные были удалены. По-видимому, по какой-то причине ключ pub был установлен в 644, что заставило его удалить из брелка. Для чтения:

  • chmod 600 открытый ключ
  • ssh-add ~/.ssh/[your private key] – это должно показать, что личность была добавлена. Ключевым файлом, который вы хотите, является тот, который не имеет расширения .pub.
  • ssh-add -l должен показать вам добавленную идентификацию

edit: очевидно, у MacOS есть тенденция к удалению ключей – после загрузки обновления High Sierra (но я еще не установил его) мой ключ был удален, и мне пришлось добавить его снова через ssh-add

Ответ №6

Github (или Bitbucket) не может найти ваш ssh-ключ на своем сервере.

Просто добавьте свой ключ в настройку своей учетной записи.

Ответ №7

Для меня, когда я захотел clone из моего репозитория, у меня было такое же сообщение, что и до того, как “Permission denied (publickey) фатальный: не удалось прочитать из удаленного репозитория”. Решение для моего случая не использовать sudo до clone Что это.

Ответ №8

Я получил ошибку…

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

… когда я пытался связаться с приглашением Git Bash для Bitbucket после того, как мой ноутбук умер от плохого обновления Windows 10 и был возвращен в настройки factory. Я восстановил все мои файлы ssh из резервной копии.

Причиной ошибки оказалось несоответствие имени моей учетной записи Windows после восстановления компьютера. Я узнал, что файл открытого ключа id_rsa.pub заканчивается легко читаемой строкой, содержащей мое имя учетной записи Windows, за которой следует знак @, а затем имя компьютера.

Когда я изначально настроил свой компьютер, я создал свое имя учетной записи Windows, включая мой средний начальный, но когда мой компьютер был reset до factory, наш новый парень DevOps создал мое имя учетной записи без моего среднего начального значения.

Чтобы решить эту проблему, я просто отредактировал файл открытого ключа id_rsa.pub и удалил вначале начальный номер моего имени. Я застрял с тем же именем компьютера, так что все в порядке. Я скопировал содержимое файла в буфер обмена Windows. Затем я подписал контракт с Bitbucket, отправился в настройки Bitbucket под моим аватаром и добавил новый открытый ключ, в который я вставлял новое содержимое.

В приглашении Git Bash я подтвердил, что теперь он работает, введя команду…

ssh -T git@bitbucket.org

… и я получил сообщение, в котором я был.

Ответ №9

Если вы создаете новый открытый ключ ssh и вставляете его в битбакет или github и

это не помогло – попробуйте перезагрузить компьютер. Это помогло мне!

Ответ №10

Вам нужно создать новый ssh-ключ, запустив ssh-keygen -t rsa.

Ответ №11

Я столкнулся с такой же проблемой при запуске команды git clone из командной строки Windows. Но команда успешно выполняется с Git Bash.

Ответ №12

В macOS/Linux (Ubuntu):

1. Для аутентификации вам нужно добавить вашу публичную часть вашей пары ключей SSH в bitbucket из ваших пользовательских настроек: Настройки пользователя → Ключи SSH

Вы найдете указанную публичную часть в вашем каталоге ~/.ssh, обычно это id_rsa.pub. обратите внимание на .pub часть имени файла для Public. это поможет вам сгенерировать один, если у вас его еще нет

Вы еще не закончили…

2. Вам нужно сообщить вашей системе, какой ключ использовать с каким удаленным хостом, поэтому добавьте эти строки в ваш файл ~/.ssh/config.

Host bitbucket.org
IdentityFile ~/.ssh/PRIVATE_KEY_FILE_NAME

Где PRIVATE_KEY_FILE_NAME – это имя частной части вашей пары ключей SSH, если вы не перепутали его, обычно его имя по умолчанию: id_rsa в этом случае замените PRIVATE_KEY_FILE_NAME выше на id_rsa (закрытый ключ НЕ имеет расширение .pub)

Ответ №13

Если все не удается, как и в случае со мной, удалите GIT, переустановите. По какой-то причине это исправление.

P.S.

  • Я пробовал создавать новые ключи и обновления на открытых ключах SSH
  • Также попытался удалить все ключи и попытался создать новый ключ.
  • И ничего, ничего плохого в моем .gitconfig

Ответ №14

Во время клонирования у меня была аналогичная проблема [моя ОШИБКА:  Разрешение отклонено (publickey).  fatal: Не удалось прочитать из удаленного репозитория.  Убедитесь, что у вас есть правильные права доступа.. и т.д.
]

– Я использовал bitBucket/UBUNTU14.04 в моем случае, но ALREADY имел набор файлов ключей, которые я ранее создал И я изменил имя файлов. Я просто COPIED файлы в стандартный формат id_rsa и id_rsa.pub. Затем я повторно запустил команду без проблем.

OBTW: я мог бы также использовать запрос пароля с помощью клонирования HTTP-стиля.

Ответ №15

Полезная тема, и я не принесу много нового на стол. Шаг, который я предпринял, также является частью описания, на которое Максим услужливо указывает, но некоторые могут его не заметить. Раздел Добавление вашего SSH-ключа в ssh-agent.

Я уже сгенерировал свой ssh-ключ, но после перезагрузки я не смог клонировать один из моих собственных репозиториев.

Мне пришлось запустить ssh-agent и добавить к этому агенту закрытый ключ для клонирования.

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

Ответ №16

У меня была похожая проблема. Я изменил ключи SSH и перезапустил и попробовал все другие решения ‘n’. Но реальная проблема для меня заключалась в том, что наш протокол gitlab по умолчанию был изменен с ssh на https.

проверьте удаленный URL с

git remote -v

изменить удаленный URL

git remote set-url origin https://URL

Ответ №17

У меня была аналогичная проблема с linux. Я решил проблему, войдя в сервер github и создав ключ развертывания. Это в настройках для репозитория. Затем я скопировал и вставил свой открытый ключ (который обычно находится в папке ~/.ssh/id_rsa.pub, но ваша конфигурация может отличаться). Существует флажок, чтобы предоставить доступ к этой записи. Нажмите на него (если вы не используете git только для развертывания, и в этом случае не нажимайте на него).

Ответ №18

если кого-то интересует здесь:

У меня была та же проблема, и я использовал ssh, а не https. как сказал @arjan

который не работал снова!
однако, я отсутствовал git add .
поэтому, чтобы показать все:

сначала убедитесь, что вы удалили любую предыдущую скрытую папку или файл .git:
Я использую mac…

  rm -rf .git

затем выполните команды git:

git init
git add .
git commit -m "my new commit"
git remote remote add origin https://github.com/yourusername/yourrepo.git
git push -u origin master

просто убедитесь, что вы находитесь в той же папке локальной ветки, которую хотите нажать.

Ответ №19

У меня была такая же ошибка. Мое решение состояло в том, чтобы выйти из системы и войти снова, поскольку мой ssh-agent не синхронизирован с удаленным ключом ssh.

Добавление этого здесь на случай, если кто-то видел, что другие ответы, кажется, не относятся к их ситуации.

Ответ №20

Я столкнулся с той же проблемой при настройке ssh для gitlab. У меня уже есть ssh для github и я не могу перезаписать это. Шаги, которые помогли мне:

  1. Сгенерируйте SSH с новым путем и добавьте его в список ssh-add/path/to/new/id_rsa.
  2. Создайте файл с именем config в ~/.ssh/ using. Я использовал vi ~/.ssh/config/.
  3. Добавьте это во вновь созданный файл

# GitLab.com server Host gitlab.com RSAAuthentication yes IdentityFile/path/to/new/id_rsa

  1. Сохранить и выйти.

После этого перезапустите терминал и попробуйте нажать, он должен работать

Ответ №21

Если вы хотите клонировать проекты с открытым исходным кодом для отправки запроса на извлечение:

Я хотел клонировать проект с открытым исходным кодом, чтобы я мог отправить несколько запросов на извлечение. Проблема была в том, что у меня не было разрешений от владельца проекта. Неважно, так как мое намерение состояло в том, чтобы представить PR, вот жизнеспособная альтернатива:

Мое решение:

  1. Fork Repository

Fork Repo

  1. Затем клонируйте из вашего разветвленного хранилища. Clone from forked Repo

  2. Поработайте над своими функциями, а затем отправьте запрос на извлечение.

Ответ №22

исправить для инструмента hub Cli:

  • git config --global hub.protocol https на длительный срок
  • git remote add OOPS https://github.com/isomorphisms/go.git && git push OOPS для немедленного исправления

Эта ошибка возникает в средстве командной строки hub из-за неправильного значения по умолчанию hub.protocol git-config. Они устанавливают репо на

git://github.com/schacon/ticgit.git

вместо того, что на самом деле принимает github, а именно https://github.com/schacon/ticgit.git.


Чтение LESS=+/"HTTPS instead" man hub объяснит, откуда LESS=+/"HTTPS instead" man hub указанная выше команда “долгосрочного исправления”.

Ответ №23

Это может быть глупо, но это случилось с нами:

Если вы используете bitbucket и Sourcetree, и вы просто скопируете вставку клона в новый диалог репо, он будет показывать ту же ошибку при нажатии или нажатии.

Перед URL-адресом убедитесь, что вы удалили материал git clone ‘.

Like this post? Please share to your friends:
  • Команда ftp в командной строке windows
  • Кодировка utf 8 в windows 1251 онлайн
  • Команда for в командной строке windows
  • Кодировка microsoft windows обозначается как ср1251
  • Команда find в командной строке windows