我想在两台机器上同步一个包含我的 dotfiles 的 git repo 的目录。两台机器都会对 repo 中的文件进行更改。通常我使用一致来同步目录,但在这种情况下,.git
即使目录内容表面上相同,目录中的文件也会有所不同。Unison 看到这一幕,举手退出。
$ unison dotfiles
changed <-?-> changed .git/FETCH_HEAD
changed <-?-> changed .git/ORIG_HEAD
changed <-?-> changed .git/index
changed <-?-> changed .git/logs/HEAD
changed <-?-> changed .git/logs/refs/heads/master
changed <-?-> changed .git/logs/refs/remotes/origin/master
此处的逐字节同步不起作用,因为即使使用相同的文件和 git 状态,内部 git 文件也可能不同。如何同步这些目录?同步后,两台机器上的所有非 git 文件和 git 状态应该相同。git state 是指提交历史和暂存,但不一定是每个内部 git 文件(例如 .gitignore、.git)的每个字节。我对 git 的了解还不够,无法更详细地说明我的意思,但如果不清楚,请发表评论。
我不想将任何 git 提交作为同步的一部分。我在这里将版本控制和同步视为两个独立的问题。
将词 git 和 sync 放入 google 会给出描述如何克隆 repo 的结果。需要明确的是,上面“同步”的使用都不是指 git 操作。