Git:从拉取请求中排除已提交的文件

Git: exclude committed file from pull request

我有一个仓库,我已将我的东西推送到该仓库。我已经意识到我正在推动 .idea/workspace.xml,我应该忽略它(很多无用的配置内容)。

现在它在我的远程仓库上,我需要做一个拉取请求。 是否可以将违规文件排除在拉取请求之外?

问题是您不能通过删除 .idea/workspace.xml 的提交发送拉取请求,因为是否合并该拉取请求取决于存储库所有者。

因此您需要修改添加该文件的同一个提交。 要做到这一点,请使用 git rebase --interactive 获取就在您错误提交之前的提交的 SHA 例如。 ba0202e。然后执行以下操作:

$ git rebase --interactive ba0202e

然后它将打开一个编辑器,其中将列出所有提交。 只需找到您的错误提交,并将 pick 替换为 edit。 保存文件并关闭它。

现在删除文件.idea/workspace.xml

$ git rm --cached .idea/workspace.xml

它会将其从 git 中删除,但不会从您的本地系统中删除。

然后修改commit:

$ git commit --amend
$ git rebase --continue

现在您必须使用选项 -f 强制推送提交(这是不好的做法,但在您的情况下没有任何其他选项。)