Dropbox中未同步的Git存储库

Rob*_*son 6 git macos file-permissions dropbox

我有一个存储在我的Dropbox中的git存储库(和工作目录),因此我可以在计算机之间来回移动而无需提交或存储(阅读:完全没有任何努力).除了一个令人烦恼的轻微烦恼外,这种方法很有效.

每隔一段时间,我就会让一台计算机处于完全承诺状态,只能在另一台计算机上运行,​​并发现git status报告发生了变化.这些变化不可避免地与权限有关.我不确定的是为什么?我认为它可能与Dropbox如何在同步计算机上写文件有关,但umask两个系统上的文件都设置为0002.我认为该值决定了Dropbox编写/更新的文件模式,但它不会我第一次错了.

我知道我可以告诉Git忽略文件模式,但这只是掩盖了问题.我真的很想了解它,所以我可以做出明智的决定如何继续.

谢谢.

UPDATE

所以这里有一个相当不错的代表性例子,即存储库完全包含在Dropbox中,它也会失去同步.在我们发言时,我的个人笔记本电脑正在为我的一个项目报告一个干净的工作目录:

$ git status
# On branch develop
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)

不过,我的笔记本电脑报告了许多未跟踪的文件.让我再说一遍:未跟踪的文件.

$ 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)
Run Code Online (Sandbox Code Playgroud)

怎么可能?我的~/.gitignore文件也在两台机器上共享(并不是在忽略文件中排除任何这些路径).还有Git的另一个组件 - 或者Dropbox - 可以在这里发挥作用吗?

小智 1

我在相同的情况下遇到了这个确切的问题。

要停止显示文件,git status您可以将 git 设置为忽略文件模式更改:

git config core.filemode false
Run Code Online (Sandbox Code Playgroud)

此更改是 git 存储库本地的,并将与文件同步。