从所有Git分支中删除文件(不能仅提交Git RM)

时间:2016-02-23 02:21:55

标签: git azure-devops

我的团队正在使用Visual Studio Online的Git系统,我们正试图找到一种方法来删除applicationhost.config文件(应该是每个团队成员的机器本地的,与Git同步的副本只是一个麻烦并且意味着必须在提交时撤消更改,或者下一个人必须重新启动visual studio才能重新生成它,如果他们引入其他人的文件)。

我已经尝试了一堆不同的git命令,从这一点开始简单地解开这个文件,我似乎无法让它工作。

git filter-branch --index-filter "git rm -f --cached --ignore-unmatch path/to/filename" -f HEAD --all 

这创建了每个提交(250)的副本,因为applicationhost.config文件已引入我们的repo。我没有把它拉进去掌握,因为我们担心250个提交被覆盖而无法撤消它们。

git update-index --assume-unchanged path/to/file 

我尝试了这个,看起来它确实忽略了你所在分支中的文件,但是当你尝试切换到另一个分支时,新分支将通知你applicationhost.config文件是不同的,并赢了不允许你换。它也使得切换变得更加困难,因为由于文件被忽略,您无法进行更改并撤消对该文件的更改。

git rm -f --cached --ignore-unmatch path/to/filename

这是最令人沮丧的,因为我相信它确实有效,但我无法承诺。我可以从主分支的直接拉出,创建一个新的本地分支,键入上面的rm命令,并在更改中查看以下内容:first。我无法将Untracked文件中的文件添加到文件中,单击无效。但是当我尝试单击提交按钮时,我得到的只是two(它表示没有任何提交)。这发生在我点击提交按钮的毫秒。

我有点不知所措,然后我怎么能真正得到我们所有的分支(我们可能有大约15-20)来停止跟踪applicationhost.config,而不需要重新添加所有250次提交它被添加了。如果只是我们可以运行的东西,推送到掌握,然后从master合并到我们的其他分支中,那就没问题了。

帮助?

1 个答案:

答案 0 :(得分:0)

  

自从applicationhost.config文件被引入我们的仓库以来,这创建了每个提交(250)的副本。

那是对的。提交是不可撤销的。你可以在任何回购中做的就是忘记它们,将所有分支和标签标签重新添加到历史中任何地方都没有坏部分的新提交。

创建所需的全部新历史记录,并强制推送或获取并在任何现有历史记录中重置它。