2015-04-18 155 views
1

更改工作目錄,以便我最近在做我的工作目錄做刪除本地提交不Git中

git add -A 

的傻事其中添加了一些大的數據文件(> 1 GB),我不想加。愚蠢的是,我承諾,當試圖推向Github時,Github抱怨我沒有足夠的空間,因此無法推動(完全合理)。鑑於我處於某些代碼的中間,我推進了我的項目,在原始提交之上提交了一些提交大量數據文件的提交。所以現在,我堅持4個不能推送的本地提交,因爲我在第一次提交中有這些大數據文件。是否有任何干淨的方法來解決這個沒有改變我當前的工作目錄中的任何東西(自第一次提交大文件以來,我已經添加了很多代碼更改)。

謝謝!

+0

Git分支*完全一次性*直到你推/分享。不要擔心創建新的本地提交(它實際上是最安全的方法!)。只需移動大量提交的「下游」 - 一種方法就是重新綁定。 – user2864740

+0

對於重新定義,請參閱http://git-scm.com/docs/git-rebase,因爲您已經提交當前工作目錄,所有更改都可以返回。 – user2864740

回答

2

首先藏匿/提交你已經離開的任何代碼,然後重訂回承諾要編輯,(一個簡單的方法我用的是正從git的日誌哈希並添加~以表明我希望父)

git rebase -i a1b2c3~ # replace with your hash and don't forget the ~ 

你會得到一個交互式編輯器,改變不良的承諾從pickedit或只是e,然後保存退出

底墊將在錯誤的停止提交,現在你要刪除的大文件,但同時你不想刪除它,所以你可以添加一個--cachedgit rm

git rm --cached /path/to/huge/file 

這將從指數而不是從本地系統中刪除它,然後我們要保存此更改提交

git commit --amend # or just --am 

現在承諾不再包含了巨大的文件,所以我們告訴git的繼續重訂

git rebase --continue 

這將加入剩餘的提交,現在你會發現,你有沒有跟蹤的大文件。

如果你藏起來了,那麼現在將是去除土壤的時間。

0

已經有完全相同的問題(對信),它需要一整天才能找到答案。在這裏找到...

How do I delete unpushed git commits?

而是你失去工作目錄的變化硬復位的,這是一個軟一個。容易如餡餅(一旦你知道如何,1意味着回去1承諾..)

git reset --soft HEAD~1