我想從我的git倉庫中刪除兩個不存在的文件。我應該在鏡像回購還是原版上運行BFG?
我把他們,承諾,並試圖推動,但他們太大了。所以我把他們拿出來,繼續工作,然後承諾,試圖推動,但它仍然給我同樣的錯誤。我想他們仍然在某個地方的歷史。
我想我讓問題變得更糟,因爲我一直在該分支工作,並提交了更多的提交。然後,我將該分支合併回主分支。
所以我搜索了一個解決方案,發現bfg。
但頁面上的說明對我沒有意義。
首先,
$ git clone --mirror git://example.com/some-big-repo.git
我應該在哪裏從克隆? github.com上的我的遠程倉庫沒有提交和合並,因爲我添加了大文件。但是這些指示讓我覺得我應該從那裏得到它。 (我從我的本地回購克隆。)
接下來,
$ java -jar bfg.jar --strip-blobs-bigger-than 100M some-big-repo.git
是some-big-repo.git
鏡像回購或當地正常的回購? (我用鏡像回購了這一點)。
然後我檢查了我的歷史已經更新,並試圖,
$ cd some-big-repo.git
$ git reflog expire --expire=now --all && git gc --prune=now --aggressive
(我是這樣做的鏡像克隆)我得到了一個錯誤。
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To /home/cole/main_repo
+ 94b9a0d...c7c4317 work -> work (forced update)
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to '/home/cole/main_repo'
這對我有意義。是的,我目前有master
檢出。但是,那麼我還應該做些什麼呢?如果我以另一種方式嘗試,我只能看到問題的發生。
我居然以令人驚訝的簡單方式工作。我只需要'git push https://github.com/'。然後它沒有試圖推到當地的回購協議並給我那些錯誤。但是當我從回購中購買新的克隆時,它錯過了一些東西。我剛剛從我的本地回購中添加了他們,並承諾並推出。現在我都清新干淨。我希望這就是它應該如何工作。 –