我有一个 git 存储库(和工作目录),存储在我的 Dropbox 中,因此我可以在计算机之间来回移动,而无需提交或存储(阅读:完全不费力)。这很好用,除了一个小烦恼正在变成一个主要烦恼。
每隔一段时间,我就会让一台计算机处于完全提交状态,然后在另一台计算机上启动并发现git status
报告发生了变化。不可避免地,这些更改与权限有关。我不确定为什么?我认为这可能与 Dropbox 如何在同步的计算机上写入文件有关,但umask
两个系统上的 0002 都设置为 0002。我认为该值决定了 Dropbox 写入/更新文件的模式,但它不会是第一次我会错的。
我知道我可以告诉 Git 忽略文件模式,但这只是掩盖了问题。我真的很想了解它,以便我可以就如何进行做出明智的决定。
谢谢。
更新
因此,这是一个相当不错的代表性示例,即即使存储库完全包含在 Dropbox 中,它也会不同步。正如我们所说,我的个人笔记本电脑正在为我的一个项目报告一个干净的工作目录:
$ git status
# On branch develop
nothing to commit (working directory clean)
但是,我的工作笔记本电脑报告了许多未跟踪的文件。让我再说一遍:未跟踪的文件。
$ git status
# On branch develop
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# html/cake/console/libs/templates/
# ...4 more files...
# html/cake/tests/test_app/plugins/test_plugin/views/themed/
nothing added to commit but untracked files present (use "git add" to track)
怎么可能?我的~/.gitignore
文件也在两台机器之间共享(并不是说这些路径中的任何一个都被排除在忽略文件中)。Git 的另一个组件——或者可能是 Dropbox——可以在这里发挥作用吗?