Что я здесь делаю неправильно с тем, что должно быть простой синхронизацией между устройствами и пультом?
Я просмотрел другие ответы здесь и оказался более запутанным, попробовав некоторые из предложенных решений. Это должно быть что-то действительно простое.
Сценарий:
что я пытаюсь сделать:
Я хочу синхронизировать локальную копию базы данных kdbx между несколькими устройствами. Для целей этого обсуждения я просто определю два устройства, используемых локально, и мой удаленный репозиторий Git на сервере gitea:
- Мой сервер Gitea (назовем его gitea.host)
На удаленном Git-сервере создан пустой репозиторий с именем kdbx.
- Мой ноутбук/настольный компьютер (назовем его ноутбук)
KeePassXC и сопутствующий подключаемый модуль браузера были установлены в Firefox на ноутбуке. Также установлен гит.
KeePassXC использует базу данных joeuser.kdbx.
- Мое устройство Android (назовем это устройство android)
KeePassDX установлен на Android. У меня также установлен Termux.
Начальная настройка:
- На android мы открываем termux и выполняем следующее:
pkg install git
pkg install vim
cd storage/shared
mkdir private/keys
cd private/keys
git config --global user.name "joeuser"
git config --global user.email "[email protected]"
git clone https://gitea.host/joeuser/kdbx.git
Откройте KeepassDX, выберите joeuser.kdbx и проверьте... Все записи есть и он работает.
- На ноутбуке мы выполняем следующее:
cd /home/joeuser
mkdir private/keys
cd private/keys
git config --global user.name "joeuser"
git config --global user.email "[email protected]"
git clone https://gitea.host/joeuser/kdbx.git
переместите joeuser.kdbx из любого места в /home/joeuser/private/keys/kdbx
Откройте KeepassXC, подключитесь к /home/joeuser/private/keys/kdbx/joeuser.kdbx и проверьте... Все записи есть и все работает.
Добавьте новую запись в базу данных на «ноутбуке» и синхронизируйте с удаленным:
На самом деле не имеет значения, какое устройство мы используем первым, но в этом примере мы начнем с ноутбука.
ПРИМЕЧАНИЕ. Мы также установили подключаемый модуль браузера KeePassXC, который будет использоваться здесь.
- Откройте KeePassXC, разблокируйте базу данных, joeuser.kdbx
- Откройте браузер (например, Firefox) и посетите сайт, например, https://joeuser.com.
- Войдите в систему, и плагин браузера спросит, хотите ли вы добавить комбинацию uid/pwd в новую запись и согласитесь.
- Вернитесь в KeePassXC и убедитесь, что в базе данных kdbx появилась запись. Все выглядит хорошо.
- Переместите базу данных в удаленный источник:
git add .
git merge -m "added entry in kdbx"
git push
синхронизировать «андроид» с пультом:
1. Откройте termux и выполните следующие действия:
cd storage/shared/private/keys/kdbx
git pull
- Откройте KeePassDX и подключитесь к базе данных private/keys/kdbx/joeuser.kdbx.
- проверьте логин для joeuser.com, и он там есть.
- Вернитесь в KeePassDX, добавьте еще одну запись uid/pwd в базу данных.
- в сеансе termux выполните:
git add .
git merge -m "added another entry in db"
git push
В этот момент все резко останавливается. нажатие, извлечение с любого локального устройства приводит к сообщениям от Git, в которых говорится:
Already up to date
для тяги и Everything up to date
для толчка.
Проблема! Как решить?
Я хотел смоделировать это на основе того, как pass работает на рабочих станциях UNIX/Linux, а его эквивалентная комбинация Password Store и OpenKeyChain работает на Android. . По сути, pass использует git для синхронизации между частным репозиторием моего удаленного сервера Gitea, и все, что мне нужно сделать при использовании ноутбука или android, — это вытащить в меню настроек и выберите синхронизацию - вуаля! Теперь устройство синхронизировано с удаленным репозиторием и каждый раз работает безупречно.
Что я здесь делаю неправильно? Как я могу решить эту проблему и получить функциональность, которую я хочу использовать?
У меня никогда не было проблем до использования git с локальными и удаленными репозиториями, но опять же, за исключением pass/Password Store/OpenKeyChain, я всегда работал с командой, в которую входили другие и никогда на самом деле все, что было связано с получением моих собственных обновлений с удаленного компьютера (потому что, по определению, они у меня уже были), если только я не переходил на новое устройство. Я получал вклад всех остальных, как и ожидалось.
git merge -m "added another entry in db"
вы хотели запуститьgit commit -m "added another entry in db"
? - person ElpieKay   schedule 21.07.2020git pull
означает выполнитьgit fetch
, затем запустить вторую команду Git, обычноgit merge
. Командаgit merge
говорит, что уже обновлена, потому что вы в курсе. Одного слияния достаточно: другое не сделает больше. Как предложил ElpieKay, может быть, вы хотели использоватьgit commit
? - person torek   schedule 21.07.2020