git远程本地更改问题:合并将覆盖以下未跟踪的工作树文件:



我有一个repo,在.gitignore 中有一个名为/migrations的文件夹

它们是数据库迁移文件。

在本地和远程服务器上,它们将是不同的,我想保持它们的不同,然而,即使该文件夹在gitignore中,显然仍然存在一个冲突的问题

error: The following untracked working tree files would be overwritten by merge:
directory/backend/migrations/README
directory/backend/migrations/alembic.ini
directory/backend/migrations/env.py
directory/backend/migrations/script.py.mako
Please move or remove them before you merge.
Aborting

我如何通过保持本地和远程的迁移文件夹完全不受跟踪和不同,同时仍然能够无缝更新repo来解决这个问题。

这不是一个"冲突问题";。这只是Git遵循的一条规则,非常正确:你提议的合并包含的文件的路径与你在本地忽略的路径相同,Git不想随意覆盖它们(你也不希望Git这样做(。

您的repo中忽略迁移文件夹是不够的。它必须在每个人的副本中被忽略,并且在每个分支中都必须不存在。显然情况并非如此。

就我个人而言,在这种情况下,我会按照错误消息的建议:将麻烦的文件移到一边,这样就可以进行合并。然后再把他们带回来。例如,您可以将它们从工作文件夹移到桌面,进行合并,然后再次移回工作文件夹。或者,对于更像Git的方式:

  1. 执行包含未跟踪的工作树文件的git stash -u
  2. 进行合并
  3. 现在git restore将这四个文件从存储库中取出并放入工作树中

最新更新