剛上傳了vs項目到github,但是忘記搞gitignore文件,導致項目上傳的體積太大,
現在不知道怎麼辦了?
刪除裏麵所有文件,寫好gitignore文件後重新commit然後push?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
git rm -r --cache . git add . git commit -m "gitignore working"
第一次提交問題,系統半天沒有審核過,於是去搜了下, 事實上我昨晚從stackoverflow上面找到了答案。不過還是要謝謝各位。 http://stackoverflow.com/questions/1139762/gitignore-file-not-ignoring
請輸入連結描述
如果你想用腳本的方式修改大量的提交,還有一個重寫歷史的選項可以用——例如,全局性地修改電子郵件地址或者將一個文件從所有提交中刪除。這個命令是filter-branch,這個會大面積地修改你的歷史,所以你很有可能不該去用它,除非你的專案尚未公開,沒有其他人在你準備修改的提交的基礎上工作。儘管如此,這個可以非常有用。你會學習一些常見用法,藉此對它的能力有所認識。
從所有提交中刪除一個文件 這個經常發生。有些人不經思考使用git add .,意外地提交了一個巨大的二進位文件,你想將它從所有地方刪除。也許你不小心提交了一個包含密碼的文件,而你想讓你的專案開源。 filter-branch大概會是你用來清理整個歷史的工具。要從整個歷史中刪除一個名叫password.txt的文件,你可以在filter-branch上使用--tree-filter選項:
$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd (21/21) Ref 'refs/heads/master' was rewritten --tree-filter選項會在每次檢出項目時先執行指定的指令然後重新提交結果。在這個例子中,你會在所有快照中刪除一個名叫 password.txt 的文件,無論它是否存在。如果你想刪除所有不小心提交上去的編輯器備份文件,你可以執行類似git filter-branch --tree-filter 'rm -f *~' HEAD的指令。
你可以觀察到 Git 重寫目錄樹並且提交,然後將分支指標移到末尾。一個比較好的方法是在一個測試分支上做這些然後在你確定產物真的是你所要的之後,再 hard-reset 你的主分支。要在你所有的分支上運行filter-branch的話,你可以傳遞一個--all給命令。
將一個子目錄設定為新的根目錄 假設你完成了從另外一個程式碼控制系統的導入工作,得到了一些沒有意義的子目錄(trunk, tags等等)。如果你想讓trunk子目錄成為每一次提交的新的專案根目錄,filter-branch也可以幫你做到:
$ git filter-branch --subdirectory-filter trunk HEAD Rewrite 856f0bf61e41a27326cdae8f09fe708d679f596f (12/12) Ref 'refs/heads/master' was rewritten 現在你的專案根目錄就是trunk子目錄了。 Git 會自動刪除不對這個子目錄產生影響的提交。
雷雷
提供一個比較小白的解決方法: 進入專案-->Setting-->Delete this Repository 然後你再重新建造一個repo就完了
你需要用
git reset
詳細可以查看 Git的撤消操作 - 重置, 簽出 和 撤消: http://www.liuhui998.com/4_9.html
假設,你想要取消所有的改變,回到最近一次的提交,命令如下:
$ git reset --hard HEAD
專案主頁——>Settings——>Delete this Repository——>從新提交 好吧,我也不太會用
先備份 或先commit (血的教訓)
git reset --hard YOUR HEAD
YOUR HEAD
如何查詢提交記錄的head
git reflog || git log
git rm -r --cache . git add . git commit -m "gitignore working"
第一次提交問題,系統半天沒有審核過,於是去搜了下, 事實上我昨晚從stackoverflow上面找到了答案。不過還是要謝謝各位。 http://stackoverflow.com/questions/1139762/gitignore-file-not-ignoring
請輸入連結描述
從所有提交中刪除一個文件 這個經常發生。有些人不經思考使用git add .,意外地提交了一個巨大的二進位文件,你想將它從所有地方刪除。也許你不小心提交了一個包含密碼的文件,而你想讓你的專案開源。 filter-branch大概會是你用來清理整個歷史的工具。要從整個歷史中刪除一個名叫password.txt的文件,你可以在filter-branch上使用--tree-filter選項:
$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd (21/21) Ref 'refs/heads/master' was rewritten --tree-filter選項會在每次檢出項目時先執行指定的指令然後重新提交結果。在這個例子中,你會在所有快照中刪除一個名叫 password.txt 的文件,無論它是否存在。如果你想刪除所有不小心提交上去的編輯器備份文件,你可以執行類似git filter-branch --tree-filter 'rm -f *~' HEAD的指令。
你可以觀察到 Git 重寫目錄樹並且提交,然後將分支指標移到末尾。一個比較好的方法是在一個測試分支上做這些然後在你確定產物真的是你所要的之後,再 hard-reset 你的主分支。要在你所有的分支上運行filter-branch的話,你可以傳遞一個--all給命令。
將一個子目錄設定為新的根目錄 假設你完成了從另外一個程式碼控制系統的導入工作,得到了一些沒有意義的子目錄(trunk, tags等等)。如果你想讓trunk子目錄成為每一次提交的新的專案根目錄,filter-branch也可以幫你做到:
$ git filter-branch --subdirectory-filter trunk HEAD Rewrite 856f0bf61e41a27326cdae8f09fe708d679f596f (12/12) Ref 'refs/heads/master' was rewritten 現在你的專案根目錄就是trunk子目錄了。 Git 會自動刪除不對這個子目錄產生影響的提交。
雷雷
提供一個比較小白的解決方法: 進入專案-->Setting-->Delete this Repository 然後你再重新建造一個repo就完了
你需要用
詳細可以查看 Git的撤消操作 - 重置, 簽出 和 撤消: http://www.liuhui998.com/4_9.html
假設,你想要取消所有的改變,回到最近一次的提交,命令如下:
專案主頁——>Settings——>Delete this Repository——>從新提交 好吧,我也不太會用
先備份 或先commit (血的教訓)
如何查詢提交記錄的head