2009-12-31 58 views
115

首先,我是Git的新手。使用Git/GitHub刪除文件

我使用Finder在Mac上本地刪除了一堆文件。我希望刪除的文件不再顯示在當前分支中,但它們確實如此。

任何Git用戶都知道更新索引的命令?

+0

另請參閱http://stackoverflow.com/questions/492558/removing-multiple-files-from-a-git-repo-that-have-already-been - 從磁盤刪除 – 2012-11-15 10:51:40

回答

224

我認爲這將是你想要做什麼簡單的方法:

git add . -A 

那麼你就只是做:

git commit -m "removed some files" 

如上所述。

+0

謝謝。我在'bash'中寫了別名來完成上述操作。 令人驚歎。 – Zack 2010-02-20 16:36:30

+0

如果你在同一個「stage」中添加了一個文件,那麼git將會進行重命名。任何事情要做或應該分開進行? – Koen 2012-03-01 10:22:58

+12

-A標誌是做什麼的? – 2012-06-20 08:32:54

17

可以看到被刪除的文件,目前仍在 '跟蹤' 有:

git ls-files --deleted 

將一個分支的刪除文件,你可以這樣做:

git ls-files --deleted -z | xargs -0 git rm 

man git-rm

從索引或從工作樹和索引中刪除文件。 git-rm不會從你的工作目錄中刪除文件。 (沒有選項 13只從工作樹,但保持它在索引中刪除文件;使用/ bin/RM,如果你想這樣做)

最後,提交了「去除「做這樣的事情:

git commit -m "removed some files" 
+0

謝謝,接下來是什麼? – Zack 2009-12-31 00:43:19

+0

然後你需要提交修改 - 'git commit -m「刪除了一些文件」' – 2009-12-31 00:44:32

+0

是的,當然,謝謝 - – miku 2009-12-31 00:46:05

17

我不知道這是否已經添加自上次回答的Git,但我只是用

git add -u 
git commit -m "Removed some files" 

來實現同樣的事情。

+0

這適用於列出的用例,但這不僅僅是添加文件的刪除。它添加了以任何方式更改過的所有文件,因此這通常不是刪除所有已刪除文件的好方法,除非這是您所做的唯一更改。 – Alex 2016-08-24 21:23:18

2
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch deletefile.name' --prune-empty --tag-name-filter cat -- --all 
git commit -m "Removed deletefile.name" 
git push origin master --force 

將deletefile.name替換爲要刪除的文件。有關深入詳細的解釋,請閱讀好文章https://help.github.com/articles/remove-sensitive-data