使用 Dropbox 作为跨多台机器的 git 工作目录 - 提交不能完美同步

2024-05-09

首先,我想强调这个问题与在 Dropbox 上托管我的中央存储库无关,而且我对使用 git 还很陌生。我能找到的其他涉及 Dropbox 和 git 的问题都没有真正回答我的问题;它们要么是关于使用 Dropbox 托管您的存储库,要么是关于将两者结合使用是否是一个“好主意”,这两者都不是我在这里要问的问题。

我的问题如下:我有两台电脑,每台都双启动Windows和Ubuntu(一台笔记本电脑和一台台式机)。我的本地 git 存储库(从 gi​​thub 存储库克隆)位于 Dropbox 文件夹中,以便它可以在计算机和操作系统之间同步。当我在一台机器/操作系统上进行提交时,它似乎没有将提交状态正确同步到其他机器。

e.g.:

在我的 Windows 桌面上,我对 foo.cpp 进行了更改。然后我使用“git commit -a”和“git Push”,将我的更改推送到 github 托管存储库。文件的更改也会在我的 Dropbox 文件夹中同步,当我在学校登录 Windows 笔记本电脑时,所有内容都可以顺利下载。但是,当我输入“git status”时,它会显示:

# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   foo.cpp
#
no changes added to commit (use "git add" and/or "git commit -a")

但我已经在我的另一台计算机上提交了这些更改,表面上是同一个工作目录。尝试从 github 服务器“git pull”给我的消息是一切都“已经是最新的”。

我本来希望 Dropbox 能够无缝同步存储库状态。有人熟悉解决这种情况的方法吗?谢谢!


TL;DR

不要使用 Dropbox 与 Git 进行并发操作。

最终的一致性会让你悲伤

Dropbox 为您提供最终一致性 http://en.wikipedia.org/wiki/Eventual_consistency。将其用作关键 Git 操作的后备存储是一个坏主意™。如果您将其用作工作树而不是裸存储库,情况会更糟。您当然可以做到,但您需要了解这种方法的局限性。

Dropbox 和蜘蛛橡树巢 https://spideroak.com/hive/如果您想使用同步目录作为一次一个用户的工作树,那就没问题了。只需确保您的文件和文件夹完全同步,然后再从另一个系统访问它们即可。只要您坚持单用户、单系统工作流程,您就不应该遇到麻烦,但您的情况可能会有所不同。

时间戳

如果您使用的多台机器的时间不一致,您也可能会遇到问题。如果您没有运行 NTP,一台计算机的时钟可能会领先或落后于另一台计算机。这可能会导致同步服务认为新文件实际上是旧文件的情况(反之亦然)。简而言之,任何依赖时间戳的事情都可能容易出错。

如果您使用 GNU make 或依赖时间戳的其他工具,时间戳的准确性尤其重要。如果您要使用 Dropbox 同步工作树,请确保接触该树的所有系统的计时都是准确的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Dropbox 作为跨多台机器的 git 工作目录 - 提交不能完美同步 的相关文章

  • 避免使用 git 和 make 重新编译

    我在 git 中有两个开发分支 并且经常需要在两者之间进行更改 然而 真正令人沮丧的是 每次我在 git 中更改分支时 整个项目都会重新构建 因为某些文件的文件系统时间戳会发生变化 Ofc makefiles 配置为将项目构建到两个不同的构
  • 如何使用 git 撤消所有空白更改

    我有一个 git 存储库 我在其中本地替换了很多文件 git status 现在显示许多修改的文件 有些是 真正修改过的 其他的只是行结尾不同 我希望那些仅通过行结尾不同的内容消失 git重置它们 但是 我似乎找不到 linux pipin
  • 将远程更改合并到非当前分支的分支中

    我有多个分支 我想将远程更改合并到一个分支中不是我当前的分支 例如 git merge remote branch some other branch 仅当本地分支可以快速转发到远程头时 这才是可行的 在任何分支中 要从源获取远程分支并更新
  • Git-svn:批量删除孤立的远程分支

    我正在处理的 SVN 项目 通过 git svn 有经常创建的分支 然后与主干重新集成 然后删除 现在项目大约有10个分支没有被删除 但是在git中 gitbranch r显示大约有50个 我可以一次删除这些 检查它们是否仍然存在于 svn
  • 将代码从没有权限的存储库推送到私有存储库?

    我有一个来自外部存储库 我们称之为 ExRepo 的文件夹 我没有任何推送权限 我有一个名为 MyOwnRepo 的个人存储库 如何获取 ExRepo 并将其合并到 MyOwnRepo 中 我已经尝试过这个 C Users
  • git commit -m 与 git commit -am

    看起来很容易 但我就是不明白 我在我的应用程序的根目录中 这是我的工作流程 git add git commit m added a new feature some files changed git push heroku master
  • 如何克隆没有提交的裸 git 存储库并在克隆过程中获取正确的 HEAD 引用?

    这个答案 https stackoverflow com a 26898059 438273声称该问题已在版本中修复1 8 4 3 但是我在版本中还是遇到了2 25 1 它似乎在版本中按预期工作2 32 0 所以我不确定它是什么时候真正修复
  • 显示 GitHub 上二进制文件的文本差异

    我正在尝试使用 Git 和 GitHub 同步多个应用程序配置文件 这些是以二进制格式存储的 XML 或 plist 文件 例如 一个键盘大师 kmsync file https forum keyboardmaestro com t pl
  • 将存储库从 Github 移至 Gitlab

    有没有办法将整个存储库从 Github 移动到 GitLab 对于代码本身来说 只需在 GitLab 上创建一个新的存储库并推送到它即可 Wiki 页面位于 Github 上的单独分支中 并通过 Git 机制进行管理 据我所知 GitLab
  • 如何使用 Github API 与企业进行搜索

    我正在尝试搜索存储库 但我似乎无法通过 github 企业版找到答案 我已尝试以下操作但没有结果 有什么建议么 curl i http my domain com api v3 repositories If Modified Since
  • 未找到 Gradle DSL 方法:“versionCode()”

    构建我的 Android 项目时遇到问题 我使用Grgit https github com ajoberstar grgit填写versionCode and versionName在 gradle 中 一切工作正常 直到我将 Andro
  • 如何修复 Centos 上的 Git Segmentation 错误

    我收到分段错误错误 无法在服务器上提取代码 Centos 7 这就是我遇到错误的方法 通过使用以下命令来验证我的服务器是否使用 bitbucket 进行身份验证 ssh T email protected cdn cgi l email p
  • 防止在 Git 中签出

    我目前正在研究使用 Git 管理 OpenInsight 应用程序的源代码 由于 OI 代码存储在数据库表中 因此需要进行一定量的手动工作才能将源代码导出为文本 反之亦然 到目前为止 我已经成功地使用 Git 挂钩自动化了很多这项工作 但是
  • Git 查找第一个非本地提交

    有关的 列出尚未推送到源的 Git 提交 https stackoverflow com questions 3080509 list git commits not pushed to the origin yet git rev par
  • 在 emacs 的文件中不断出现的这些 ^M 是什么?

    我认为这可能与 TextMate 有关 但我们在一个小团队中工作 并且在 git 中几乎相同的文件的全文件冲突方面遇到了一些问题 在一个分支中 文件的每一行都附加了 M 这是什么神秘的事 M角色应该做什么 它从哪里来 我们的开发人员在 Wi
  • 我是否需要在裸仓库上运行 git gc ?

    man git gc http www kernel org pub software scm git docs git gc html其中没有明显的答案 而且我在谷歌上也没有任何运气 尽管我可能只是使用了错误的搜索词 我明白你应该偶尔跑步
  • 通过 cron 进行 git 推送

    我正在尝试运行git push来自 cron 当我在 shell 上以交互方式执行命令时 一切顺利 从我的用户的 crontab 运行命令时 cron 会传递错误消息 Permission denied publickey 我认为这与查找或
  • 如何在“git-pull”自动合并后更改提交消息?

    有时 当结果生成自动合并时 我的协作者会 惊慌 git pull 然后接受默认的提交消息 在推送此提交之前 我想确保该消息得到修复 但是 amend似乎不起作用 修复这种情况下生成的消息的最佳方法是什么 我能为他们提供的最佳指示是 git
  • 如何使用最近的标签来装饰 git 日志?

    git log decorate将相关引用的信息添加到日志输出中 commit 9e895ace5d82df8929b16f58e9f515f6d54ab82d tag v3 10 rc7 Author Linus Torvalds lt
  • 如何将 GitHub PR 的代码与其他分支的 PR 代码分开?

    我正在开发一个项目并解决问题 我正在为每个拉取请求 PR 创建一个不同的分支 上次我用他们的 PR 创建了两个不同的分支并解决了这两个问题 现在的问题是 我的两个拉取请求都与我在不同分支上推送的代码搞乱了 我借助以下命令在 git bash

随机推荐