3

我的本地 git 存储库中有很多未跟踪的文件。有人不小心推送了很多未跟踪的文件。现在,我想合并 origin/master 并收到:

错误:以下未跟踪的工作树文件将被结帐覆盖

我希望未跟踪的文件保留在我的存储库中,并且我不想删除它们。这些文件不应位于原始/主文件上。有什么优雅的方法可以从我这边解决这个问题吗?

4

3 回答 3

3

以下步骤如何:

在我当地的主人上:

git stash --include-untracked

git reset --hard origin/master # (origin/master is fetched and it has all of the unnecessary files)

git rm {all of the unnecessary files that were pushed accidentially}

编辑您的 .gitignore 以包含所有您不想跟踪的文件。

git add .gitignore

git commit

git push

现在我在本地 master 和 origin/master 上没有任何未跟踪的文件。

我可以通过以下方式取回未跟踪的文件:

git stash apply

你怎么看?

于 2013-07-10T19:14:26.850 回答
3

您可以将文件提交到本地分支。您可以稍后通过切换到另一个分支并执行git reset HEAD^(没有--hard选项!)来恢复文件。恢复未跟踪文件后,您可以再次检出(希望已修复)主文件,并且您的未跟踪文件应该仍然存在。

但是,为什么不首先恢复其他人的更改呢?当然,已经推了,但他也可以推revert。那你应该没事了,再来一次。

于 2013-07-10T18:41:40.427 回答
2

干净的方法是将存储库克隆到单独的目录,从存储库中删除未跟踪的文件(或恢复提交),推送,删除克隆的存储库。

于 2013-07-10T18:39:44.957 回答