【发布时间】:2019-11-25 17:44:03
【问题描述】:
我在 Github 中有重复的目录(因情况而异)。似乎它们都被跟踪到我本地的单个目录。如何正确删除其中一个目录而不影响我的本地?
我采取的一般步骤 (IIRC):
- 我有一个目录,比如说“MyDirectory”。
- 我将该目录中的一些代码推送到了 Github。
- 我将目录名称更改为“mydirectory”。
- 我意识到 github 默认情况下不区分大小写(我所有的代码更改都添加到 Github 的“MyDirectory”中),所以我运行了“git config core.ignorecase false”。
- 我重新推送了更改,这在 Github 中创建了一个新目录。 (此时,Github 有 2 个目录,一个名为 MyDirectory,另一个名为 mydirectory。我的本地只有 mydirectory。)
- 我想不出从 Github 中删除 MyDirectory 的好方法,所以我手动删除了其中的所有文件,并遵循 these steps。
- 现在,当我运行 git pull 时,它会从本地删除 mydirectory(我不想这样做。)
【问题讨论】:
-
几点澄清:1.“GitHub默认不区分大小写”不准确。问题在于操作系统的文件系统以及 git 如何与之交互,而不是 GitHub。 2.
git不跟踪目录。它只跟踪文件的内容。因此,删除目录的唯一方法是删除该目录中的文件。 -
stackoverflow.com/questions/11183788/… 以及该页面的链接可能会有所帮助。
-
是的,你确实想要那个。复制所有文件,删除本地重复目录,拉取,现在一切都同步了。现在再次创建目录一次,然后将内容放入其中并推送。
-
不要做你在第 4 步中所做的事情。你的 Git 存储库中的
core.ignorecase设置告诉你的 Git 如何你的计算机实际行为。改变它意味着你在对你的 Git 撒谎:它不会改变你的计算机的行为;它只会改变 Git 用来尝试处理您的计算机行为方式的策略,可能会使 Git 行为不佳。 -
@Code-Apprentice 感谢您的更正。看来我需要更多地了解 git 的工作原理。马特,这几乎就是我最终做的。谢谢。托雷克,我明白了。这与 Code-Apprentice 的回答一起解释了为什么远程更改会导致在 git pull 之后删除我的本地文件。我想我以后遇到这个问题时应该使用“git mv”。