gpt4 book ai didi

git - 有没有办法从 git 中取消跟踪文件?

转载 作者:行者123 更新时间:2023-12-04 14:59:01 26 4
gpt4 key购买 nike

这似乎是一个与 Untrack files from git temporarily 类似的问题但我找不到适合我的答案。

我正在运行一个 python-django 服务器并且在 git merge 上遇到了问题。

在项目开始时,开发人员在 git 上提交了所有 *.pyc 文件,这些提交在服务器上用作生产代码。

现在我已经从存储库中删除了所有 *.pyc 文件并制作了正确的 .gitignore 文件。

但是问题就出现在这里

提交前一切顺利,但如果我尝试将其与生产代码 merge ,它会发出错误。

Your local changes to the following files would be overwritten by merge:

当然,有问题的文件是 *.pyc 文件。

我假设这是因为 *.pyc 文件已经在某些提交中被跟踪,并且在尝试 merge 时,git 判断本地 *.pyc 文件将被内部具有 'delete: *.pyc' 的提交删除.


举例说明:

假设我在分支 A 上,想将分支 B merge 到分支 A。分支 B 的顶级提交没有 *.pyc 文件。分支 A 的顶部提交在工作树上有 *pyc 文件,但它们已被 git rm --cached 从索引(阶段)中删除。当我在分支 A 上尝试 git merge B 时,出现错误 Your local changes to the following files would be overwritten by merge:

git 有什么功能可以解决吗?


P.S.:我是 StackOverflow 的新手,英语不流利。如果我在这个问题上有任何错误或某些短语难以理解,请评论我。谢谢。


添加 git 状态:

我无法上传带有真实文件名的输出,但它看起来像下面这样。只是文件名不同。

  Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: files.pyc

最佳答案

可以 resort to using filter-branch, as in Naeem Khoshnevis's answer .如果您需要对包含 *.pyc 文件的“错误”提交做大量工作,这甚至可能是可行的方法。做这种工作的缺点是 filter-branch 的产品通常是一个新的、不兼容的存储库,这要求每个拥有原始存储库克隆的人都扔掉他们的克隆,并且煞费苦心地将他们在原始克隆上所做的任何工作复制到新的克隆上。1解决这个问题可能会更好:

  • *.pyc 文件只是字节编译的 Python 代码,由“真正的”Python 源代码生成。
  • 因此可以在 merge 之前和/或之后删除它们
  • 因此,您所要做的就是为 merge 步骤做好准备,然后确保当前提交和当前工作树中没有*.pyc 文件。然后,进行 merge 。如果这引入了一些 *.pyc 文件,那就这样吧:让它发生吧。然后重新删除文件并将此作为“修复 merge ”步骤提交。

您现在已经完成了有问题的 merge 。 merge 提交本身在 中有不正确的 *.pyc 文件这一事实并不是真正的问题除了无法测试 merge 提交本身在二分法期间。如果你不喜欢那样——以后可能会出现问题,因为没有明显的标记——你可以考虑制作一个 evil merge。使用 git merge -n (然后在提交 merge 之前删除 *.pyc 文件),或者在 merge 之后使用 git commit --amend用邪恶的 merge 代替正常的 merge 。

请注意,无论您采用这些不同方法中的哪一种,都会一些痛苦。这是不可避免的:之前有人犯了错误,现在每个人都在为此付出代价。你现在可以选择的是要经历哪个痛苦的过程,这取决于你认为它会有多痛苦。


1有一些方法可以自动执行其中的某些操作,尤其是在现代 Git 中和/或使用新的过滤器-repo 系统,但无论如何都很痛苦。

关于git - 有没有办法从 git 中取消跟踪文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67335284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com