Страницы

Поиск по вопросам

четверг, 20 декабря 2018 г.

Git и GitHub на windows от новичка (часть 2)

Что такое публичный и приватный ssh-ключ? Эта пара ключей для одного пользователя? Если так, то для каждого пользователя я должен в настройки GitHub-а сохранить его публичный ключ? Или достаточно одного публичного ключа для всех? Зачем нужен пароль (passphrase) для соединения по ssh к репозиторию на GitHub? Этот пароль нужен только для доступа к паре ssh ключей, которые хранятся в папке ~/.ssh (имя_пользователя/.shh)? Или этот пароль так же знает репозиторий на GitHub? Пара ключей ssh хранится в папке пользователя на винде. Если я захочу присоединиться к другому репозиторию по ssh, то значит мне надо будет изменить эту пару ssh ключей? Если удалить ветку, то удаляться и все его коммиты? Хотя если подумать, то ветка это всего лишь указатель на коммит, значит удалится этот указатель, а не сами коммиты. Так? Я уже запутался с этими командами перехода_на_коммит/изменения_коммита/удаления_коммитов и т. п. Какие именно команды удаляют коммиты навсегда, а не просто из виду убирают? reset (soft/hard)? revert? еще что-нибудь? Как сделать так, чтобы перестало просить пароль при использовании ssh соединения? Например, когда использую git push или git fetch MS Visual Studio 2010 создал файл main.cpp. При попытки его (и другие файлы с кодом от MS VS) индексировать выводится ошибка:
Fatal: CRLF would be replaced by LF in main.cpp.
Искал в гугле и что-то было про это, но как решить эту проблему я не понял.


Ответ

1) Что такое публичный и приватный ssh-ключ? Сгенерированная пара текстов позволяющих шифровать и расшифровывать данные. Также можно использовать как идентификатор пользователя (правда длинный). Эта пара ключей для одного пользователя? Да. Один пользователь может иметь много ключей. (Один для рабочего компа, один для ноута, ...) Если так, то для каждого пользователя я должен в настройки GitHub'а сохранить его публичный ключ? Или достаточно одного публичного ключа для всех? Насколько мне известно github не позволяет использовать один и тот же ключ в нескольких аккаунтах. Придётся генерировать пару для каждого аккаунта. 2) Зачем нужен пароль(passphrase) для соединения по ssh к репозиторию на GitHub? Чтобы повысить уровень защиты. Оберегает доступ в случае кражи приватного ключа. Этот пароль нужен только для доступа к паре ssh ключей, которые хранятся в папке ~/.ssh(имя_пользователя/.shh)? Или этот пароль так же знает репозиторий на GitHub? Этот пароль никакого отношения к github не имеет, только к ключу. Указывается в момент генерации ключа. 3)Пара ключей ssh хранится в папке пользователя на винде. Если я захочу присоединиться к другому репозиторию по ssh, то значит мне надо будет изменить эту пару ssh ключей? Нет. Ключи используются для доступа к серверу с определённого компьютера. Можно сгенерировать пару, и использовать её для доступа к github, bitbucket, какие-то свои сервера. Ну и добавив ключ в настройках аккаунта вы пользуетесь им для работы со всеми репозиториями которые предоставляет сервис. 4) Если удалить ветку, то удаляться и все его коммиты? Хотя если подумать, то ветка это всего лишь указатель на коммит, значит удалится этот указатель, а не сами коммиты. Так? Не знаю точно. По идее не должны, однако в git используется процедура сжатия, во время которой они могут быть удалены. На SO рекомендуют добавлять тег для ветки (для последнего коммита) и удалять её, тогда коммиты останутся и ветка не будет мозолить глаза. 5)Я уже запутался с этими командами перехода_на_коммит/изменения_коммита/удаления_коммитов и т.п. Какие именно команды удаляют коммиты навсегда, а не просто из виду убирают? reset(soft/hard)? revert? еще что-нибудь? revert не удаляет, лишь обращает изменения новым коммитом. По-вопросу: не знаю, мне всегда хватало reset 6)Как сделать так, чтобы перестало просить пароль при использовании ssh соединения? Например, когда использую git push или git fetch. Сгенерировать новый ключ, во время ввода пароля ничего не вводить. 7)MS Visual Studio 2010 создал файл main.cpp. При попытки его(и другие файлы с кодом от MS VS) индексировать ошибка: Fatal: CRLF would be replaced by LF in main.cpp. Искал в гугле и что-то было про это, но как решить эту проблему я не понял. Windows-specific problem. По-идее ничего страшного, на SO предлагают добавить [core] autocrlf = false сижу на линуксах, поэтому тут помочь не могу. ДОБАВЛЕНО: А что если через один аккаунт, но на разных компьютерах или пользователей в винде? можно сгенерить новый ключ, и добавить его как второй в настройках аккаунта. Т.е. я могу использовать одну пару ключей для любых репозиториев? И вообще все, что угодно(что работает через ssh)? Да. Ну и добавив ключ в настройках аккаунта вы пользуетесь им для работы со всеми репозиториями которые предоставляет сервис. Все репозитории одного аккаунта вы имели ввиду? Да.

Комментариев нет:

Отправить комментарий