如何从 github 获取 gem 的特定“提交”?

Posted

技术标签:

【中文标题】如何从 github 获取 gem 的特定“提交”?【英文标题】:How to get a specific "commit" of a gem from github? 【发布时间】:2011-09-01 11:22:12 【问题描述】:

我正在使用rails_admin,由于它处于(非常)活跃的开发阶段,因此时不时会出现错误。

据我所知,对于 github 中的 gem,没有 gem 的版本,所以我不能在 Gemfile 中使用 :version 键来声明 gem。

有没有办法可以将特定的提交(我知道这对我工作正常)“绑定”到 Gemfile?

我目前在我的 Gemfile 中有:

gem 'rails_admin', 
  :git => 'git://github.com/sferik/rails_admin.git'

我希望能够做这样的事情(例如“commit_id”):

gem 'rails_admin', 
  :git => 'git://github.com/sferik/rails_admin.git',
  :commit_id => "4e7d53e3c5c4c3c5c43c3"

这可能与github有关吗?

【问题讨论】:

【参考方案1】:

其中任何一个都应该有效:

gem 'rails', :git => 'git://github.com/rails/rails.git', :ref => '4aded'

gem 'rails', :git => 'git://github.com/rails/rails.git', :branch => '2-3-stable'

gem 'rails', :git => 'git://github.com/rails/rails.git', :tag => 'v2.3.5'

来源:How to install gems from git repositories

【讨论】:

仅仅是因为它们(和.git/HEAD)都是 git 中的引用 :)。更多:git-scm.com/book/en/v2/Git-Internals-Git-References【参考方案2】:

更短的版本:

gem 'rails', :github => 'rails/rails', :ref => '4aded'

或者,在 Ruby 1.9+ 中

gem 'rails', github: 'rails/rails', ref: '4aded'

【讨论】:

并将 github 默认源设置为 https:git_source(:github) do |repo_name| repo_name = "#repo_name/#repo_name" unless repo_name.include?("/") "https://github.com/#repo_name.git" end

以上是关于如何从 github 获取 gem 的特定“提交”?的主要内容,如果未能解决你的问题,请参考以下文章

来自 Github 的 gem rails 没有更新

如何从 GitHub 源安装 gem?

从分支获取最新 Git 提交哈希的命令

Opsworks - 如何从 GitHub 源安装 gem?

pygithub如何获取特定分支的最新提交

Instagram gem:获取带有特定主题标签的照片