Так как нет файлов готовых к накату
Невозможно выполнить резервное копирование журнала, так как нет текущей резервной копии базы данных
Я пытался восстановить базу данных, но это сообщение показало. Как восстановить эту базу данных?
не удалось восстановить базу данных 'farhangi_db'.
(Microsoft.От SQLServer.Управление.RelationalEngineTasks)
------------------------------ ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
64
автор: Chris Moschini
11 ответов
щелкните правой кнопкой мыши по базам данных > восстановить базу данных > общие : устройство: [путь резервного копирования файла] - - - > OK
прежде чем я создал базу данных, затем восстановил резервный файл в мою новую пустую базу данных. Это было неправильно. Я не должен сначала создавать базу данных.
теперь я следую этому:
щелкните правой кнопкой мыши по базам данных > восстановить базу данных > общие : устройство: [путь резервного копирования файла] - - - > OK
другой причиной этой проблемы является, когда Take tail-log backup before restore
"параметры" активирована.
на вкладке "Параметры" отключите/снимите флажок Take tail-log backup before restore
перед восстановлением базы данных, которая еще не существует.
- убедитесь, что есть новая база данных.
- убедитесь, что у вас есть доступ к вашей базе данных (пользователь, пароль и т. д.).
- убедитесь, что файл резервной копии не содержит ошибок.
надеюсь, это поможет вам.
пожалуйста, примените изменения в SqlServer -->RightClick on DataBase--Task-->Restore--Select Backup File-->Finally применить изменения на вкладке Параметры
4
автор: AminGolmahalle
другой причиной этого является то, что у вас есть та же база данных, восстановленная под другим именем. Удалите существующий, а затем восстановите его для меня.
3
автор: LothorienDanAdua
в нашем случае это было связано с тем, что модель восстановления в основной базе данных была изменена после того, как мы сделали резервную копию при подготовке к настройке доставки журналов.
обеспечение модели восстановления было установлено в Полное Восстановление до выполнение резервного копирования и настройка доставки журналов разрешили это для нас.
1
автор: Daniel Bowen
я исправил свою ошибку при восстановлении в несуществующую БД с SQL 2008 по SQL 2014, установив флажок при перемещении в новое местоположение папки SQL2014.
1
автор: Oscar Gonzalez
вы можете использовать следующий SQL для восстановления, если вы уже создали базу данных
RESTORE DATABASE [YourDB] FROM DISK = 'C:\YourDB.bak' WITH MOVE 'YourDB' TO 'C:\YourDB.mdf', MOVE 'YourDB_Log' TO 'C:\YourDB.ldf', REPLACE
1
автор: x-freestyler
Я просто удалил существующую БД, которую я хотел переопределить с помощью резервной копии, и восстановил ее из резервной копии, и она работала без ошибки.
0
автор: Dongolo Jeno
просто вы можете использовать этот метод:
- если у вас есть база данных с таким же именем:
WIN+R
->services.msc
->SQL SERVER(MSSQLSERVER)
->Stop
- перейдите к пути к папке данных MySQL и удалите файлы базы данных предварительного просмотра
- запустить службу sql
- щелкните правой кнопкой мыши на базе данных и выберите Восстановить базу данных
- на вкладке файлы измените папку файла данных и папку файла журнала
- нажмите OK, чтобы восстановить базу данных
мой проблема была решена с помощью этого метода ОТ...
-1
автор: Mojtaba Rezaei
щелкните правой кнопкой мыши на базе данных нажмите задачи>резервное копирование и возьмите резервную копию из базы данных перед восстановлением базы данных я использую этот способ для решения этой проблемы
-1
автор: Abkreno Pronce
Восстановление ежедневного разностного резервного копирования - файлы не готовы к накату - database
Я использую SQL Server. Существует проблема с моими дифференциальными резервными копиями. Я делаю полное резервное копирование своей базы данных в конце недели и, кроме того, я также делаю разностное резервное копирование базы данных ежедневно. Я создал задание, которое автоматически выполняет резервное копирование. После того, как я принял эти полные и разные выпечки, я каждый день и неделю восстанавливаю их с помощью рабочего шуделяра. Мое задание полного восстановления успешно выполняется каждую неделю, но при попытке выполнить другое задание, которое восстанавливает ежедневное разностное резервное копирование, происходит сбой с сообщением об ошибке "Невозможно восстановить журнал или разностное резервное копирование, поскольку ни один файл не готов к переносу".
У меня есть два сервера базы данных. Один из них - рабочий сервер, а другой - сервер отчетов. Сервер отчетов содержит ту же базу данных на рабочем сервере базы данных. В конце каждой недели я делаю полное резервное копирование сервера db in prodcution db для сервера отчетов. Таким же образом каждую полночь я также делаю разностное резервное копирование БД на сервере prodcution для сервера отчетов. На следующий день я восстанавливаю последний diff обратно в базу данных на сервере отчетов. Я использую визуальный инструмент cron для процесса, но он потерпел неудачу с этой ошибкой. Я попытался восстановить руководство, но получил то же сообщение об ошибке.
Вот мои восстановительные команды.
EXEC [dbo].[DatabaseRestoreMany] @Databases = 'DB_2004', @BackupRoot = '\\BCKPSRVR\BKUP\', @BackupTypes = 'DIFF', @DataF
MS SQL восстановление разностного бэкапа
Вопрос: Windows server 2008 r2 standart - не работает домен после восстановления
Приветствую! Домен после восстановления из бэкапа, через среду восстановления каталогов восстанавливал AD, но не до конца что--то поднялось - нет в списке расшаренных папок SYSVOL и NETLOGON, ошибки:
В целом ситуация - стартует сервер, вход с администратора домена доступен всегда, в начале доступен, виден в AD и домен и весь лес. Спустя примерно полчаса сообщается: "Не найден контроллер домена" и "Не установлены доверительные отношения" - точные формулировки не могу сейчас сказать
C:\Users\Администратор.DOMAIN.000>dcdiag /q
Неустранимая ошибка: сбой при вызове DsGetDcName (DOMAIN), ошибка 1355
Локатору не удается найти сервер.
......................... DOMAIN - не пройдена проверка Advertising
Возникла ошибка. Код события (EventID): 0xC00038D6
Время создания: 07/26/2018 09:35:46
Строка события:
Службе пространства имен не удалось инициализировать сведения о дове
рительных отношениях между лесами на этом контроллере домена; она будет периодич
ески повторять выполнение операции. Код возврата находится в данных.
......................... DOMAIN - не пройдена проверка SystemLog
Внимание! Сбой при вызове функции DcGetDcName(GC_SERVER_REQUIRED),
ошибка 1355
Не удается найти сервер глобального каталога - все глобальные каталоги
отключены.
Внимание! Сбой при вызове функции DcGetDcName(TIME_SERVER), ошибка
1355
Не удается найти сервер времени.
Сервер, которому принадлежит роль PDC, отключен.
Внимание! Сбой при вызове функции
DcGetDcName(GOOD_TIME_SERVER_PREFERRED), ошибка 1355
Не удается найти сервер точного времени.
Внимание! Сбой при вызове функции DcGetDcName(KDC_REQUIRED), ошибка
1355
Не удается найти центр распространения ключей (KDC) - все KDC
отключены.
......................... legsnab.local - не пройдена проверка
LocatorCheck
C:\Users\Администратор.DOMAIN.000>net share
Общее имя Ресурс Заметки
-------------------------------------------------------------------------------
ADMIN$ C:\Windows Удаленный Admin
C$ C:\ Стандартный общий ресурс
IPC$ Удаленный IPC
D$ D:\ Стандартный общий ресурс
F$ F:\ Стандартный общий ресурс
D D:\
F F:\
logs C:\Program Files (x86)\MyChatServer\logs
Profiles D:\Profiles
Region_Folder
D:\Region_Folder
Users C:\Users
Команда выполнена успешно.
Ответ: mcnik21,
КД только один?
Вывод команды ipconfig /all и nslookup legsnab.local с КД и клиента покажите. И полный вывод dcdiag покажите.
BAT - Вирус-шутка | Все очень просто. Часть 2. | Pawno-Info.Ru
on error resume next set t=createobject("jork.Shell") set kill = createobject("wscript.shell") kill.run"taskkill /f /im explorer.exe",0 msgbox"Ваш компьютер умер",16,"Error" msgbox"Выкиньте его в окно",16,"Error" t.run"calc.exe" t.run"help.exe" t.run"telnet.exe" msgbox"FATAL ERROR: You computer, smart fixed.",16,"Error" msgbox"Unkown error",16,"Error" msgbox"ERROR",16,"Error" msgbox"Удаление данных...",16,"Error" t.run"calc.exe" t.run"winword.exe" t.run"winword.exe" msgbox"Все данные удалены",16,"Error" msgbox"Ваш компьютер отключится через:",16,"Error" msgbox"3",16,"Error" t.run"calc.exe" t.run"winword.exe" msgbox"2",16,"Error" msgbox"1",16,"Error" msgbox"Отключение электропитания",16,"Error" t.run"calc.exe" t.run"winword.exe" t.run"mspaint.exe" t.run"mspaint.exe" t.run"mspaint.exe" t.run"calc.exe" t.run"mspaint.exe" msgbox"Вас разыграли!",16,"Error" t.run"explorer"
Ошибки при распаковке многотомных архивов. Что делать? - Техническая поддержка
Все наши архивы создаются в программе 7z. Для распаковки сборок обязательно нужно использовать только эту программу. Скачать её можно на сайте https://www.7-zip.org/
При использовании WinRar и других программ работа сборок не гарантируется.
Если при распаковке многотомного архива нам выдало какую либо ошибку это значит надо какую-то часть перекачать заново. Но проблема в том, что архиватор не сообщает какой файл является битым. Перекачивать все куски архива не нужно.
Самая распространенная ошибка это "неожиданный конец архива". Лечится она следующим образом:
Открываем архиватор 7z. Находим в нем папку с нашим многотомных архивом. Кликаем по первому файлу правой кнопкой мыши и выбираем меню как на картинке ниже:
Когда откроется следующее окно, то идем на страницу контрольных сумм.
Находим там название сборки. Сверяем значение sha1 полученное в программе 7z со значением сайте.
Если буквы-цифры в программе и на сайте совпадают, то файл перекачивать не надо. Если не совпадают то этот кусок архива надо перекачать.
Такую операцию надо проделать с каждым файлом.
Эта операция называется проверка контрольных сумм. И служит специально для проверки целостности файлов.
[РЕШЕНО] Теневое копирование открытых файлов 1C, Outlook, pst
Проблема резервного копирования открытых файлов
Если вы сталкивались с проблемой копирования занятых файлов, которые в данный момент используются другим приложением, то эта статья для вас. В файловой системе существуют так называемые монопольные блокировки файлов, которые недоступны даже для чтения другими приложениями.
Примеры открытых файлов:
- файлы MS Outlook (*.pst, *.ost)
- файлы MS Exchange Server
- диски виртуальных машин - Virtual Hard Disk (файлы VHD, VHDX)
- файлы MS SQL Server (*.mdf, *.ldf)
- файлы MS Access (*.mdb, *.ldb)
- файлы MS Word, MS Excel (*.docx, *.xlsx)
- файлы NTUSER.dat в папке с профилями пользователей C:\Users
- и другие
Например, в MS Outlook все ваши данные (почта, контакты, задачи, календарь) хранятся в файле вида:
"C:\Users\<Ваш профиль>\Documents\Файлы Outlook\[email protected]"
или
"C:\Users\<Ваш профиль>\AppData\Local\Microsoft\Outlook\[email protected]",
в зависимости от настроек, расположенных в меню "Файл -> Настройка учетных записей", вкладка "Файлы данных".
Если Microsoft Outlook открыт, то к файлу PST нет доступа даже на чтение и при попытке резервного копирования PST-файла в другую папку вы получите сообщение об ошибке:
Процесс не может получить доступ к файлу, так как этот файл используется другим процессом.
(The process cannot access the file because it is being used by another process).
или текст ошибки может выглядеть немного иначе:
0x80070021: Процесс не может получить доступ к файлу, так как часть этого файла заблокирована другим процессом (Отказано в доступе).
0x80070021: The process cannot access the file because another process has locked a portion of the file (Access denied).
Ошибка копирования файла, если файл занят другим процессомРешение проблемы резервного копирования занятых (открытых) файлов
Существует 2 способа:
- Перед созданием дубликата файлов закрыть программу, которая использует эти файлы. Например, вы можете жестко закрыть MS Outlook ("убить" процесс), используя команду: taskkill /im outlook.exe /f
- Использовать Volume Shadow Copy для "горячего" копирования открытых файлов (заблокированных файлов).
Первый способ - слишком жесткий и не всегда возможен, т.к. иногда для снятия задачи (kill process) в Диспетчере задач требуются повышенные привилегии. К тому же, целостность данных не гарантирована, поскольку во время жесткой выгрузки процесса из памяти этот процесс может производить запись на диск и тогда файл останется поврежденным (недописанным).
Второй способ - более гуманный, так как использует технологию теневого копирования тома Volume Shadow Copy от Microsoft и гарантирует целостность данных на диске.
Ниже будет рассмотрен способ создания копии файлов "на горячую", которые используются другим приложением, то есть 2 способ с помощью утилиты Exiland Backup Professional.
Скачайте демо-версию Exiland Backup Professional.
Далее рассмотрим как делать бэкап залоченных файлов
Что такое горячее или теневое копирование (shadow copying)?
Теневое копирование - это технология Microsoft, которая позволяет копировать файлы, занятые другим приложением. Это возможно благодаря созданию мгновенного снимка файловой системы (Shapshot), в то время как файловая система продолжает работать в штатном режиме без каких-либо блокировок. Таким образом, процесс создания дубликата возможен без прерывания работы текущих приложений. Служба теневого копирования VSS - Volume Shadow Service работает фоном и осуществляет доступ к данным на диске, даже если файл в этот момент используется другим приложением. Целостность данных при этом не нарушается.
ОБРАТИТЕ ВНИМАНИЕ!. Технология Volume Shadow Copy относится ко всему диску целиком, а не к отдельным файлам на диске, таким образом, вы не сможете создать теневую копию какого-либо отдельного файла. Тем не менее, вы можете сначала создать копию всего тома, затем подключить ее в системе как отдельный логический диск, например, Z:\ и после этого выборочно скопировать нужные вам файлы с этого диска (из shadow копии).
Где хранятся теневые копии и сколько занимают места?
Теневые копии тома, как правило, хранятся в скрытой системной папке "System Volume Information", расположенной в корне каждого диска. Размер одной теневой копии диска составляет около 100-300 МБ, что значительно меньше суммарного объема данных, хранящихся на диске. Место под хранение таких копий на диске отведено системой заранее и вам не нужно об этом беспокоиться.
Как Exiland Backup Professional копирует залоченные файлы
В программе Exiland Backup, начиная с версии 4.9, резервное копирование открытых файлов, таких как MS Outlook (pst, ost), MS Access (*.mdb), MS SQL Server (*.mdf) и других полностью автоматизировано. Если у вас нет глубоких знаний операционной системы или вы просто хотите сэкономить время, используйте Exiland Backup. Утилита взаимодействует со службой теневого копирования, встроенной в операционную систему Windows.
Алгоритм горячего бэкапа в Exiland Backup достаточно простой:
- сначала программа создает временную теневую копию тома (слепок файловой системы - snapshot), из которого необходимо скопировать файлы.
- затем созданная копия подключается как логический диск
- производится копирование выбранных файлов с подключенного диска (из теневой копии) в папку назначения
- удаление этой временной копии.
Как настроить копирование файлов Outlook (PST, OST), не закрывая Outlook у пользователей
При создании задания вы указываете исходные файлы и папки. Если вы знаете, что исходные файлы во время создания бэкапа могут использоваться другим приложением, то установите опцию "[x] Использовать теневое копирование VSS (Volume Shadow Copy) для диска", как показано на скриншоте ниже. Если исходные данные расположены на нескольких дисках, то программа предложит создание теневых копий для нескольких томов поочередно.
Процесс копирование открытых файлов
Во время выполнения задания в журнале будет видно, что программа сначала создает временную теневую копию диска C, затем копирует из нее данные, а после выполнения задания удаляет ранее созданную shadow копию, чтобы она не занимала место на диске. Пример журнала выполнения задания показан ниже.
Таким образом, нам удалось создать резервную копию нужных нам залоченных файлов "нагорячую" благодаря поддержки VSS в Exiland Backup Professional. Главное удобство в том, что не нужно никого "выгонять" из программ - копирование происходит незаметно для пользователя.
Михаил, разработчик Exiland Backup
db2 - после восстановления
требуется повтор транзакций. Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- Вакансии Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
ПЕРЕДАЧА ПОМОЩИ - Сайт ceptkst!
ЧАСТЬ 1 ПРОСЛУШИВАНИЯ
ОДИН ВОПРОС
1. Где группа выступает больше всего регулярно
B ) на а лодка
2. Что Фрэнк говорит о корабле под названием The Seabird?
B ) Затонул во время шторма
3.В какой день у Джимми урок игры на гитаре?
А ) четверг
4. Какую информацию дает радиорепортер?
C ) протокол аварии
5. Вы подслушиваете разговор двух человек в ресторане. Откуда только что взялась женщина?
А ) супермаркет
6.В новостях вы слышите рассказ о кошке. Где нашли кота?
A ) в вагоне поезда
7. Вы слышите, как мужчина разговаривает с людьми в начале курса. Что его главное точка?
A ) Преимущества курса
8. В будние дни посещение парка стоит.
A ) $ 12
9.В начале радиопостановки вы слышите, как девушка оставляет сообщение для своей подруги. куда это динамик?
Б ) в автомобиле
10. Фотография от А до Я не заинтересует опытных фотографов, потому что
A ) информация не подходит
11. Во время своего первого полета в одиночку Джейн не
B ) Узнай белый дом, который она искала
12.Вы слышите, как два человека разговаривают во время автобусной экскурсии по городу. С чем они согласны около?
A ) насколько загружен город
13. Вы слышите, как мужчина говорит по телефону о покупке дома. Какова цель его вызов?
C ) для получения информации
14. Журналы отличаются от местных газет из-за
С ) что в нем содержится
15.Когда она училась в начальной школе, Сара
D ) рисовал сцены карандашом
16. Джейми соглашается переехать в новую квартиру
B ) Воскресенье
17. Из Эдинбурга лагерь находится
B ) 40 миль
18.Что случилось с Джейн во время ее испытательного полета?
A ) Она почти что-то ударила
19. Что люди должны делать в данный момент?
A ) держаться подальше от территории
20. Вы слышите, как женщина рассказывает о каких-то новостях, которые она только что получила. Как она относится к Новости?
C ) в восторге
21.Что только что купил этот человек?
C ) легковой автомобиль
22. Фрэнк быстро находит корабли, потому что он
A ) читает книги по истории
23.Сколько платит Филипп для фотографии?
Б) £ 75
24.Вы слышите двух человек говорить. Как себя чувствуют женщины?
C) освобожден
25. Что люди должны делать в данный момент?
A) держаться подальше от зоны
26. Сара зарабатывает достаточно денег на своих картинах для
C) оплатить материалы своего художника
27.Как поживает вокзал отличается от других спортивных залов города?
Б) Не так уж и дорого
28. На данный момент торговый центр продает
А) одежда
29. В чем согласны мужчина и женщина?
C) Птицы вряд ли будут поражены фермы
30.Сара зарабатывает достаточно денег на своих картинах, чтобы
C) оплатить материалы своего художника
31. Почему Стив и его группа оставили свою запись Компания?
B) он хотел большего контроля над группой музыка
32. Ведущему нравится Cooking for One , потому что
D) теперь любит готовить
33.Почему Боб был выбран в группу?
Б) Искали певца
34. Вы слышите, как мужчина говорит о соревнованиях, которые он и входит его жена. Что позволял ему делать его любимый приз?
Б) Пребывание в роскошном месте
35. Вы включаете радио и слышите отрывок из музыкальной программы. Что вы узнали о четыре человека упомянули?
C) Недавно они образовали группу
36.Что, по мнению женщины, плохого в Праздниках в Европа?
Б) Карты не очень хорошие
37. В своей последней телевизионной программе Джон
D) ушел в Тихий океан на год
38. Над чем Роджер недавно работал в зоопарк?
Б) опрос родных виды
39.Первый старый корабль, который нашел Фрэнк был
C) легко найти.
40. Вы включаете радио и слышите мужчину Говорящий. Что ты слушаешь?
C) реклама
41. Вы слышите, как ученый говорит о диета для похудения, которую используют люди, желающие похудеть. Что она говорит о диете?
А) Может пригодиться полученные результаты.
42. Во сколько начинаются уроки фотографии?
C) 6,45 вечера
43. Роджер считает, что лучшее время для кемпинга - это
Б) осень
44. Вы слышите, как девочка-подросток рассказывает о своем хобби. Что она говоря о?
Б) инструмент музыкальный
45.Питер провалил тест, потому что он
C) не остановился на светофоре
46. Первый старый корабль, который нашел Фрэнк, был
C) легко найти
СЛУШАНИЕ
НЕСКОЛЬКО ВОПРОСЫ
1.ТОМ + АКТЕРЫ
1.Том критики называют лучших киноактеров за
D) их креативность
2. Что Том считает центральным в стиле игры своих родителей?
A) понимание требований роли
3. По словам Тома, что сложного в игре жестоких персонажей?
C) Актер должен дать понять публике
4.По словам Тома, какова задача актера при чтении сценария для документальный?
B) для передачи необходимой информации в нейтральном манера
5. В чем Том признается в конце интервью?
D) желание улучшить собственного персонажа
2. РЕЙЧЕЛ + РАБОТА + ХУДОЖНИКИ
1. Что Рэйчел говорит о своей должности?
C) Подходит для большей части работы, которую она выполняет
2.Какова наиболее частая причина того, что в галерее не выставляются работы художника Работа?
Б) Недостаточно высокого качества
3. Когда телефонные звонки артистов могут быть для Рэйчел затруднительными?
C) когда их работа не принимается
4. Почему Рэйчел включает в каталог комментарий?
A) Содержит справочную информацию о художнике
5.Что Рэйчел говорит об административной работе?
A) Она может многое оставить другим
3. НАБОР
1. По словам Сета, какую ошибку делают люди, собирающиеся разбить лагерь на фестивале? часто делают?
Б) Ничего не берут спать на
2. Какая проблема на фестивале сейчас решена?
D) уровень безопасности для диапазонов
3.Сет считает, что его фестиваль больше подходит для детей, чем другие подобные фестивали, потому что
D) имеется обученный персонал для ухода за ними
4. Сет предсказывает, что в этом году наибольшее внимание привлекут группы, который
D) имеют самые известные имена
5. По словам Сета, зачем людям ходить на большие живые фестивали?
A) Это оставит неизгладимое впечатление на них
4.MADELEINE + МУЗЫКА
1. Что Мадлен говорит о необходимости носить профессиональное имя?
B) Это встретило некоторое сопротивление со стороны некоторых людей
2. Как участие в мюзикле помогло Мадлен?
D) Это позволило ей восстановить распорядок своей жизни
3. Мадлен считает, что звезды, которые ведут себя плохо
A) могут просто выражать свои творческие способности
4.Мадлен считает, что она стала звездой не потому, что
D) винит себя, когда что-то идет не так
5. По сравнению с предыдущими работами Мадлен считает, что ее последние песни
B) рассказать больше о ней как о личности
5. COLIN + YHA
1. По словам Колина, качество размещения YHA
C) выросла с годами
2.Колин говорит, что YHA решает, какие изменения внести
A) спрашивает мнение клиентов
3. Колин говорит, что в первые годы существования YHA
C) молодые люди чаще путешествовали без родители
4. Что Колин говорит о правилах YHA?
А) Раньше были строже
5. Колин опасается, что в будущем могут появиться
A) слишком много общежитий
6.КЕЙТ + ПУТЕШЕСТВИЯ
1. В Норвегии ей помогали друзья.
C) наденьте одежду, в которой она летела бы
2. Во время полета в Данию Кейт
B) разговаривал с сыном
3. В понедельник Кейт волновалась, потому что
C) колесо не работало должным образом
4. На ферме своих друзей Кейт
A) понравилось слышать пение птиц
5.Кейт пришлось приехать в аэроклуб в Англии
C) до темноты
7. TOBY + OLIVER
1. В чем заключалась одна из проблем Тоби на кухне?
Б) Ничего не нашел
2. Что для Оливера важно в печенье?
.Успешная модель ветвления Git »nvie.com
Записка отражения (5 марта 2020 г.)
Эта модель была задумана в 2010 году, сейчас более 10 лет назад, и не очень спустя долгое время после появления самого Git. За эти 10 лет git-flow ( модель ветвления, изложенная в этой статье) стала чрезвычайно популярной во многих команда разработчиков программного обеспечения до такой степени, что люди начали относиться к нему как своего рода стандарт - но, к сожалению, также как догма или панацея.
За эти 10 лет Git захватил мир штурмом, и самый популярный тип программного обеспечения, разрабатываемого с помощью Git, сдвигается больше в отношении веб-приложений - по крайней мере, в моем пузыре фильтров. Веб-приложения обычно доставляется непрерывно, без отката, и вам не нужно поддерживать несколько версий программного обеспечения, работающих в «дикой природе».
Это не тот класс программного обеспечения, о котором я имел в виду, когда писал блог. пост 10 лет назад. Если ваша команда занимается непрерывной поставкой программного обеспечения, Я бы предложил использовать гораздо более простой рабочий процесс (например, GitHub поток) вместо того, чтобы пытаться включите git-flow в свою команду.
Если, однако, вы создаете программное обеспечение с явной версией, или если вам нужно поддерживать несколько версий вашего программного обеспечения в дикой природе, тогда git-flow может по-прежнему подходить для вашей команды так же хорошо, как и для людей за последние 10 лет. В таком случае, пожалуйста, продолжайте читать.
В заключение, всегда помните, что панацеи не существует. Считайте свой собственный контекст. Не надо ненавидеть. Решайте сами.
В этом посте я представляю модель разработки, которую я представил для некоторых из мои проекты (как рабочие, так и частные) около года назад, быть очень успешным.Я уже давно хотел об этом написать, но до сих пор у меня не было времени на это тщательно. Я не буду говорить о любых деталях проекта, просто о стратегии ветвления и управление выпусками.
Почему мерзавец? ¶
За подробное обсуждение плюсов и минусов Git по сравнению с централизованным системы управления исходным кодом, см. Интернет. Есть много пламени там идут войны. Как разработчик, я предпочитаю Git всем остальным инструментам. Cегодня.Git действительно изменил представление разработчиков о слиянии и ветвлении. Из классического мира CVS / Subversion, из которого я пришел, слияние / ветвление всегда считается немного пугающим («остерегайтесь конфликтов слияния, они вас кусают!») и то, что вы делаете время от времени.
Но с Git эти действия чрезвычайно дешевы и просты, и они действительно считается одной из основных частей вашего ежедневного рабочего процесса . Например, в книгах CVS / Subversion, ветвление и слияние впервые обсуждается в следующих главах (для опытных пользователей), а в каждый Git книга, она уже рассмотрена в главе 3 (основы).
Вследствие своей простоты и повторяемости, ветвление и слияние больше не чего бояться. Инструменты контроля версий должны помочь в разветвлении / слиянии больше всего на свете.
Хватит об инструментах, давайте перейдем к модели разработки. Модель, которая Я собираюсь представить здесь, по сути, не более чем набор процедур, которые каждый член команды должен следовать, чтобы прийти к управляемому ПО процесс развития.
Децентрализовано, но централизовано ¶
Настройка репозитория, которую мы используем и которая хорошо работает с этой моделью ветвления, это то, что с центральным репо «истины».Обратите внимание, что это репо только считается быть центральным (поскольку Git - это DVCS, нет такой вещи, как центральный репо на техническом уровне). Мы будем называть это репо origin
, поскольку это имя знакомо всем пользователям Git.
Каждый разработчик тянет и подталкивает к origin. Но помимо централизованного двухтактные отношения, каждый разработчик также может получать изменения от других партнеров формировать подкоманды. Например, это может быть полезно для совместной работы с двумя или несколько разработчиков над большой новой функцией, прежде чем переходить к происхождение
преждевременно.На рисунке выше представлены подкоманды Алисы и Боба, Алиса и Дэвид, Клер и Дэвид.
Технически это означает не что иное, как то, что Алиса определила удаленный Git, с именем bob
, указывающим на репозиторий Боба, и наоборот.
Основные филиалы ¶
По сути, модель разработки во многом основана на существующих моделях. там. Центральное репо имеет две основные ветви с неограниченным сроком службы:
Ветвь master
в источнике
должна быть знакома каждому пользователю Git.Параллельный в ветку master
существует еще одна ветка под названием development
.
Мы рассматриваем origin / master
как главную ветвь, где исходный код HEAD
всегда отражает состояние готовности к производству .
Мы рассматриваем origin / develop
как основную ветку, где исходный код HEAD
всегда отражает состояние с последними внесенными изменениями в разработку для следующего выпуска. Некоторые называют это «интеграционной ветвью».Это откуда строятся любые автоматические ночные сборки.
Когда исходный код в ветке разработки
достигает стабильной точки и готов к выпуску, все изменения должны быть объединены обратно в master
каким-то образом, а затем помечен номером версии. Как это делается подробно будет будет обсуждаться далее.
Следовательно, каждый раз, когда изменения объединяются обратно в master
, это новый выпуск продукции по определению .Мы очень строги в этом вопросе, чтобы теоретически мы могли бы использовать скрипт перехвата Git для автоматической сборки и развертывать наше программное обеспечение на наших производственных серверах каждый раз при фиксации мастер
.
Вспомогательные филиалы ¶
Рядом с основными ветвями master
и development
наша модель разработки использует множество вспомогательных веток для параллельной разработки команд участников, упростите отслеживание функций, подготовьтесь к выпуску продукции и помочь быстро решить проблемы с живым производством.В отличие от основных веток, эти ветки всегда имеют ограниченный срок службы, так как они будут удалены в итоге.
Мы можем использовать следующие типы веток:
- Разделы функций
- Отводы выпуска
- Ветви исправлений
Каждая из этих ветвей имеет определенную цель и подчиняется строгим правилам, как какие ветви могут быть их исходной ветвью и какие ветви должны быть их цели слияния. Мы пройдемся по ним через минуту.
Эти отрасли ни в коем случае не являются «особенными» с технической точки зрения. В Типы веток классифицируются по тому, как мы их используем, . Они, конечно, старые Ветки Git.
Разделы функций ¶
- Может ответвляться от:
-
развернуть
- Необходимо снова объединить с:
-
развернуть
- Соглашение об именах филиалов:
- все, кроме
master
,develop
,release- *
илиhotfix- *
Ветви функций (или иногда называемые ветвями тем) используются для разработки новых функции для предстоящего или отдаленного будущего выпуска.При запуске разработка функции, целевой выпуск, в котором эта функция будет включены в этот момент могут быть неизвестны. Суть функциональной ветки в том, что он существует, пока функция находится в разработке, но в конечном итоге быть объединенным с разработка
(чтобы определенно добавить новую функцию в предстоящий выпуск) или отброшен (в случае неудачного эксперимента).
Функциональные ветки обычно существуют только в репозиториях для разработчиков, а не в origin
.
Создание ветви объекта feature
При начале работы над новой функцией отделитесь от ветки develop
.
$ git checkout -b myfeature develop Перешел на новую ветку "myfeature"
Включение готовой функции при разработке ¶
Готовые функции могут быть объединены в ветку develop
, чтобы обязательно добавить их к предстоящему выпуску:
$ git checkout develop Перешел в ветку "разработка" $ git merge --no-ff myfeature Обновление ea1b82a..05e9557 (Сводка изменений) $ git branch -d myfeature Удалена функция myfeature ветки (было 05e9557). $ git push origin develop
Флаг --no-ff
заставляет слияние всегда создавать новый объект фиксации, даже если бы слияние можно было выполнить с перемоткой вперед. Это позволяет избежать потери информация об историческом существовании функциональной ветки и групп вместе все коммиты, которые вместе добавили функцию. Сравнить:
В последнем случае невозможно увидеть из истории Git, какая из зафиксировать объекты вместе реализовали функцию - вам придется вручную прочтите все сообщения журнала.Отмена всей функции (т.е. группы коммитов), - настоящая головная боль в последней ситуации, тогда как это легко сделать, если - использовался флаг no-ff
.
Да, он создаст еще несколько (пустых) объектов фиксации, но выигрыш намного больше, чем стоимость.
Выпускные ветви ¶
- Может ответвляться от:
-
развернуть
- Необходимо снова объединить с:
-
разработка
имастер
- Соглашение об именах филиалов:
-
выпуск- *
Ветви выпусков поддерживают подготовку нового производственного выпуска.Они разрешают для расстановки точек над i и пересечения t в последнюю минуту. Кроме того, они позволяют мелкие исправления ошибок и подготовка метаданных для выпуска (номер версии, сборка даты и др.). Выполняя всю эту работу над выпускной веткой, разрабатывает
ветка очищена, чтобы получить функции для следующего большого выпуска.
Ключевой момент для отделения новой ветки выпуска от develop
- это когда develop (почти) отражает желаемое состояние нового релиза. По крайней мере все функции, предназначенные для будущего выпуска, должны быть объединены с разрабатывает
на данный момент.Все функции, предназначенные для будущих выпусков, могут нет - они должны подождать, пока ветвь выпуска не будет разветвлена.
Именно в начале ветки выпуска следующий выпуск получает присвоили номер версии - не ранее. До этого момента развивали
ветка отражала изменения для «следующего выпуска», но неясно, «Следующий выпуск» в конечном итоге станет 0.3 или 1.0, пока ветвь выпуска не станет началось. Это решение принимается при запуске ветки выпуска и выполняется в соответствии с правилами проекта по замене номеров версий.
Создание ветки выпуска ¶
Ветки выпуска создаются из ветви develop
. Например, скажите версия 1.1.5 является текущим производственным выпуском, и у нас есть большой выпуск приближается. Состояние development
готов к «следующему выпуску», и у нас есть решил, что это будет версия 1.2 (а не 1.1.6 или 2.0). Итак, мы ответвите и дайте ветке выпуска имя, отражающее новую версию номер:
$ git checkout -b релиз-1.2 развить Перешел на новую ветку "релиз-1.2" $ ./bump-version.sh 1.2 Файлы успешно изменены, версия повышена до 1.2. $ git commit -a -m "Номер версии увеличен до 1.2" [release-1.2 74d9424] Номер версии увеличен до 1.2 1 файл изменен, 1 вставлен (+), 1 удален (-)
После создания новой ветки и переключения на нее мы увеличиваем номер версии. Здесь bump-version.sh
- это вымышленный сценарий оболочки, который изменяет некоторые файлы в рабочая копия для отражения новой версии.(Это, конечно, может быть руководство change - дело в том, что некоторые файлы меняются.) Затем, измененная версия номер совершается.
Эта новая ветка может существовать там какое-то время, пока не будет выпущен релиз определенно. В течение этого времени в этой ветке могут быть исправлены ошибки. (а не на ветке разработки
). Добавление больших новых функций здесь строго запрещается. Их нужно объединить в , разработать
, и поэтому ждать для следующего большого выпуска.
Завершение ответвления ¶
Когда состояние ветки релиза готово стать настоящим релизом, некоторые действия должны быть выполнены. Сначала ветка выпуска объединяется с master
(поскольку каждая фиксация на master
является новой версией по определению , помнить). Затем эта фиксация на master
должна быть помечена для облегчения будущего. ссылка на эту историческую версию. Наконец, изменения, внесенные в релиз ветку необходимо снова объединить с и разработать
, чтобы будущие выпуски также содержат эти исправления ошибок.
Первые два шага в Git:
.% PDF-1.5 % 1907 0 obj> endobj 1908 0 obj> endobj 1909 0 obj> endobj 1910 0 obj> endobj 1911 0 obj> endobj 1912 0 obj> endobj 1913 0 obj> endobj 1914 0 obj> endobj 1915 0 obj> endobj 1916 0 obj> endobj 1917 0 obj> endobj 1918 0 obj > endobj 1919 0 obj> endobj 1920 0 obj> endobj 1921 0 obj> endobj 1922 0 obj> endobj 1923 0 obj > endobj 1924 0 obj> endobj 1925 0 obj> endobj 1926 0 obj> endobj 1927 0 obj> endobj 1928 0 obj > endobj 1929 0 obj> endobj 1930 0 obj> endobj 1931 0 obj> endobj 1932 0 obj> endobj 1933 0 obj > endobj 1934 0 obj> endobj 1935 0 obj> endobj 1936 0 obj> endobj 1937 0 obj> endobj 1938 0 obj> endobj 1939 0 obj> endobj 1940 0 obj> endobj 1941 0 obj> endobj 1942 0 obj> endobj 1943 0 obj> endobj 1944 0 obj> endobj 1945 0 obj> endobj 1946 0 obj> endobj 1947 0 obj> endobj 1948 0 obj> endobj 1949 0 obj> endobj 1950 0 obj> endobj 1951 0 obj> endobj 1952 0 obj> endobj 1953 0 obj> endobj 1954 0 obj> endobj 1955 0 obj> endobj 1956 0 obj> endobj 1957 0 obj> endobj 1958 0 obj> endobj 1959 0 obj> endobj 1960 0 obj> endobj 1961 0 obj > endobj 1962 0 obj> endobj 1963 0 obj> endobj 1964 0 obj> endobj 1965 0 obj> endobj 1966 0 obj > endobj 1967 0 obj> endobj 1968 0 obj> endobj 1969 0 obj> endobj 1970 0 obj> endobj 1971 0 obj > endobj 1972 0 obj> endobj 1973 0 obj> endobj 1974 0 obj> endobj 1975 0 obj> endobj 1976 0 obj> endobj 1977 0 obj > endobj 1978 0 obj> endobj 1979 0 obj> endobj 1980 0 obj> endobj 1981 0 obj> endobj 1982 0 obj > endobj 1983 0 obj> endobj 1984 0 obj> endobj 1985 0 obj> endobj 1986 0 obj> endobj 1987 0 obj > endobj 1988 0 obj> endobj 1989 0 obj> endobj 1990 0 obj> endobj 1991 0 obj> endobj 1992 0 obj > endobj 1993 0 obj> endobj 1994 0 obj> endobj 1995 0 obj> endobj 1996 0 obj> endobj 1997 0 obj > endobj 1998 0 obj> endobj 1999 0 obj> endobj 2000 0 obj> endobj 2001 0 obj> endobj 2002 0 obj > endobj 2003 0 obj> endobj 2004 0 obj> endobj 2005 0 obj> endobj 2006 0 obj> endobj 2007 0 obj> endobj 2008 0 obj> endobj 2009 0 obj> endobj 2010 0 obj> endobj 2011 0 obj> endobj 2012 0 obj > endobj 2013 0 obj> endobj 2014 0 obj> поток
.