Подтвердить что ты не робот

Git эквивалентно hg mq?

Я только начал использовать Git вместе с Mercurial, чтобы ознакомиться с Git.

Я использую расширение mq в Mercurial для управления локальными исправлениями, и я ищу эквивалент Git.

Должен ли я использовать ветвь Git? Или есть ли лучшие способы управления локальными исправлениями, которые позволяют легко применять и удалять исправления?

Спасибо,

4b9b3361

Ответ 1

Ознакомьтесь с разделом "Интерфейсы интерфейса управления патчем" Интерфейсы, Frontend And Tools на Git Wiki. Здесь перечислены два интерфейса управления исправлениями, что примерно эквивалентно расширению mq 'Mercurials:

  • StGIT (Stacked Git), более старый из двух, написанный на Python, использует два моментальных снимка для представления патча
  • Guilt (ранее "gq" ), написанный как серия сценариев bash, файл серии и патчи (по одному на файл ) сохраняются в виде текстового файла.
  • pg (Patchy Git) устарел и больше не поддерживается.

Но если вам не нужно более продвинутое использование, вы можете использовать вместо этого git rebase --interactive "для изменения порядка, сквоша и разбиения патчей. А для управления веткой от текущей версии восходящего потока" git rebase" обычно будет достаточно.

Ответ 2

Отказ от ответственности: я не являюсь пользователем hg, поэтому я прочитал о hg, но у меня не так много опыта использования.

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

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

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

Типичные действия по управлению патчами включают в себя:

восстановление очереди исправлений на последней устойчивой ветке - используйте git rebase,

дублирование очереди исправлений на старой ветке maintentance - используйте git branch и git rebase,

переупорядочивание исправлений в очереди - используйте git rebase --interactive (aka git rebase -i) с помощью текстового редактора, чтобы изменить порядок очередей.

раздавить патчи - используйте git rebase -i с директивой сквоша

изменение патчей или сообщений фиксации исправлений - используйте git rebase -i (укажите тему?) с директивой редактирования.

Любая деятельность, которая каким-либо образом изменяет патч (т.е. ее содержимое, описание или родительский элемент), создаст новый коммит с новым идентификатором фиксации для этого патча. Тот факт, что старые коммиты могут быть выброшены и заменены регулярно до того, как они будут переведены на стабильную ведущую ветвь, - это единственное, что делает их "очередью исправлений", а не веткой, но это соглашение проекта, а не любая физическая разница в данных, составляющих коммиты. Для git они являются идентичными объектами.

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

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

Ответ 3

Просто используйте ветку и регулярно обновляйте ее по отношению к своей ветке вверх. Это проще и безопаснее, чем использование mq (к которому я потерял данные в прошлом).

Ответ 4

Git действительно не предоставляет эту функцию. В зависимости от ваших целей вы можете пройти с помощью "git stash" и/или ветвей, но это будет довольно просто. Если у людей более сложные потребности управления исправлениями с помощью git, они, похоже, обращаются к Quilt или StGit: см. http://git.or.cz/gitwiki/PatchManagement