Come fare il flusso git lineare?


1

Il mio dev shop ha un flusso git preferito in questo modo:

  1. Acquista un ramo di emissione ( issue9 ).
  2. Risolvi il problema ( serve over port 80 ).
  3. Commettere ( git commit ...).
  4. Unisci il ramo di emissione in un ramo di funzionalità locale ( cal ).
  5. Spingere il ramo di funzione locale a origin.

    • Tutte le fusioni dovrebbero essere veloci se possibile.

Quest'ultima costrizione mi sta facendo strappare i capelli - in pratica, posso:

  1. Unisci il problema in commit nel ramo di funzionalità locale.
  2. Al che git si rifiuta di spingere verso l'origine, a causa di modifiche remote.
  3. Estrarre le modifiche remote al ramo di funzionalità locale.
  4. Git genera automaticamente un commit di unione separato.

O

  1. Estrarre le modifiche remote al ramo di funzionalità locale.
  2. Git genera automaticamente un commit di unione separato.

C'è un ambiente che posso modificare in git globale / locale per ottenere questo comportamento? Quando provo a farlo, finisco per incasinare git e dover eseguire quattro dei cinque comandi git per ripulirlo.

voglio solo emacs && git commit && git checkout cal && git merge issue9 && git push origin cal, lo sai?


Hai capo git-rebase? Sembra che sia esattamente quello che stai cercando. O la tua azienda non consente la ridefinizione?
neersighted

Risposte:


2

Per tiri one-off, puoi usare git pull --rebase:

$ git commit
$ git checkout cal
$ git merge issue9
$ git pull --rebase
$ git push origin cal

Per configurare git a comportarsi sempre in questo modo git pull, rendere il vostro ~/.gitconfig Assomiglia a questo:

[push]
    default = matching
[branch]
    autosetuprebase = always
[color]
    status = auto
[merge]
    ff = true

Grazie! Sono contento che l'unica modifica al mio attuale flusso di Git sia solo la --rebase opzione a git pull.
mcandre
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.