Вы видите функцию безопасности Мерзавца. Мерзавец отказывается обновлять удаленное ответвление с Вашим ответвлением, потому что главная фиксация Вашего ответвления не является прямым потомком текущей главной фиксации ответвления, к которому Вы продвигаете.
, Если бы это не имело место, то два человека, продвигающие в тот же репозиторий приблизительно в то же время, не знали бы, что была новая фиксация, входящая одновременно и кто бы ни продвинул в последний раз, потеряет работу предыдущего толкателя без любого из них понимающий это.
, Если Вы знаете, что Вы - единственный человек, продвигающий и Вы хотите продвинуть исправленную фиксацию или продвинуть фиксацию, что ветры поддерживают ответвление, можно 'вынудить' Мерзавца обновить удаленное ответвление при помощи эти -f
переключатель.
git push -f origin master
Даже это не может работать, поскольку Мерзавец позволяет удаленным репозиториям отказываться от нажатий non-fastforward в дальнем конце при помощи переменной конфигурации receive.denynonfastforwards
. Если это верно, причина отклонения будет похожа на это (отметьте 'удаленную отклоненную' часть):
! [remote rejected] master -> master (non-fast forward)
Для обхождения этого или необходимо изменить конфигурацию удаленного репозитория или как грязный взлом, можно удалить и воссоздать ответвление таким образом:
git push origin :master
git push origin master
В целом последний параметр к git push
использование формат <local_ref>:<remote_ref>
, где local_ref
название ответвления по локальному репозиторию и remote_ref
, является названием ответвления по удаленному репозиторию. Эта пара команды использует два shorthands. :master
имеет пустой указатель local_ref, что означает, продвигают пустое ответвление удаленной стороне master
, т.е. удаляют удаленное ответвление. Имя ответвления без [1 111] средства продвигает локальное ответвление с именем к удаленному ответвлению с тем же именем. master
в этой ситуации коротко для [1 113].
Thinkbot имеет плагин high_voltage для отображения статического содержимого: https: // github. com / thinkbot / high_voltage
зависит от структуры URL-адреса, если вы хотите, чтобы пути выходили из / (например, / about_us), тогда:
map.connect ':action', :controller => "static"
Это должно быть в самом конце вашего файла маршрутов, Throw ваши файлы .html.erb в app / views / static, и все готово.
например: добавление about_us.html.erb
, даст вам страницу по адресу /about_us.[1214 sizesThe item который у вас есть в вашем вопросе, отлично подходит для маршрута перехвата всех, где вы можете проанализировать массив, предоставленный вам в params [: path]
. Дополнительная информация на http://railscasts.com/episodes/46-catch-all-route
Учитывая, есть ли у вас 1 домашний контроллер с парными методами, такими как show, aboutus, privacy:
class HomesController < ApplicationController
def show
end
def privacy
end
def aboutus
end
end
Сопоставьте метод show со своим корнем и сопоставьте другой к некоторым именованным маршрутам, например
map.root :controller => "homes", :action => "show"
map.aboutus "/aboutus", :controller => "homes", :action => "aboutus"
map.privacy "/privacy", :controller => "homes", :action => "privacy"
И с представлением для каждого
app/views/homes/aboutus.html.erb --> you get http://localhost:3000/aboutus
app/views/homes/show.html.erb --> you get http://localhost:3000 (root)
app/views/homes/privacy.html.erb --> you get http://localhost:3000/privacy
. Все они используют один и тот же макет в app / views / layout / application.html.erb
Отображение действия не имеет смысла. Вы захотите отобразить шаблон (или файл) с макетом.
# Path relative to app/views with controller's layout
render :template => params[:path]
# ... OR
# Absolute path. You need to be explicit about rendering with a layout
render :file => params[:path], :layout => true
Вы можете обслуживать множество различных шаблонов с помощью одного действия с кэшированием страницы.
# app/controllers/static_controller.rb
class StaticController < ApplicationController
layout 'static'
caches_page :show
def show
valid = %w(static1 static2 static3)
if valid.include?(params[:path])
render :template => File.join('static', params[:path])
else
render :file => File.join(Rails.root, 'public', '404.html'),
:status => 404
end
end
end
Наконец, нам нужно определить маршрут.
# config/routes.rb
map.connect 'static/:path', :controller => 'static', :action => 'show'
Попробуйте получить доступ к этим статическим страницам. Если путь не включает допустимый шаблон, мы визуализируем файл 404 и вернем статус 404.
http: // localhost: 3000 / static / static1
http: // localhost: 3000 / static / static3
http: // localhost: 3000 / static / static2
Если вы посмотрите в app / public, вы увидите каталог static / с static1.html, static2.html и static3.html. После первого доступа к странице все последующие запросы будут полностью статичными благодаря кэшированию страницы.