如何从推送的Git提交中删除文件

时间:2016-10-03 16:19:10

标签: git

在处理某些文件时,我为每个文件创建了一个备份文件,但是在推送和重新定位之前我忘记删除它们。我已经多次承诺,但还没推迟。

以下是我的步骤:

git add -A
git commit -m <message>

git checkout master
git pull upstream master
git push
git checkout "branch"
git rebase master

我当前的分支机构不再拥有备份文件了。用我更新的分支来推送和修改master是不够的?

2 个答案:

答案 0 :(得分:2)

您可以做的是进行软重置,删除文件,然后提交并推送。

  1. 在添加文件
  2. 之前,立即执行git log查找提交的哈希值
  3. 执行软重置git reset --soft <hash>(插入提交的哈希值)
  4. 删除所有不需要的文件

  5. 分阶段并提交所有文件。

  6. 然而,这会将您对分支所做的所有提交压缩到单个提交。如果这对你来说是可以接受的,那么这就是你所需要的。如果您希望保留所有提交历史记录,那么您可以在添加文件之前创建新分支,然后选择您添加文件的提交,但在进行提交之前删除不需要的文件,然后提交只是你想要更新的文件。执行此操作后,您可以选择任何其他提交到该分支,然后再推送。

答案 1 :(得分:1)

如果您推送了提交,那么您可以直接删除文件,然后执行:

git add .
git commit --amend --no-edit
git push origin <your branch name> -f

这将推送更改而不生成新的提交。