2016-10-03 105 views
0

在处理某些文件时,我为每个文件创建了一个备份文件,但是在推送和重新绑定之前,我忘记了删除它们。我曾多次承诺,但尚未推出。如何从推Git提交中删除文件

这里是我的步骤:

git add -A 
git commit -m <message> 

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

我现在的分支机构不具有备份文件了。只需用更新的分支推送和重新分配主设备就足够了吗?

回答

2

你可以做的是做软重置,删除文件,然后提交和推送。

  1. 做一个git log找到的承诺,立即哈希你添加的文件之前
  2. 做一个软复位git reset --soft <hash>(插入的提交的哈希值)
  3. 删除不需要的文件

  4. 阶段并提交所有文件。

然而,这会压缩你对分支提交的所有提交。如果这对你是可以接受的,那么这将是你需要的一切。如果你想保留所有的提交历史记录,那么你可以在添加文件之前创建一个新的分支,然后樱桃选择你添加文件的提交,但在进行提交之前删除不需要的文件,然后提交只是你想要更新的文件。在你做完这些之后,你可以选择其他的提交到该分支,然后推送。

+0

感谢您的简单解决方案。我在想什么。自提交以来,我对其他文件进行了一些更改。软重置是否使我修改的文件保持最新? – Nik

+1

是的。软重置会保留对所做文件的所有更改,但只会删除所有提交。即,如果您执行软重置,然后只进行提交,则与压缩提交相同。 –

1

如果你有一个提交推,那么你可以直接删除文件然后执行:

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

这将推动改变,而不会产生新的承诺。