2016-10-03 75 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 

這將推動改變,而不會產生新的承諾。