1

我在这里做错了什么,应该是设备和遥控器之间的简单同步?

我在这里查看了其他答案,并在尝试了一些建议的解决方案后更加困惑。这一定很简单。

场景:

我正在尝试做的事情:

我想在多个设备之间的 kdbx 数据库的本地副本之间进行同步。出于本次讨论的目的,我将简单地定义两个本地使用的设备和我在 gitea 服务器上的远程 Git 存储库:

  1. 我的 Gitea 服务器(我们称之为gitea.host

在这个名为kdbx的远程 Git 服务器上创建了一个空仓库。

  1. 我的笔记本电脑/台式设备(我们称之为笔记本电脑

KeePassXC和配套的浏览器插件已安装在笔记本电脑的 Firefox 中。还安装了 Git。

KeePassXC使用的数据库是joeuser.kdbx

  1. 我的 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 "joeuser@gmail.com"
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 "joeuser@gmail.com"
git clone https://gitea.host/joeuser/kdbx.git

joeuser.kdbx从任何位置移动到 /home/joeuser/private/keys/kdbx

打开KeepassXC,连接到/home/joeuser/private/keys/kdbx/joeuser.kdbx并检查...所有条目都在那里并且它正在工作。

在“笔记本电脑”上的数据库中添加新条目并与远程同步:

我们首先使用哪种设备并不重要,但对于这个例子,我们将从笔记本电脑开始

注意:我们还安装了将在此处使用的KeePassXC浏览器插件。

  1. 打开KeePassXC,解锁数据库,joeuser.kdbx
  2. 打开浏览器(例如 Firefox)并访问诸如https://joeuser.com 之类的站点
  3. 登录,浏览器插件会询问您是否希望将 uid/pwd 组合添加到新条目中,然后接受。
  4. 返回KeePassXC并验证 kdbx 数据库中现在有一个条目。一切看起来都很好。
  5. 将数据库推送到远程源:
git add .
git merge -m "added entry in kdbx"
git push

将“android”与遥控器同步:

1 打开termux并执行以下操作:

cd storage/shared/private/keys/kdbx
git pull
  1. 打开KeePassDX,并连接到数据库 private/keys/kdbx/joeuser.kdbx
  2. 检查 joeuser.com 的登录条目,它就在那里。
  3. 返回KeePassDX,在数据库中添加另一个 uid/pwd 条目。
  4. 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 工作站上的工作方式以及密码存储OpenKeyChain的对应组合在 Android 上工作的方式对此进行建模。基本上,pass 使用 git 在我的远程 Gitea 服务器的私有仓库之间进行同步,而在使用笔记本电脑安卓时,我所要做的就是下拉设置菜单并选择同步 - 瞧!该设备现在与远程仓库同步,​​并且每次都能完美运行。

我在这里做错了什么?我该如何解决这个问题并获得我正在寻求利用的功能?

在将 git 与本地和远程存储库一起使用之前,我从来没有真正遇到过问题,但话又说回来,除了pass/Password Store/OpenKeyChain我一直与一个包括其他人的团队合作,并且从来没有真正关心过做从远程获取我自己的更新(因为根据定义,我已经拥有它们),除非我要转移到新设备。正如预期的那样,我得到了其他所有人的贡献。

4

2 回答 2

0

一种促进同步的有效设置是使用Git 2.6+

git config --global pull.rebase true
git config --global rebase.autoStash true

那么在任何时候,一个简单git pull的就足够了:

  • 隐藏你正在进行的工作
  • 拿来
  • 在更新的上游分支之上 rebase 任何本地提交
  • 恢复您正在进行的工作

从那里,您可以git add++ git commitgit push

于 2020-07-21T06:02:12.977 回答
0

git status在您更改了哪些文件已更改后,请尝试检查设备。

如果git status显示正确的更改,请确保您在调用git add . 或直接键入时位于 repo 的根目录中git add <relative path to file>

之后,您可以使用调用指定提交git commit -m "<your message>"

现在尝试在git push这里推送并在另一台设备上拉该分支。

于 2020-07-21T06:56:05.023 回答