我從服務器簽出的分支,並添加更多的文件,但我不公告不存在的.gitignore了,我跑:git忘記.gitignore,如何取消提交?
git add ./*
git commit "xx"
有.class文件(及其他文件)是不是我想?現在我添加.gitignore
#
*.class
bin/
gen/
如何取消該提交併刪除所有.class,bin /和gen /?
我從服務器簽出的分支,並添加更多的文件,但我不公告不存在的.gitignore了,我跑:git忘記.gitignore,如何取消提交?
git add ./*
git commit "xx"
有.class文件(及其他文件)是不是我想?現在我添加.gitignore
#
*.class
bin/
gen/
如何取消該提交併刪除所有.class,bin /和gen /?
您可以撤消您使用
git reset HEAD^
提交後,你定你的.gitignore
使用git add .
添加的一切。
最好不要養成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/
文件或其他系統範圍的位置,更具體到您的個人工具,在您的個人文件夾中。
你不能只是刪除它們並提交? – podshumok
可能重複的[如何撤消上一次Git提交?](http://stackoverflow.com/questions/927358/how-to-undo-the-last-git-commit) – devnull
@podshumok:只是刪除和提交會從您的結帳中刪除文件,但不從您的存儲庫中刪除。 (對於較大的文件,這會使存儲庫大大膨脹。) – michas