簡體   English   中英

Rails 3 / Git / Bundler致命無法解析對象

[英]Rails 3/ Git/ Bundler Fatal could not parse object

嘗試捆綁安裝時,我收到以下錯誤

Fatal could not parse object '8c11dd........
Git error: command git reset --hard '8c11dd

If this error persists you can try removing the cache directory.

刪除緩存目錄沒有成功,有沒有人見過這個錯誤?

Windows 7 64位

當我跨服務器移動存儲庫時遇到同樣的錯誤。 通過刪除Gemfile.lock並運行bundle install解決它。 這生成了一個更新的Gemfile.lock,有助於解決錯誤。

如果您使用Capistrano刪除(共享/)緩存副本應解決問題。

這里的許多海報是正確的,因為它很可能與Gemfile.lock由於存儲庫移動或重新定位而不同步有關,但是像其他人指出的那樣,刪除它並不是一個明智的決定。 檢查Gemfile.lock並找到有問題的repo的GIT條目。 要檢查的重要一點是它指向的revision元數據屬性...它很可能指向不再存在的錯誤修訂哈希。

我的建議是通過將其與實際的Repo日志文件交叉引用來手動編輯它以指向您想要下拉的分支(因此您確保它與實際Gemfile中實際存在的那個一致),如下所示:

GIT
  remote: https://github.com/YourUserOrOrganization/your-gem-repo.git
  revision: <UPDATE AND FIX ME!>
  specs:
    some-random-dep1 (2.4.3)
      some-random-dep2 (>= 1.7.9)
      some-random-dep3 (>= 1.6.7)

存儲庫必定發生了一些事情。 在我的情況下,它被刪除/移動。 所以我只是改變了git url。

如果你的:git =>指向github,那么訪問github項目的頁面可能是個好主意。

當我切換到不同的github存儲庫時,我使用set :deploy_via, :remote_cache與Capistrano有同樣的問題。

我Capistrano的食譜是指向新的分支,但在遠程服務器上高速緩存仍然為origin指向舊的存儲庫,因此它並沒有發現新的提交我推到新的分支。

通過在每個遠程服務器上執行來修復:

git remote set-url origin <new fork>

在我的情況下,我用於gem的git分支已合並為master並刪除了分支。 更新我的Gemfile ,刪除Gemfile.lock ,並重新運行bundle解決了它。

您可以將'--source'標志與'bundle update'一起使用。 所以它將是:

bundle update --source your_gem

當強制推送到Gemfile中引用的git repo之類的更改時會發生此問題。

解決方案是在Gemfile中注釋gem行,運行bundle,取消注釋並再次捆綁。 然后Gemfile.lock將引用有效的git修訂版。

我想它也會有所幫助: bundle update my_gem_name

我正在構建一個寶石,問題與其他答案有點不同。

我針對Gemfile的特定版本,但出於開發目的,我更改了bundle config以獲取本地版本。 我在我的本地機器上設置了一個不同的版本,這使得Gemfile.lock目標在specs其他東西。

這個文件是通過服務器通過git發送的,服務器顯然無法訪問這樣的gem版本...

要修復它,只需在你的寶石中指定一個VERSION ,相應於你正在開發/推動的那個,它應該沒問題。

gem "my-gem", git: "https://github.com/Loschcode/my-gem.git", branch: "master", tag: "v0.2.2"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM