LINUX.ORG.RU

Где в git хранить файлы для новых features

 


0

1

Допустим, мне для разработки требуется некий набросок, который я пока не хочу отдавать в релиз, но собираюсь дорабатывать. Причём, один из таких файлов - для решения одного вопроса, второй файл - для решения второго вопроса.

Можно выносить их в какой-то «мусорный» branch, где будут лежать нерабочие наброски. Но для такого branch даже название testing, мне кажется, не подходит.

Можно хранить их отдельно от дерева Git. Но потом будет проблема найти - что куда переносить.

Можно плодить на каждую новую фичу по новому branch.

Какой способ наиболее грамотный и мэйнстримный?

В книге Pro Git (Scott Chacon) есть глава 6.3 «Прятание» про git stash. Выглядит довольно непривычно. Это оно?

Бранч с префиксом wip-. Stash. Два локальных feature-бранча с или без workspaces. Отдельный репозиторий под недодел.

Как мы угадаем, чего тебе хочется? Даже непонятно, надо ли тебе его куда-то пушить или это чисто локальная история.

t184256 ★★★★★
()

В книге Pro Git (Scott Chacon) есть глава 6.3 «Прятание» про git stash. Выглядит довольно непривычно. Это оно?

Насколько я понял - нет. Вроде как нужно для сохранения текущих сырых наработок, когда необходимо переключиться на другую задачу, например, внезапный hotfix. Знатоки - поправьте.

Turbid ★★★★★
()
Последнее исправление: Turbid (всего исправлений: 1)
Ответ на: комментарий от Turbid

Да, я часто использую git stash для таких вещей, но подумываю отказаться, т.к. со временем в git stash накапливается куча каких-то обрывочных изменений, часто без пояснений, работать с ними опаснее, т.к. очень легко удалить, и они хранятся только в одном месте, не синхронизируются, как ветки.

Но автор вопроса, судя по этому и предыдущему вопросу, плохо понимает зачем нужна система контроля версий и как правильнее (удобнее) ей пользоваться.

Даже не знаю, чем здесь помочь. Есть ощущение, что он пытается построить какие-то велосипеды с квадратными колёсами, ортогональные идеям Git.

emorozov
()
Ответ на: комментарий от emorozov

со временем в git stash накапливается куча каких-то обрывочных изменений

Если у тебя в git stash что то хранится дольше чем нужно, то ты используешь его не по назначению. У меня в большинстве случаев stash удаляется почти сразу же после того как создаётся. git stash && git checkout branch && git stash pop

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

У меня в большинстве случаев stash удаляется почти сразу же после того как создаётся.

Да, как-то так.

Нужно для временного хранения набросков.

Вроде как нужно для сохранения текущих сырых наработок, когда необходимо переключиться на другую задачу …

Мне это и надо. Отложить код для последующей доработки.

P. S. Ok, понял, что вещь используется и не deprecated.

i_am_not_ai
() автор топика
Последнее исправление: i_am_not_ai (всего исправлений: 2)
Ответ на: комментарий от eternal_sorrow

Если у тебя в git stash что то хранится дольше чем нужно, то ты используешь его не по назначению.

Иногда возникают проблемы типа того, что в команде есть какой-нибудь косяк в Makefile, например. Допустим, вся команда пользуется гейбуками, ты один на Linux, и PO против того, чтобы ты запушил универсальный Makefile, работающий в любой системе.

Тогда приходится запихивать свои правки в git stash, чтобы применять после переключения на любую ветку.

Да, знаю, что существует как минимум несколько способов организовать это иначе, но чаще всего обращаюсь в подобных случаях к git stash, как самому простому способу, к тому же, из коробки.

emorozov
()
Ответ на: комментарий от i_am_not_ai

Я так понял, что git clone не выкачивает stashes?

Нет. Поэтому ветки лучше.

Или вместо stash использовать внутри репозитория другую VCS, такую как Mercurial, в качестве версионирующего stash.

Но stash удобен своей простотой и доступностью.

emorozov
()
Последнее исправление: emorozov (всего исправлений: 1)

Можно выносить их в какой-то «мусорный» branch, где будут лежать нерабочие наброски. Но для такого branch даже название testing, мне кажется, не подходит.

В ветках и храни. Название веток тут будет issue_1 и issue_2. stash для этого не очень подходит, он скорее про временно спрятать мешающие здесь и сейчас изменения.

slovazap ★★★★★
()

Бранч в гите - это 1 (прописью: один) файл содержащий хэш комита. Коммиты лежат как дерево управляемых гарбадж-коллектором файлов, при этом рутами GC являются как раз эти файлы бранчей. Т.е. «наплодив» веток ты просто создашь несколько файлов, запрещающих гиту удалять твою временную работу и одновременно служащих закладками для тебя. Стеш в этом плане с технической стороны ничем не лучше.

khrundel ★★★★
()