Come mantenere un repository git biforcato con feature branch che upstream non tirerà?

8

Quindi ecco un tipico flusso di lavoro su Github ...

  1. Come alcuni progetti -> fork it -> git clone https://github.com/you/someproject .

  2. Apri progetto. Come quello che vedi, ma apporta alcune modifiche.

  3. Avendo fatto attenzione a lavorare solo su feature-branch ( git checkout -b some-feature ), decidi di effettuare una richiesta pull con upstream maintainer - dopo aver spinto il tuo feature-branch nel tuo fork di Github.

  4. Manutentore, per qualsiasi motivo, rifiuta il pull.

Ad esempio .. ecco una richiesta di pull non riuscita inviata che corrisponde allo scenario precedente. ..

Ora tipicamente , se il maintainer HAD ha unito il pull ... il flusso di lavoro sarebbe stato semplice ... Sul mio computer locale, avrei commesso qualsiasi modifica locale su a prescindere dal fatto che feature-branch I era attivo al momento ... git fetch --all , git checkout master , git pull upstream --ff-only . Quindi riproduci le mie modifiche in aggiunta, come desiderato ...

MA ...

Che cosa succede se decido di voler continuare a modificare le modifiche apportate alla mia fork, in modo irreprensibile ... eppure voglio ancora essere in grado di tenere traccia + unire le modifiche che si verificano in upstream ? Normalmente, eliminerei il ramo della funzione e procederò come segue. Come mantenere un ramo master che è possibile unire a monte, ma mantiene le funzioni della forcella pur essendo "permanentemente staccato" da upstream HEAD ?

    
posta alex gray 16.10.2013 - 17:00
fonte

1 risposta

6

Indipendentemente dall'uso del tuo scenario, ecco come puoi farlo:

  • master è esattamente la versione che il master upstream ha
  • custom è il tuo ramo "principale" in cui hai applicato le modifiche di formattazione
  • tutte le diramazioni feature sono diramate su custom se non vuoi che vengano estratte nel master upstream
  • Una volta che il master è stato aggiornato, puoi rebase su Custom per diventare master e quindi rebase i branch delle tue funzionalità a custom

Con questa strategia dovrebbe funzionare. Tuttavia, tieni presente che tutte le modifiche apportate in un ramo di funzione basato su personalizzato non verranno accettate nel master upstream.

    
risposta data 22.12.2013 - 09:58
fonte

Leggi altre domande sui tag