我的本地 git 存储库中有很多未跟踪的文件。有人不小心推送了很多未跟踪的文件。现在,我想合并 origin/master 并收到:
错误:以下未跟踪的工作树文件将被结帐覆盖
我希望未跟踪的文件保留在我的存储库中,并且我不想删除它们。这些文件不应位于原始/主文件上。有什么优雅的方法可以从我这边解决这个问题吗?
我的本地 git 存储库中有很多未跟踪的文件。有人不小心推送了很多未跟踪的文件。现在,我想合并 origin/master 并收到:
错误:以下未跟踪的工作树文件将被结帐覆盖
我希望未跟踪的文件保留在我的存储库中,并且我不想删除它们。这些文件不应位于原始/主文件上。有什么优雅的方法可以从我这边解决这个问题吗?
以下步骤如何:
在我当地的主人上:
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
你怎么看?
您可以将文件提交到本地分支。您可以稍后通过切换到另一个分支并执行git reset HEAD^
(没有--hard
选项!)来恢复文件。恢复未跟踪文件后,您可以再次检出(希望已修复)主文件,并且您的未跟踪文件应该仍然存在。
但是,为什么不首先恢复其他人的更改呢?当然,已经推了,但他也可以推revert。那你应该没事了,再来一次。
干净的方法是将存储库克隆到单独的目录,从存储库中删除未跟踪的文件(或恢复提交),推送,删除克隆的存储库。