在我的分支上,我在.gitignore中有一些文件

在另一个分支上,这些文件不是。

我想将不同的分支合并到我的分支中,我不关心这些文件是否不再被忽略。

不幸的是,我得到了这个:

以下未跟踪的工作树文件将被合并覆盖

我如何修改我的pull命令来覆盖这些文件,而不需要我自己找到、移动或删除这些文件?


当前回答

我有同样的问题,每当我尝试合并主在我的本地分支它说

以下未跟踪的工作树文件将被合并M.xcworkspace/xcshareddata/swiftpm/Package.resolved覆盖

但以上任何一个答案对我都不起作用。当我做git状态没有未跟踪的文件,所以当我做git添加。没有文件得到阶段性,因此存储不能解决问题,也不能像上面回答的那样强制签出。

我可以通过运行上面提到的命令来解决这个问题,但更重要的是,我必须关闭Xcode(即使在运行干净命令后,它也可能会创建导致我出现问题的文件)。

Git clean -dfxn(检查什么可以删除)

Git清除-d -fx。(删除上述文件)

其他回答

唯一对我有用的命令是: (请注意,这会删除所有本地文件)

git fetch --all
git reset --hard origin/{{your branch name}}

您可以尝试命令从本地清除未跟踪的文件

Git 2.11及更新版本:

git clean  -d  -f .

Git的旧版本:

git clean  -d  -f ""

其中-d可以替换为:

-x忽略的文件以及Git不知道的文件也会被删除。 除未跟踪文件外,删除未跟踪目录。 -f命令用于强制运行。

下面的链接也会很有帮助。

步骤1:清理工作副本

a)将本地更改保存在Stash上 如果想要保存本地更改,可以安全地将它们存储在Stash上。它们将是可用的,以防你以后想要回来。

$ git stash --include-untracked

b)丢弃局部更改 如果你确定你不再需要它们,你可以完全放弃你的本地更改:

$ git reset --hard

c)如果你也有未跟踪的/新的文件,你将不得不使用“git clean”命令来清除这些文件:

$ git clean -fd

第二步:再拉一次 当你清理了所有可能被覆盖的本地更改/未跟踪的文件后,pull将最终工作:

$ git pull

如果这是一次性操作,那么在执行拉取操作之前,可以从工作目录中删除所有未跟踪的文件。阅读如何从当前Git工作树中删除本地(未跟踪)文件?有关如何删除所有未跟踪的文件的信息。

请确保不要意外删除未跟踪的文件,你仍然需要;)

对于那些不知道的人,git忽略了文件和文件夹中的大写/小写名称差异。当您用不同的情况将它们重命名为完全相同的名称时,结果是一场噩梦。

当我将文件夹从“Petstore”重命名为“Petstore”(大写到小写)时遇到了这个问题。我已经编辑了我的.git/config文件以停止忽略大小写,进行了更改,压缩了我的提交,并保存了我的更改以移动到不同的分支。我不能将我所存储的更改应用到另一个分支。

The fix that I found that worked was to temporarily edit my .git/config file to temporarily ignore case again. This caused git stash apply to succeed. Then, I changed ignoreCase back to false. I then added everything except for the new files in the petstore folder which git oddly claimed were deleted, for whatever reason. I committed my changes, then ran git reset --hard HEAD to get rid of those untracked new files. My commit appeared exactly as expected: the files in the folder were renamed.

我希望这能帮助你避免我同样的噩梦。