- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关于我的设置的一些话:
git
与 iCloud Drive 同步的桌面上的项目文件夹已启用同步桌面和文档文件夹选项 MacOs Catalina 10.15.2
这似乎加剧了我在
git
中注意到的以下特性初始化项目文件夹:
deleted
files
来自我的
local worktree
它们随机开始重新出现在工作树中(有时甚至一天或更长时间后)作为
untracked files
.
duplicated
- 有一些带有数字后缀的副本,例如文件 foo 突然出现
foo 2
对于文件栏,有
bar 6
.然后它们也出现在
git status
如
untracked files
.
.git
中观察到了这种行为文件夹。
<filename> 2
重复似乎源于上一次,有时甚至是一个月前(参见上面 .git 文件夹截图中的“配置 2”)。我还注意到(但在我提供的图片上没有显示)有时数字后缀是一个随机的“6”,例如没有数字后缀序列(例如 1-5)导致重复的文件名与数字 6 .
git
类似操作
git commit
git reset
等等。
.git
有关。不适用于
ICloud Drive Desktop file sync
.
ICloud Drive Desktop file sync
选项,看看是否能解决它。
最佳答案
简答:将您的存储库文件夹放在 iCloud Drive 同步文件夹之外,您应该没问题。为安全起见,不要将 VCS 和文件同步服务结合在一起用于相同的目录/文件。使用 Github/GitLab/Bitbucket/等。用于同步访问和集中保管。
长答案: iCloud Drive 是一种“消费者”产品,适用于家庭用户。如果您是使用版本控制软件的开发人员,您将被视为“专业人士” - 您会发现 iCloud Drive(以及其他文件同步解决方案)并不是一个强大的解决方案,无法与您的版本控制软件配合使用文件夹。 iCloud Drive(和其他文件同步服务)不知道您的 VCS 设置,并且在您执行对目录进行彻底更改的操作时会感到困惑 - 例如切换分支或 pull 更改。如果您想同时访问不同计算机/设备上的存储库,并拥有存储库文件的“中央备份”,只需使用众多存储库托管服务之一 - 如 Github、GitLab、Bitbucket 等。
更长的答案:所有“自动同步”软件的关键问题是:我们如何确定文件何时被更改,并且应该同步?我们是否检查实际文件内容,假设同名文件应该是同一个文件?如何跟踪名称更改?当我们将文件从一台计算机传输到另一台计算机时,权限(或日期)可能会发生变化如何?
通常,文件同步软件会在您工作时监视目录是否有任何更改。一旦它检测到您更改了其中的某些内容,它将通过其例行程序来确定哪些文件已更改,并重新同步所需的文件。
有许多 VCS 操作——比如 pull 存储库中的最新更改、切换分支或回滚到先前的提交——这可能会导致文件同步软件触发其同步例程。根据实际的同步算法(它如何确定已更改的内容、同步采取哪些步骤以及实际执行同步的速度),它很可能会检测到“误报”,这将导致您以重复结束。
在“iCloud Drive + git”对的特殊情况下,我们有一个致命的组合:git 在对整个目录结构进行彻底更改方面非常快,而 iCloud Drive 在检测实际更改的内容方面非常糟糕——而且也是同步非常慢。这意味着当 git 切换分支和更新您的工作树时,iCloud Drive 可能会错误地检测到文件已更改,而实际上它们尚未更改。然后它将标记这些文件以进行同步。但是因为它的同步速度非常慢,当它制作第一个重复副本的一半时,您可能已经对您的存储库进行了另一个 git 更改 - 这将导致您现在拥有“文件 3”,然后是“文件 4”等等。
希望这在 future 可能会发生变化,但与此同时,最安全的解决方案是不要将版本控制的存储库保存在任何自动同步的文件夹中。在这种特殊情况下,如果您将存储库保存在不是“文档”或“桌面”的任何文件夹中 - 并且没有被 iCloud Drive 监视 - 那么您应该不会遇到 git 问题。
请注意,这不仅仅是 iCloud Drive 和 git 的问题。如果您使用任何文件同步服务(Dropbox、Google Drive、OwnCloud、Box 等)和任何 VCS(git、svn、fossil 等),您可能会遇到某种重复、损坏或安全问题. :(
最后,值得一提的是,iCloud Drive 和其他文件同步服务提供的好处是“可用性”(能够从多台计算机和设备访问存储库,使它们保持同步)和“安全性”(具有中央位置,并保存所有文件的安全副本)。如果您使用任何存储库托管服务,例如 Github、GitLab、Bitbucket 等,您就已经获得了这些好处。您可能已经在使用的存储库托管服务! ;-)
关于git - iCloud Drive 桌面同步与 Git - 已删除的文件重新出现并带有数字后缀的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59308049/
我时不时地输入“git”,然后想到别的东西,然后输入例如“git checkout master”。当然,这给我留下了 $ git git checkout master git: 'git' is
我做到了 git 克隆 git://foo.git 光盘富 ...编辑文件.. 现在我想重新开始。我不在乎我已经做出的任何改变,但我不想再次克隆整个巨型 foo.git,只是丢失我所有的更改。我怎
我在我的电脑上开发代码,我的计算节点很少。 为了让我的程序保持同步,我决定使用 git。以前,我以一种单向模式使用它来“下推”从 PC 到计算节点的更改。但是时不时遇到计算节点特有的小bug,现场修复
虽然它似乎什么也没做,但它没有给出任何警告或错误消息。有什么想法吗? 最佳答案 来自 Git 源的注释: /* * Read a directory tree. We currently ignor
我知道如何为这样的 HTTPS 请求提供用户名和密码: git clone https://username:password@remote 但我想知道如何像这样向 Remote 提供用户名和密码:
Git GUI、Git Bash 和 Git CMD 之间有什么区别?我是初学者,为了进行安装,我发现自己通常同时使用 git bash 和 git CMD 最佳答案 Git CMD 就像使用 git
有人能告诉我git中文件索引被删除是什么意思吗?这些文件在我的 VS Code 中标记为红色,但我仍然可以修改文件并将更改推送到将反射(reflect)这些更改的远程存储库。我认为这一切都是在我使用命
我通过 git 子树将 GLFV 库添加到项目中,但出现此警告“看起来您的 git 安装或您的 git-subtree 安装已损坏”。还描述了几个原因,为什么这可能是: 如 git --exec-pa
我有需要外部 git 项目的 repo,但我不想使用子模块,因为我想在 github 上存档所有文件,所以我认为我只是将具有 git repo 的整个目录添加到 git 但它不t 添加里面的 .git
我有需要外部 git 项目的 repo,但我不想使用子模块,因为我想在 github 上存档所有文件,所以我认为我只是将具有 git repo 的整个目录添加到 git 但它不t 添加里面的 .git
我一直在阅读一篇文章,作者在其中指示:在现有存储库中创建一个新存储库,并想知道这是否是他忽略的错误。稍后我会与他核实。 这些是我要检查的条件: 将现有目录制作成仓库的条件,并且已经 checkin 主
我确实在不同的计算机上处理相同的项目,我想知道是否有一种方法可以跟踪该 .git 文件夹,这样我就不必在所有本地文件中重新配置配置文件。 我将所有工作推送到 bitbucket。 最佳答案 不,没
这个问题在这里已经有了答案: How does git store files? (3 个答案) 关闭 9 年前。 我为我的许多项目创建了一个远程存储库,所以它是我的push 的目的地。与 git
应该如何在 git 中查看文件内容的完整历史记录? 一个文件在 git 中的历史很短,存储库通过 git-svn 同步,但在 svn 中的历史很长。 git 中的历史记录到达文件移动的位置。要查看历史
我是confused here ... 如何对修改后的文件进行git commit,以及如何对新文件进行git commit? 还有,你如何在git中单独提交文件? 最佳答案 git 提交过程分为两个
正在搜索 throw SO 来寻找答案。遇到这个似乎没有给出任何答案的旧线程。重新触发此线程,希望有人知道! 有人能告诉我 git subtree 和 git filter-branch 的区别吗?为
我想知道是否有一种方法可以避免在每个 Git 命令的开头键入单词 git。 如果有一种方法可以在打开命令提示符进入 “Git 模式” 后只使用一次 git 命令就好了。 例如: git> 之后,我们键
当您修改工作目录中的文件时,git 会告诉您使用“git add”暂存。 当您向工作目录添加新文件时,git 会告诉您使用“git add”开始跟踪。 我对这两个概念有点困惑,因为我假设跟踪文件的更改
为什么 git://有效 $ git clone git://github.com/schacon/grit.git Cloning into 'grit'... ... Checking conne
我在以下沙箱中练习 git:https://learngitbranching.js.org/?NODEMO 我在两个单独的 session 中运行了两组命令。第一组命令顺序如下: git clone
我是一名优秀的程序员,十分优秀!