2013-11-21 44 views
1

我從服務器簽出的分支,並添加更多的文件,但我不公告不存在的.gitignore了,我跑:git忘記.gitignore,如何取消提交?

git add ./* 
git commit "xx" 

有.class文件(及其他文件)是不是我想?現在我添加.gitignore

# 
*.class 
bin/ 
gen/ 

如何取消該提交併刪除所有.class,bin /和gen /?

+0

你不能只是刪除它們並提交? – podshumok

+0

可能重複的[如何撤消上一次Git提交?](http://stackoverflow.com/questions/927358/how-to-undo-the-last-git-commit) – devnull

+0

@podshumok:只是刪除和提交會從您的結帳中刪除文件,但不從您的存儲庫中刪除。 (對於較大的文件,這會使存儲庫大大膨脹。) – michas

回答

1

您可以撤消您使用

git reset HEAD^ 

提交後,你定你的.gitignore使用git add .添加的一切。

0

最好不要養成git add .的習慣。如果你正在提交,你可能想要知道你正在提交的內容,而不是僅僅假設你認爲它們是事實。例如,如果你確實碰巧不應該存在那些事情,你可以在做一個git reset unwanted_file_addition.txt後用git commit --amend來修改你的提交。

如果您推送包含機密信息的提交,您將需要做一些額外的工作。

看到這個最近發佈的GitHub Article在十月發佈,如果發生了。它展示瞭如何照顧這個問題。

它們也反映了我對更廣泛的筆劃添加文件的方式的看法:「如果您是從命令行工作,請避免使用git add。和git commit -a,而是使用git add filename和git rm文件名來單獨登臺文件。「這在一般的使用環境,如編輯交換文件,項目文件,如.project和操作系統文件可能會污染你的項目應該是在你的系統或帳戶.gitignore文件位於在/ etc/

文件或其他系統範圍的位置,更具體到您的個人工具,在您的個人文件夾中。