我克隆了一个包含一些.csproj文件的项目。我不需要/喜欢我的本地csproj文件被Git跟踪(或在创建补丁时被提起),但很明显,项目中需要这些文件。

我已经将*.csproj添加到我的LOCAL.gitignore中,但文件已经在repo中。

当我键入gitstatus时,它显示了我对csproj的更改,我对跟踪或提交补丁程序不感兴趣。

如何从我的个人存储库中删除这些文件的“跟踪”(但将它们保存在源中,以便我可以使用它们),以便我在执行状态(或创建补丁)时不会看到更改?

是否有正确/规范的方法来处理这种情况?


当前回答

这是一个两步过程:

删除对文件/文件夹的跟踪-但将其保留在磁盘上-使用git rm—缓存现在,它们没有显示为“已更改”,但仍显示为git状态为-u的未跟踪文件将它们添加到.gitignore

其他回答

防止git监视文件或路径

git update-index --assume-unchanged [file-path]

并将其恢复使用

git update-index --no-assume-unchanged [file-path]

参考类似用例的回购https://github.com/awslabs/git-secrets

我假设您正在询问如何删除特定文件夹或bin文件夹中的所有文件,而不是单独选择每个文件。

您可以使用以下命令:git rm-r-f/<floder名称>\*确保您位于该目录的父目录中。此命令将递归地“删除”bin/或build/文件夹中的所有文件。所谓delete,我的意思是git将假装这些文件被“删除”,而这些文件将不会被跟踪。git确实将这些文件标记为处于删除模式。

请确保您的.gitignore已准备好迎接即将到来的提交。文档:git rm

我假设你试图从gittacking中删除一个文件。为此,我建议使用以下命令。

git更新索引--假设未更改

Ex-git更新索引——假设没有变化。gitignore.deide/compiler.xml

在搜索了很长时间之后,找到一种方法。在android studio项目中,在.gitconfig.like中别名一个git命令,在签出分支之前还原配置文件,然后跳过它,签出分支之后使用sed将配置文件更改为我的本地配置。签出和修改属性=!git update-index--no-skip-worktree local.properties&&git checkout local.pproperties&&git-checkout$1&&git update-index--skip-worktree本地.properties&&sed-i''s/.*sdk.dir.*/sdk.dir=\\/Users\\/run\\/Library\\/Android\\/sdk/g'local.properties&&:

忘了你的gitignore?

如果您在本地拥有整个项目,但忘记添加git-ignore,现在正在跟踪一些不必要的文件,请使用此命令删除所有内容

git rm --cached -r .

确保您处于项目的根位置。

然后你可以像往常一样

Add

git add .

犯罪

git commit -m 'removed all and added with git ignore'

Push

git push origin master

结论

希望这能帮助那些不得不对自己的.git进行更改的人。

它会删除整个缓存看看你的.gitignore添加要跟踪的文件推送至您的回购