Вопрос

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

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

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

Спасибо,

Это было полезно?

Решение

Ознакомьтесь с разделом "Уровни интерфейса управления исправлениями" в Интерфейсы, Внешние интерфейсы и Инструменты страница в Git Wiki.Там перечислены два интерфейса управления исправлениями, примерно эквивалентных Mercurials 'mq' расширение:

  • СтГИТ (Stacked Git), более старый из двух, написанный на Python, использует два моментальных снимка для представления исправления
  • Чувство вины (ранее "gq"), написанный в виде серии bash-скриптов, файл серии и патчи (по одному на файл) хранятся в виде обычного текстового файла.
  • pg (Неоднородный Git) - это устаревший, и больше не поддерживается.

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

Другие советы

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

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

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

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

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

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

дублирование очереди исправлений в старую ветку обслуживания — используйте git branch и git rebase,

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top