如何使用Visual Studio Tools for Git将跟踪文件移动到未跟踪

RRR*_*RSR 6 git sql-server-ce team-explorer visual-studio-2013

开始尝试使用git.无意中将项目中的所有文件添加到了团队资源管理器中的"包含的更改".我在最初的提交中承诺了所有.其中一个文件是SQL CE 4.0(基于文件)数据库.我明显在那里搞砸了.我不想跟踪数据库,也不想最终将数据库恢复到以前的某个点.

我的问题是我不知道如何将SQL CE 4.0 sdf文件从包含的更改移动到未跟踪.我对git没有经验,迄今为止我所知道的是团队资源管理器UI中提供给我的东西.

那么,如何将文件从(已提交和)跟踪移动到未跟踪?在成功操作结束时,我希望将sdf文件放在"未跟踪"的bin中,并希望将其从已经被推送到远程仓库的提交中删除.我只是不确切地知道从哪里开始和做什么

jes*_*ing 6

要解决它,只需删除它并提交它,这将从最新版本的存储库中删除数据库.从Visual Studio UI开始,这仍然很容易.如果您需要保留sdf,请将其复制到临时位置.

要从git中删除它(并将其保留在文件系统上),您可以从命令行发出remove命令.这不能通过Visual Studio UI轻松完成.

git rm --cached yourfile.sdf
Run Code Online (Sandbox Code Playgroud)

要从存储库中完全删除不需要的文件,您需要求助于命令行.这将从您的历史记录中删除该文件.

警告:这将重写历史记录,导致所有提交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
Run Code Online (Sandbox Code Playgroud)

该文件将不再被引用,并将在某些时候从repo中删除.要告诉git立即删除文件,您需要运行:

git update-ref -d refs/original/refs/heads/master
git reflog expire --expire=now --all 
git gc --prune=now --aggressive
Run Code Online (Sandbox Code Playgroud)

最后将这些更改提交到您的远程:

git push origin --all --force
Run Code Online (Sandbox Code Playgroud)

此强制推送需要TFS中的其他权限.通过默认情况下只有项目管理员有此权限.

有关更多说明,请阅读相关问题的链接答案.

如果您的远程仓库具有本地没有的分支,则可能需要先拉出所有分支.你可以这样做:

git pull --all
Run Code Online (Sandbox Code Playgroud)