如何从本地和远程的git repo中删除文件

如何从本地和远程的git repo中删除文件,git,local,remote-access,Git,Local,Remote Access,我希望我更了解吉特 我的repo中有一些项目设置文件,每次提交项目时都会与同事的文件冲突。不完全确定原因,但现在是时候从回购协议中删除这些文件了,因为它们会产生噪音。我不能用这个来救我的命 在开始之前,我确保我的分支完全是最新的遥控器。然后,我用 git filter-branch -f --index-filter \ 'git rm -r --cached --ignore-unmatch *.csproj' HEAD 由于备份方面的一些问题,我添加了-f标志,因为我已经运行过几次了 运

我希望我更了解吉特

我的repo中有一些项目设置文件,每次提交项目时都会与同事的文件冲突。不完全确定原因,但现在是时候从回购协议中删除这些文件了,因为它们会产生噪音。我不能用这个来救我的命

在开始之前,我确保我的分支完全是最新的遥控器。然后,我用

 git filter-branch -f --index-filter \ 'git rm -r --cached --ignore-unmatch *.csproj' HEAD
由于备份方面的一些问题,我添加了
-f
标志,因为我已经运行过几次了

运行此命令似乎可以从我的repo中删除所有文件。但是,当我尝试将此更改推送到服务器时,它会给出一个错误,指出我的repo比远程版本晚2次提交。它建议我拉,然后撤消上面的命令


我错过了什么才能将此更改发送到我的服务器?(Bitbucket)

如果我正确理解您的问题,您将无法推送到远程存储库,因为您的本地历史记录与远程历史记录不匹配。当您使用
rebase
filter branch
在本地更改hit commit时,通常会发生这种情况

如果将本地更改推送到远程,将重写项目的部分或全部历史记录。这意味着项目中的每个开发人员在尝试
git pull
时都会遇到麻烦,因为现在他们的本地历史与远程用户的历史不同。在这样的情况下,您通常希望向您的合作开发人员传达发生这种情况的信息,因为如果他们不知道您的
过滤器分支
做了什么,那么这可能会非常混乱,也会非常耗时

话虽如此,我相信您正在为
gitpush
寻找
-force
选项。您想运行git push--force origin master。顾名思义,这将用本地git历史记录覆盖远程中的任何内容

请在你做这件事之前阅读,如果你有任何问题,请问更多的问题,因为这是一件具有潜在破坏性的事情

编辑: 我知道你的同事有两个选择。他们可以走
提取/重置
路线,也可以走
重设基础
路线

fetch/reset
路径需要将同事的本地存储库重置为与远程存储库完全相同的存储库。这可以通过以下方式实现:

git fetch origin && git checkout master
git reset --hard origin/master
rebase
路线需要在新清理的主控台上应用同事的本地提交。在交互模式下,他们将有机会在包含每个提交之前检查它。如果提交包含您想要删除的文件,他们可以简单地忽略它。这可以通过

git获取 git rebase-一级原始/主

如果双方都同意您的存储库应该是规范的存储库,那么第一个选项更可取,因为它更快。第二种方法反过来为您提供了更细粒度的控制


您可以查看这样一个问题,该问题更彻底地解决了用力推后拉的问题:

因此,我告诉我的同事将他的版本与遥控器一起更新。然后我用这个--force选项覆盖遥控器。然后他做了一个git拉来更新他的版本?我在我的.gitignore文件中添加了一些文件,并试图将它们从这个repo中删除。事实证明这很复杂。