51 votes

git équivalent à hg mq?

Je viens juste de commencer à utiliser Git aux côtés de Mercurial pour me familiariser avec Git.

J'utilise beaucoup l'extension mq dans Mercurial pour gérer les correctifs locaux et je recherche un équivalent Git.

Devrais-je simplement utiliser la branche Git? Ou existe-t-il de meilleurs moyens de gérer les correctifs locaux permettant d’appliquer et de supprimer facilement les correctifs?

Merci,

31voto

Charles Bailey Points 244082

Disclaimer: je ne suis pas un hg utilisateur, de sorte que j'ai lu sur hg, mais n'ont pas beaucoup d'expérience de première main de l'utiliser.

git fournit plusieurs outils puissants et flexibles pour la gestion des branches dans un "patch file d'attente" de style pour un grand nombre de base (et même certains assez complexe) des cas d'utilisation, natif git est suffisamment puissant.

Généralement, la plupart des projets de garder une centrale stable de la branche master qui seulement de nouveaux gains s'engage et n'est jamais "rembobiné" de sorte s'engage dans la branche master sont fixes.

Sur le dessus de cela un responsable (ou un développeur) peut disposer d'un ou plusieurs fluides branches de l'avancée des travaux correctifs (c'est à dire commits), qui sont basés sur la branche stable.

Typique patch de gérer les activités comprennent:

le rebasage le patch file d'attente sur la dernière branche stable - utiliser git rebase,

dupliquer le patch file d'attente sur un vieux maintentance d'une branche d'utilisation git branch et git rebase,

la réorganisation des patchs dans la file d'attente, utilisez git rebase --interactive (aka git rebase -i) à l'aide d'un éditeur de texte pour réorganiser la file d'attente.

l'écrasement de patchs à usage git rebase -i avec la courge directive

modifier les patchs ou les patch des messages de commit - utiliser git rebase -i (spot un thème?) avec la modification de la directive.

Toute activité qui modifie un patch en quelque sorte (c'est à dire son contenu, de description ou de filiation) va créer un nouveau commit avec un nouveau commit id pour le patch. Le fait que la vieille s'engage peuvent être jetés et remplacés régulièrement avant ils sont promus à la stabilité de la branche master est la seule chose qui les rend un "patch file d'attente", plutôt que d'une branche, mais c'est un projet de convention plutôt que d'une différence physique dans les données qui fait le commet. Git ils sont des objets identiques.

Afin de promouvoir un patch pour un "vrai" commit est juste déplacer le patch à l'avant de la file d'attente et la fusion dans la branche master. Après le déplacement du patch à l'avant de la file d'attente, il est tout de même normal de commettre basée sur la branche master, de sorte que la fusion juste pour avancer rapidement la branche master pointeur sur le patch s'engager.

La publication de ce commit comme "stable" maître patch est la loi qui dit: c'est maintenant une révision qui ne changera pas et est une partie de l'immuable de l'histoire du projet.

31voto

Jakub Narębski Points 87537

Découvrez "Patch-gestion de l'Interface des couches" de la section Interfaces, Interfaces Et Outils de la page sur Git Wiki. Il y a deux patch interfaces de gestion, à peu près équivalent à la Mercuriels 'mq' extension:

  • StGIT (Empilés Git), le plus ancien des deux, écrit en Python, utilise deux images pour représenter patch
  • La culpabilité (autrefois "gq"), écrite en tant que série de scripts bash, série de fichiers et les patchs (un par fichier) sont stockés en tant que fichier texte.
  • pg (Inégale Git) est obsolèteet n'est plus maintenu.

Mais si vous n'avez pas besoin des utilisations plus avancées, vous pouvez utiliser à la place de "git rebase --interactive" de réorganiser, de squash et de diviser les patchs. Et pour gérer votre branche contre la version actuelle de l'amont, "git rebase" généralement suffirait.

9voto

Dustin Points 35205

Utilisez simplement une branche et rebassez-la régulièrement contre votre branche en amont. C’est à la fois plus facile à gérer et plus sûr que d’utiliser mq (pour lequel j’avais déjà perdu des données).

7voto

C Pirate Points 401

Git ne fournit pas vraiment cette fonctionnalité elle-même. En fonction de vos utilisations, vous pourrez peut-être vous débrouiller avec "git stash" et / ou des branches, mais ce sera assez basique. Si les utilisateurs ont des besoins plus avancés en matière de gestion des correctifs avec git, ils semblent se tourner vers Quilt ou StGit: voir http://git.or.cz/gitwiki/PatchManagement

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X