У вас есть как минимум два варианта. Первый использует капистрано. Следуя шагам здесь , вы можете настроить следующий скрипт capistrano:
namespace :deploy do
desc 'Show deployed revision'
task :revision do
on roles :app do |host|
within current_path do
info "#{host}: #{capture :cat, 'REVISION'}"
end
end
end
end
Это позволит вам позвонить capistrano production deploy:revision
. который выдаст что-то вроде этого:
$ cap production deploy:revision
00:00 deploy:revision
app01.example.com: cf8734ece3938fc67262ad5e0d4336f820689307
app02.example.com: cf8734ece3938fc67262ad5e0d4336f820689307
app03.example.com: cf8734ece3938fc67262ad5e0d4336f820689307
Вот ваш коммит ha sh, cf8734ece3938fc67262ad5e0d4336f820689307
. Затем вы можете просто git checkout d231b7abd6e4183e037817780738c54f1fbaf1fa
, что приведет вас к тому, что вы хотите. Теперь создайте новую ветку с
git checkout -b 'last_deployed_code'
git push origin last_deployed_code`
или, как прокомментировал @RomainValeri:
git branch recovery origin/cf8734ece3938fc67262ad5e0d4336f820689307
Теперь у вас есть новая ветка на github с точным кодом, который вы хотите.
Ваш второй вариант немного страшнее, но не менее эффективен. Предполагая, что вы довольны scp (читайте здесь , если нет - это действительно просто), S SH на ваш сервер, перейдите в каталог «app», а затем скопируйте весь этот каталог на ваш локальный компьютер.
Затем вы можете создать новую ветвь или просто заставить pu sh освоить, и привет, у вас есть ветка на github, которая точно отражает ваш развернутый код. Первый вариант определенно предпочтителен, так как, возможно, есть некоторые файлы конфигурации, которые вы на самом деле не хотите копировать из каталога вашего приложения prod