问题标签 [git-rm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 将文件从主存储库重构为具有历史记录的子模块
以一个项目为例,主存储库 M 中的可执行源和几个子模块 S1、S2 等中的依赖库。决定将可执行文件中的一些代码迁移到子模块 S1 中的库中其他项目通常可以访问。我们将主存储库和子模块都分支,迁移过程的第 1 步是简单地将 N 个文件从 M 中的目录移动到 S1 中的特定目录(具有不同的路径)。天真的方法是简单地从 M 中 git rm 文件,将它们移动到 S1 中的新目录,cd 到子模块,然后 git add 它们。问题当然是这些文件的所有历史记录都丢失了。这不是一个大问题,因为我认为例如 pull-merge 不会跟踪从 M 中的文件到 S1 中的新家的更改,
所以这就是我的问题:有没有比简单的 rm-and-add 更好的方法来完成从 M 到 S1 的文件迁移,这样至少可以保留文件的历史记录。如果它在 M 之内,当然可以简单地使用 git-mv。我已经看到了一些在任意存储库之间移动文件的公式,但是 A,我发现它们几乎不可能遵循,而 B,我希望主模块和子模块之间的托管关系可能会使它更容易或更优雅地完成。如果答案是出于这些目的,M 和 S1 只是两个任意不同的存储库,那么这里的某个人可能会以比我在其他地方看到的更好的方式列出这些步骤并进行解释。这实际上是我现在正在研究的一项任务,因此我们将不胜感激任何相关的反馈。
编辑:合理地建议这是Git: Moving files into an existing submodule 的副本。这似乎是真的,这并不让我感到惊讶,这已经被提出了,但对于一个对 git 有相当基本了解的读者来说,答案是相当简洁的。我希望通过对所涉及命令的更完整描述来分解这些步骤。
Edit2:在我看来,所谓的 dup(以及其他类似问题和答案)的答案对我不起作用的原因有两个。一方面,为了了解正在做的事情,我需要阅读所有这些内容,只是因为我需要加深我对 git 正在发生的事情的模型。那在我身上。但是在完成了这些之后,现在了解了这些拆分和合并方法正在发生的事情,我意识到我试图解决的问题更深入——事实上,如此之深,以至于我开始意识到它可能git 无法交付的独角兽。
当你有一个单一的存储库 - 没有子模块时,你可以移动一个文件git mv
,并且它为系统提供了更多信息,而不是简单地从一个位置删除并添加到另一个位置。它保留了历史,但我相信它还允许 git 跟踪在移动文件中所做的更改,无论它们在其他本地存储库中的什么位置。因此,如果我将我的文件移动到一个分支中,而其他人在他们自己的文件视图中修改文件并提交并推送这些更改并将它们合并到主分支,那么我相信 git 有足够的会计信息,当我提取这些更改时,它们在我的存储库视图中被合并到新位置的文件中。这是一个比仅仅保存历史更大的附加值(在我看来)。如果我从主存储库中删除文件并将它们添加到子模块中,它们在新位置将没有历史记录,但是他们在旧位置的生活历史仍然可以通过已删除文件的“幽灵”来检索。不方便,但不是灾难性的。但是,如果有一种方法可以管理来自其他开发人员视图的更改并将它们定向到存在于子模块中的文件,那将是惊人的。太神奇了,这似乎超出了 git 的能力范围。总而言之,我想我正在寻找一个可以跨存储库工作的神奇“git mv”,现在我想起来,我怀疑这样的事情是否存在。太神奇了,这似乎超出了 git 的能力范围。总而言之,我想我正在寻找一个可以跨存储库工作的神奇“git mv”,现在我想起来,我怀疑这样的事情是否存在。太神奇了,这似乎超出了 git 的能力范围。总而言之,我想我正在寻找一个可以跨存储库工作的神奇“git mv”,现在我想起来,我怀疑这样的事情是否存在。
git - GitHub 错误地删除了文件 - 在不同时间提交了多个分支。怎么处理?
下面的场景详细说明了远程 git repo 上错误地删除了文件的情况。如果您滚动浏览下面的提交,问题确实出现了COMMIT 4
,实际上就它是否意外/预期而言,我想知道是否有一种通用的方法来解决这个问题。最好完全避免在分支中包含不需要的文件,但是当遇到像 in 这样的情况时COMMIT 4
,我的问题是应该怎么做?
code1.java 现在不见了 :( :( :(
git - 从历史记录中删除所有不在工作树中的文件
StackExchange 上的许多答案都涉及从历史记录中的所有提交中删除给定文件,例如:
然而,随着时间的推移,我的存储库有大量数据推入其中,我希望通过过滤掉所有不在当前工作树中的文件来显着减小其大小。
在手册页中,这可以通过以下方式针对索引完成:
从我可以收集到的第一部分获取所有已删除文件的名称,第二部分将它们从缓存版本中删除。
我无法完全解决的是如何更改 rm 命令的过滤器分支版本,以确保它将索引的版本与头部进行比较(从而删除所有已删除的文件)。
这样做的目的是删除历史记录中当前工作树中不存在的所有文件。
git - 将单个跟踪文件添加到 .gitignore 而不删除它?
我刚刚发现我.idea/myproject.iml
签入的文件包含一个本地路径。因此,我需要将它添加到.gitignore
并让 git 不再跟踪它。
我(和其他所有人)想保留我们的本地版本,.idea/myproject.iml
因为它在本地是正确的。
我最初正在考虑 git rm --cached .idea/myproject.iml
,但这不是一个解决方案,因为它会从所有其他开发人员那里删除该文件。这在git中可能吗?
我注意到 tortoise-svn 有一个“取消版本并添加到忽略列表”命令,而 tortoise-git 有一个“删除并添加到忽略列表”,这让我觉得这是不可能的......
git - Git 从 repo 中删除文件而不删除 WHEN OTHERS PULL
我团队中的每个开发人员在其本地工作副本的根目录中都有一个 .idea 文件。有人在他们的全局 .gitignore 中没有它(并且它不在任何其他 .gitignore 中),所以他们不小心将它提交给了我们的远程仓库。现在它正在被跟踪。
我们想再次取消跟踪它,但我们需要将 .idea 文件保留在每台本地机器上。规范的建议是git rm -r --cache .idea
,然后推送到远程,但是虽然这会将 .idea 目录留在运行命令的机器上,但 .idea 仍然会在下次拉取时从其他机器上删除。在许多类似的问题中都提到了这一点,但仅在评论等中提到,并且只有一系列骇人听闻的解决方法,要求每个开发人员采取一些措施来避免删除。这对于一个大型或分散的团队来说是不可行的,并且在任何情况下都感觉不合适,因为唯一的我们想要采取行动的改变是关于回购历史,而不是本地文件系统。将 .idea 目录的跟踪状态恢复到原来的状态 - 未跟踪,git 不理会它。
实现这一目标的规范或最佳实践方法是什么?
git - GitHub分支混乱
所以,我想将一个项目上传到 GitHub,我必须为每个分配请求创建一个新分支,但是当我创建它时,它克隆了我在另一个分支中拥有的内容并将其设为默认分支,并且出于某些愚蠢的原因, GitHub 没有简单的删除按钮,一切似乎都很复杂,是的,我是使用 GitHub 的新手,这可能是一个愚蠢的问题,但我需要帮助。
如何删除此分支及其内容?(远程,我不关心本地更改)以及如何创建一个干净的空分支,我可以简单地上传带有一些代码的文件夹?
我前段时间上传了第一个项目,成功,现在我必须创建另一个分支来上传另一个项目,当我创建它时,它成为默认分支,并且由于某种原因它与第一个项目具有相同的内容,所以现在我有三个分支,里面有相同的东西,我的请求是,我如何删除除了原始项目的分支之外的分支,以及如何创建一个新的干净和空的分支,因为每次我尝试创建一个分支时,它都会克隆自动第一个项目,它说“从X分支制作Y分支”
最后一件事,你能用实际的分支名称而不是通常的占位符来做一个例子吗?我很笨,例子越清楚越好,谢谢,感谢您的帮助
git - 如何从 GIT 中删除文件夹?
我需要删除 BitBucket 中的 2 个文件夹:
我使用了命令:
git rm folder1 folder2
并得到错误:
致命:在没有 -r 的情况下不递归删除“folder1”
git - 无法使用“git rm -r -f {folder_name}”删除所有文件(Windows 10)
我在 Windows 10 上的 git 存储库中工作,并且我有一个名为“Client”的文件夹 - 我正在尝试从本地存储库中完全删除它以及其中的所有文件。我在我想要删除它的分支内,我运行了以下命令:
git rm -r -f .\Client\
它删除了客户端中的许多文件夹和文件,但仍然存在文件夹和文件。所以我尝试再次运行它,我收到以下消息:
fatal: pathspec '.\Client\' did not match any files
是什么赋予了??
git - 如何从命令 git rm -r * 中恢复已删除的文件以及已提交但未推送的文件
我不小心从他在 github 的存储库中删除了文件(我的一些文件有很多更改,因为我还没有推送它们),并且在我远程回到 github 中的同一个存储库之后 -iv'e 添加了再次提交文件,我对文件进行了提交,当我尝试推送时出现此错误 - “致命:您当前不在分支上。” 我试图“修复”这种情况,并发出命令 - “git rm -r *”,然后我的所有文件内容都从我的计算机中删除了。我真的不知道现在该做什么以及如何恢复这些文件(只是提醒一下 - github 上的当前分支没有更新到我的上次提交 - 因为没有进行推送)
git - 删除与存储库关联的所有文件,保留其他文件
我已经将“dotfiles”Git 存储库克隆到我的主目录中,并且我正在尝试删除与之关联的所有文件。
如何安全地删除属于存储库的所有文件,而不会意外删除我的主目录中的任何其他文件?