如何使用 Visual Studio Tools for Git 将跟踪的文件移动到未跟踪的位置
Posted
技术标签:
【中文标题】如何使用 Visual Studio Tools for Git 将跟踪的文件移动到未跟踪的位置【英文标题】:How to Move a Tracked File to Untracked using Visual Studio Tools for Git 【发布时间】:2015-04-30 18:33:07 【问题描述】:开始尝试 git。无意中将项目中的所有文件添加到团队资源管理器中的“包含的更改”中。我在初始提交中提交了所有内容。其中一个文件是 SQL CE 4.0(基于文件)数据库。我显然在那里搞砸了。我不想跟踪数据库,也不想最终将数据库恢复到以前的某个点。
我的问题是我不知道如何将 SQL CE 4.0 sdf 文件从包含的更改移动到未跟踪的更改。我对 git 没有经验,迄今为止我所知道的只是 Team Explorer UI 中提供给我的功能。
那么,如何将文件从(已提交和)跟踪到未跟踪?在成功操作结束时,我希望将 sdf 文件放在“未跟踪”bin 中,并希望将其从已推送到远程仓库的提交中删除。我只是不知道从哪里开始以及做什么
【问题讨论】:
【参考方案1】:要取消跟踪,只需将其删除并提交,这将从最新版本的存储库中删除数据库。这在 Visual Studio UI 中仍然很容易。如果您需要保留 sdf,请将其复制到临时位置。
要将其从 git 中删除(并将其保留在文件系统中),您可以发出 remove command from the commandline。这在 Visual Studio UI 中是不容易做到的。
git rm --cached yourfile.sdf
要从存储库中完全删除不需要的文件,you'll need to resort to the commandline。这将从您的历史记录中删除该文件。
警告:这将重写历史,导致您的所有提交 ID 更改。 警告
git filter-branch --prune-empty -d c:\temp\tempfolder
--index-filter "git rm --cached -f --ignore-unmatch yourfile.sdf"
--tag-name-filter cat -- --all
该文件将不再被引用,并将在某个时候从 repo 中删除。要告诉 git 立即删除文件,您需要运行:
git update-ref -d refs/original/refs/heads/master
git reflog expire --expire=now --all
git gc --prune=now --aggressive
最后将这些更改提交到您的遥控器:
git push origin --all --force
此强制推送需要 TFS 中的额外权限。 default only Project Administrators have this permission.
如需更多解释,请阅读相关问题的链接答案。
如果你的远程仓库有你本地没有的分支,你可能需要first pull all branches。你可以这样做:
git pull --all
【讨论】:
试过 git rm --cached StyarterSite.sdf。它在解决方案资源管理器中显示为已排除(并转到团队资源管理器中的“排除”文件夹 - 我期待“未跟踪”文件夹)。当我提交不相关的更改时,sdf 文件移出排除的文件夹并再次显示在解决方案资源管理器中作为签入!如果我在数据库中进行更改,它会再次显示在“排除”文件夹中的团队资源管理器中。底线: rm 不会“从 git 中删除它”。它仍然在本地和远程的存储库中。我错过了什么吗? 要将其从历史记录和遥控器中永久删除,您还需要执行其他步骤。您可能还需要将该文件添加到您的 gitignore 文件中。以上是关于如何使用 Visual Studio Tools for Git 将跟踪的文件移动到未跟踪的位置的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Visual Studio Tools for Git 将跟踪的文件移动到未跟踪的位置
Visual Studio 2013 Tools for Unity安装目录,Visual Studio 2013 Tools.unitypackage
如何在 Sql Data Tools Visual Studio 2010 中查看 <二进制数据> 内容?
如何自动化(从命令行)安装 Visual Studio Build Tools 构建环境,适用于 C++、.NET、C# 等