Git拉取而不覆盖文件

Git拉取而不覆盖文件,git,overwrite,git-pull,Git,Overwrite,Git Pull,我有一个项目,但有些文件很大,在/data/guilds/*中,我没有提交 我怎样才能用git拉取的方式获取所有最近的代码,而不删除不存在的文件/data/guilds在实际源代码中不存在,因此在提取时不应受到影响 当我尝试git pull时,我发现: error: Your local changes to the following files would be overwritten by merge: data/guilds/500785463624335390.json

我有一个项目,但有些文件很大,在
/data/guilds/*
中,我没有提交

我怎样才能用git拉取的方式获取所有最近的代码,而不删除不存在的文件<代码>/data/guilds在实际源代码中不存在,因此在提取时不应受到影响

当我尝试git pull时,我发现:

error: Your local changes to the following files would be overwritten by merge:
        data/guilds/500785463624335390.json
        data/guilds/611278159555461180.json
        data/guilds/684492926528651336.json
        data/guilds/753312192165838938.json
        data/stats.json
您可能不会提交这些文件,但有人提交了。他们在一些地方。特别是,它们存在于您要求Git合并的提交中

如果要避免使用它们,请从避免使用git pull开始,因为这意味着运行git fetch,然后运行第二个git命令。第二个命令由您决定,但通常必须是
git merge
git rebase
中的一个。如果您没有自己明确地或通过设置自己的默认值来做出选择,Git将使用的默认值是运行
Git merge

git merge
命令使用三个提交:

  • 合并基提交,包含您和他们(无论“他们”是谁)所拥有的所有文件,提供您开始时拥有的新提交
  • 当前提交,从当前分支的顶端开始
  • 他们最近的一次提交,就是你告诉你自己的Git合并
在本例中,所发生的情况是,无论是谁提交了您要求Git合并的提交,都已将这些文件添加为新文件,因为这是一个共同的起点。您尚未将其添加到您的提交中,但他们已将其添加到他们的提交中

让Git将缺少这些文件的当前提交状态组合起来;它们只是在您的工作树中,而不是在您当前的提交中。他们的工作要求Git从头开始创建这些文件,其中包含您告诉Git合并的提交中存在的数据。如果Git这样做,这将清除那些未跟踪的文件,用您请求Git合并的提交中的跟踪文件替换它们


您可以按照Git的建议(您在这里截取了它)提交这些文件或将它们移开,但这可能不是正确的做法。对你来说不幸的是,没有一件正确的事情可以做。事实上,你可能不得不做一些错误的事情。在projects.gitignore文件中添加/data/guilds文件夹。Git将忽略itI中的所有内容,并将/data/guilds/*和/data/stats.json添加到.gitignore中,但它仍然表示它们将被忽略overwritten@mosharaf:太晚了:那些文件正在提交中。不能更改任何现有提交;这些文件始终处于这些提交中。“您对以下文件的本地更改将被合并覆盖”表示远程中也存在相同的文件。您不是在本地跟踪文件,而是在远程跟踪相同的文件