Как известно, Android хоть и основан на Linux, но в нем не существует механизма для работы с нативными пакетами, такими, например, как git. Но существуют другие способы работы с git-репозиториями (локальными и удаленными):
1) использовать специализированные приложения, реализующие функциональность git.
2) использовать нативный пакет git с помощью приложения Termux (для Android >=7), которое реализует Linux-подобную среду и терминал для взаимодействия с ней (основная статья о Termux).
Специализированные приложения
Вот примерный список приложений (на 2021 год), разработанных для работы с локальными и/или удаленными git-репозиториями.
Приложение |
Достоинства |
Недостатки |
Описание |
С клонированием и отправкой изменений на сервер |
|||
+все основные операции (clone, pull, commit, push) |
-кривой перевод на русский язык |
Продолжение проекта SGit |
|
Pocket Git (139р) |
+все основные операции (clone, pull, commit, push) |
-нельзя одной командой зафиксировать изменения сразу нескольких файлов (нужно отдельно каждый файл пометить как stage, а лишь потом делать коммит) |
|
+все основные операции (clone, pull, commit, push) |
-ошибка при попытке push (не вылезло окно авторизации) |
Продолжение проекта SGit |
|
Продолжение проекта SGit |
|||
|
Open source (github) |
||
|
Open source (github) |
||
Без клонирования и отправки изменений |
|||
+список репозиториев |
-работа только с удаленным репозиторием (без клонирования) |
Клиент для сервиса GitHub |
|
GitNex Pro for Gitea (339р) |
+авторизация по паролю/ключу ssh |
-работа только с удаленным репозиторием (без клонирования) |
Клиент для сервиса Gitea |
+обзов файлов репозитория |
-работа только с удаленным репозиторием (без клонирования) |
Клиент для сервиса Bitbucket |
|
-ошибка при попытке войти: |
Клиент для сервиса Bitbucket |
||
+просмотр коммитов |
Клиент для сервиса GitLab |
||
+просмотр коммитов |
Клиент для сервиса GitLab |
||
Клиенты для сервиса GitHub |
Для своих локальных репозиториев лично какое-то время использовал 2 продукта из первой категории: MGit и PocketGit. Но по мере увеличения объема репозитория пользоваться приложениями становится неудобно.
И тут на помощь пришел Termux.
Git с помощью Termux
Использовались материалы:
The Termux Wiki (wiki.termux.com)
Proper Git client on Android (pedronveloso.com)
Примерный порядок действий для настройки пакета git в среде Termux для его использования с целью синхронизации локального репозитория с удаленным:
1) установить и настроить Termux, в том числе:
Открыть для Termux доступ к внешнему хранилищу телефона, выполнив:
1 |
$ termux-setup-storage |
2) установить пакет git:
1 |
$ pkg install git |
3) установить настройки по-умолчанию
1 |
$ git config --global <option> <value> |
При использовании параметра --global настройка устанавливается в общем конфиге для всех репозиториев по-умолчанию, иначе – только для текущего репозитория.
Логин и эмейл:
1 2 |
$ git config --global user.name <NAME> $ git config --global user.email <EMAIL> |
Алгоритм команды pull:
1 |
$ git config --global pull.rebase true |
Если для доступа к удаленному репозиторию используется логин/пароль (а не ключи SSH), то можно указать git, чтобы он сохранил пароль локально:
1 |
$ git config --global credential.helper store |
В Windows данные сохраняются в Credential Store ( > control userpasswords2).
Есть мультиплатформенная утилита Git Credential Manager Core (github) от Microsoft для хранения секретной информации в Windows, Mac и Linux (сам не использовал).
Чтобы просмотреть внесенные настройки:
1 |
$ git config -l |
4) клонировать репозиторий
1 |
$ git clone <repo_url> |
Если планируется использовать аутентификацию по логину/паролю (или токену PAT), используйте адрес подключения по протоколу HTTPS, например:
1 |
https://github.com/user/repo.git |
Если же по ключам SSH, то по протоколу SSH:
1 |
git@github.com:user/repo.git |
При необходимости, можно изменить адрес подключения с помощью команды:
1 |
$ git remote set-url origin <new_url> |
Примечание:
Исходя из уведомления от GitHub, начиная с 13.08.2021 сервис в целях безопасности больше не будет поддерживать аутентификацию по паролю. Вместо этого, нужно будет сгенерировать токен (PAT – personal access token) или использовать SSH-ключи.
5) при необходимости, добавить ssh-ключ (подробнее здесь, а также здесь)
Для выполнения операций с удаленным репозиторием по ключу SSH, нужно публичную часть ключа добавить на хостинг Git, а приватный SSH-ключ добавить в утилиту ssh-agent.
5.1) перенести приватную часть ключа на устройство
Если имеющихся ssh-ключей нет, то их нужно создать. В Termux, как и на Linux, это можно сделать с помощью команды ssh-keygen.
Примечание:
По-умолчанию, файлы ключей будут созданы в каталоге
$HOME/.ssh, в приватной области памяти Termux. Это хорошо, т.к. у других приложений отсутствует доступ к этому расположению.
Если связка ssh-ключей уже имеется, то копируем файл приватного ключа на телефон (например, в корень внутренней памяти), а затем в Termux выполняем команду для перемещения файла в $HOME/.ssh:
1 |
$ mv ~/storage/shared/id_rsa ~/.ssh/git_hub_key |
5.2) добавить ключ к агенту
Запустить утилиту ssh-agent в фоновом режиме, если она еще не запущена:
1 |
$ eval "$(ssh-agent -s)" |
И добавить ключ SSH к агенту:
1 |
$ ssh-add ~/.ssh/git_hub_key |
У меня проблема ,при установке “git” требует имя пользователя и я пароль , я их не знаю и не ставил , как из узнать ?
Если вы про git в Termux, то при первой установке пакета git не требуется указывать никаких паролей. Вероятно, вы что-то путаете.
Либо требуются права sudo, но по-умолчанию в Termux этого нет.
А как вообще узнать или изменить имя и пароль? Я нечего толком сделать не могу так как он требует что бы я ввёл имя и пароль пользователя
а что надо вписывать в option и в value?
Устанавливать настройки по-умолчанию не обязательно, они просто для удобства чтобы не вводить некоторые параметры каждый раз. Ниже я привел примеры: “credential.helper store”, “pull.rebase true”, “user.name“, “user.email “
CANNOT LINK EXECUTABLE “ssh-keygen”: library “libcrypto.so.3” not found
вот такое сообщение при установке пакета git. Что делать?