2016-01-30 3 views
4

Есть что-то, что я хочу. Я надеюсь, что он существует, и если это не так, я могу его создать. Я опишу это, и если вы знаете что-то вроде этого, пожалуйста, дайте мне знать. Если нет, и у вас есть указатели на то, как ее создать, я тоже это оценю.Git: Автоматическая резервная копия всех фиксаций при создании

Я использую Git для своих проектов уже много лет, но только сейчас я начал работать в большой компании на репо, о которой привержены 100 разработчиков. Когда я работал один и в небольших командах, я привык делать много коммитов все время, размещая все файлы и используя пустое сообщение для фиксации (да, это так, как я рулон.) Я в основном использовал коммиты как расширенная операция сохранения; всякий раз, когда я вводил нетривиальное количество кода, я все это делал и переводил в не-ведущую ветку.

Теперь, когда я работаю в большой компании, я не могу этого сделать, потому что это будет неприятно для других людей. Поэтому я все еще часто делаю частые, недокументированные коммиты, но когда я закончил, я сквошу их всех, перезарядив их, дайте им приятное информативное сообщение о фиксации и отправьте запрос слияния только с этим. Все мои временные обязательства будут удалены при следующем запуске коллекции мусора.

Мне не нравится, как все мои временные обязательства удаляются. Они могут быть уродливыми, но я люблю их. Иногда у них есть бит кода, который я написал, а затем удалил, и я не хочу потерять этот код. Возможно, мне понадобится еще раз в будущем.

Теперь я мог бы поместить все эти коммиты в частную ветку. Но создавать и поддерживать такой набор ветвей будет неприятно. Потому что это означает, что для каждой ветви функций потребуется дополнительная вспомогательная ветвь, которая останется открытой и без сил навсегда. Тьфу.

Что я хочу - это система, которая сохраняет любые фиксации, сделанные в Git, и гарантирует, что она останется доступной в обозримом будущем. Мне важно, чтобы это было автоматически, без каких-либо действий. Я хочу знать, что я могу вернуться к любому совершению, которое я сделал, даже если оно было потеряно в сквоше.

Что-то вроде этого существует? Любые указатели на его создание?

+2

Просто установите рефлог, чтобы он не заканчивался? См. 'Git config --help' –

ответ

1

Одной из возможных идей было бы установить post-commit hook, который будет толкать каждую созданную фиксацию на выделенный репозиторий.

Это нажатие будет использовать текущую ветку или, если нажатие будет отклонено из-за непереходного нажатия (ветвь была переустановлена ​​/ переписана), на «current_branch_1» (_2, _3 ...), чтобы сохранить прежнюю историю ранее неизменной.

Таким образом, вы продолжаете использовать свой текущий репо обычным способом (с rebase/reset, который в конечном итоге может потерять фиксацию после очистки reflog).
Тем не менее, каждое созданное когда-либо созданное все еще отображается в этом «архивом» репо.

+0

приятная и чистая идея. – David

Смежные вопросы