Creare un ramo in Git da un altro ramo
-
11-10-2019 - |
Domanda
Ho due rami: Master e dev
Voglio creare un "ramo di caratteristica" dalla dev ramo.
Attualmente sul dev ramo, lo faccio:
$ git checkout -b myfeature dev
... (un po 'di lavoro)
$ git commit -am "blablabla"
$ git push origin myfeature
Ma, dopo la visualizzazione miei rami, ho ottenuto:
--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**
voglio dire che il ramo sembra ff fuse, e non capisco perché ...
Quello che sto facendo di sbagliato?
Mi può spiegare per favore come si dipartono da un altro ramo e spingere indietro al repository remoto per il ramo funzione?
Tutto ciò in un modello di ramificazione come quello descritto qui .
Soluzione
Se ti piace il metodo nel link che hai postato, dare un'occhiata al Git flusso .
Si tratta di una serie di script che ha creato per questo flusso di lavoro.
Ma per rispondere alla tua domanda:
$ git checkout -b myFeature dev
Crea ramo MyFeature off dev. Fate il vostro lavoro e quindi
$ git commit -am "Your message"
Ora unire le modifiche a dev senza un fast-forward
$ git checkout dev
$ git merge --no-ff myFeature
Ora spingere le modifiche al server
$ git push origin dev
$ git push origin myFeature
E lo vedrai come si desidera.
Altri suggerimenti
Se si desidera creare un nuovo ramo da una qualsiasi delle filiali esistenti in Git, basta seguire le opzioni.
Prima sostituzione / checkout nel ramo da cui si desidera creare un nuovo ramo. Per esempio, se avete i seguenti settori come:
- Master
- dev
- Branch1
Quindi, se si desidera creare un nuovo ramo chiamato "subbranch_of_b1" sotto il ramo denominato "Branch1" seguire la procedura:
-
Checkout o cambiamento in "Branch1"
git checkout branch1
-
Ora creare il nuovo ramo chiamato "subbranch_of_b1" sotto la "Branch1" utilizzando il seguente comando.
git checkout -b subbranch_of_b1 branch1
Il precedente creerà un nuovo ramo chiamato subbranch_of_b1 sotto il ramo Branch1 (nota che
branch1
nel comando di cui sopra non è obbligatoria Poiché la testina sta puntando ad essa , è possibile precisa, se siete su un ramo diverso però). -
Ora, dopo aver lavorato con il subbranch_of_b1 si può commettere e spingere o fondere localmente o in remoto.
spingere il subbranch_of_b1 a remoto
git push origin subbranch_of_b1
Crea un ramo
- Crea ramo quando branch master è stato estratto. Qui si impegna in master saranno sincronizzati al ramo si è creato.
$ git branch branch1
- Crea ramo quando Branch1 è stato estratto. Qui si impegna a Branch1 saranno sincronizzati per Branch2
$ git branch branch2
Acquista un ramo
git checkout rami degli interruttori di comando o ripristinare i file di lavoro albero
-
$ git checkout branchname
La ridenominazione di un ramo
-
$ git branch -m branch1 newbranchname
Elimina un ramo
-
$ git branch -d branch-to-delete
-
$ git branch -D branch-to-delete
( forza di eliminazione senza il controllo dello stato fusione )
Crea e interruttore Branch
-
$ git checkout -b branchname
rami che sono completamente inclusi
-
$ git branch --merged
************************** Differenze Branch [git diff branch1..branch2] **** ********************
differenza Multiline-
$ git diff master..branch1
-
$ git diff --color-words branch1..branch2
Do sul ramo dev
. Quello che succede è che nello scenario le funzionalità di ramo si muove avanti dalla punta del ramo dev, ma il ramo dev non cambia. E 'più facile per disegnare come una linea retta, perché può essere pensato come movimento in avanti. Sei arrivato al punto AL dev, e da lì è sufficiente continuato su un percorso parallelo. I due rami non hanno realmente discostato.
Ora, se si effettua un commit sul dev, prima della fusione, si ricominceranno allo stesso commit, A, ma ora dispone andrà a C e dev per B. Questo mostrerà la spaccatura che si sta tentando di visualizzare, come i rami hanno ormai discostato.
*-----*Dev-------*Feature
Versus
/----*DevB
*-----*DevA
\----*FeatureC
Git 2.23 introduce git switch
e git restore
per dividere le responsabilità di git checkout
Creazione di un nuovo ramo da un ramo esistente come di git 2.23:
git switch -c my-new-branch
passato a un nuovo ramo 'il mio nuovo ramo'
- -c è l'abbreviazione di - creare e sostituisce il noto git checkout -b
Date un'occhiata al questo Github blog post che spiega i cambiamenti in modo dettagliato:
Git 2.23 porta un nuovo paio di comandi sperimentali alla suite di esistere quelli: interruttore git e GIT ripristinare . Questi due sono destinati alla fine fornire una migliore interfaccia per il noto cassa git. Il nuovo comandi intenda hanno ciascuno una separazione netta, ordinatamente divvying quali sono le molte responsabilità di git checkout
Se si vuole fare un ramo da un po 'di un altro ramo quindi seguire muggito passi:
Ipotesi :
- You are currently in branch master.
- Non ci sono cambiamenti per commettere. (In caso di modifiche a commettere, riporre esso!).
-
BranchExisting
è il nome del ramo da cui è necessario fare una nuova filiale con il nomeBranchMyNew
.
Passi :
-
Scarica il ramo sulla macchina locale.
$ git fetch origin BranchExisting : BranchExisting
Questo comando creerà una nuova filiale nel vostro locale con lo stesso nome del ramo.
-
Ora, dal ramo principale cassa al ramo di recente recuperato
$ git checkout BranchExisting
-
Si è ora in BranchExisting. Ora creare un nuovo ramo da questo ramo esistente.
$ git checkout -b BranchMyNew
Ecco a te!
Per la creazione di un ramo da un altro si può usare questa sintassi così:
git push origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>
E 'un po' più corto "git checkout -b" + "push origin git"