Che cos'è un ramo argomento git?


137

Che cos'è un ramo argomento git? In qualche modo differisce da una normale filiale? Ci sono rami che non sono rami di argomento?

Risposte:


114

I rami degli argomenti sono in genere rami leggeri creati a livello locale e che hanno un nome significativo per te . Sono dove potresti lavorare per una correzione di bug o funzionalità (sono anche chiamati rami di funzionalità) che dovrebbe richiedere del tempo per il completamento.

Un altro tipo di ramo è il "ramo remoto" o "ramo di tracciamento remoto". Questo tipo di ramo segue lo sviluppo del lavoro di qualcun altro e viene archiviato nel proprio repository. Aggiorna periodicamente questo ramo (usando git fetch) per tenere traccia di ciò che sta accadendo altrove. Quando sei pronto a recuperare il ritardo con le modifiche di tutti gli altri, utilizzeresti git pullsia per recuperare che per unire.

Ho anche visto un altro tipo di ramo che è essenzialmente un albero di file completamente separato nello stesso repository. Ad esempio, il repository Git stesso contiene head denominati man e html che contengono contenuti completamente diversi dal ramo master . Non so come si chiamano questi tipi di rami.


6
Stavo cercando come avere due filiali senza un impegno antenato comune e ho
Nicolas

1
Scritto l'albero separato, credo che a volte vengano chiamati un ramo orfano, in modo simile a come Github ti consiglia di creare manualmente una pagina github
massimo

1
Perché dici che una branca dell'argomento deve essere locale? Non c'è motivo di pensare che potresti non voler spingere un ramo di argomento. E, allo stesso modo, altri sviluppatori potrebbero creare i propri rami di argomenti e non vorrai tirarli. Questa risposta sembra confondere due proprietà totalmente non correlate dei rami: se un ramo è locale o meno non è affatto correlato al fatto che sia un ramo di argomento.
Jean-Paul Calderone,

@ Jean-PaulCalderone: non credo di aver detto che i rami degli argomenti devono essere locali. Puoi monitorare in remoto un ramo di argomento, ovviamente, se vi è più di uno sviluppatore che ci lavora.
Greg Hewgill,

2
Penso che la risposta lo implichi. Perché è "... che crei localmente ..." e "... hanno un nome per te significativo." una parte intrinseca di ciò che costituisce un "ramo tematico"? La prima frase della tua risposta suggerisce fortemente che queste sono caratteristiche importanti di un ramo tematico, ma in realtà sono entrambe ortogonali alla "topicness" di un ramo o meno. Il paragrafo seguente in cui descrivi "rami remoti" rinnova l'idea che la parte "creata localmente" di un ramo di argomento sia importante. Suggerisco di ri-focalizzare questa risposta per de-enfatizzare questi tratti di ramo non correlati.
Jean-Paul Calderone,

81

Non è un termine tecnico; si riferisce solo a un ramo creato per implementare una funzione specifica o correggere un bug. L '"argomento" è essenzialmente il motivo della creazione del ramo.


2
Sì. al contrario di un ramo personale, dove hai rami: bob, alice, mat, ecc.
webmat

... quindi il ramo argomento e il ramo funzione sono gli stessi, giusto?
Betlista,

@Betlista Più o meno, sì.
mipadi

28

https://github.com/dchelimsky/rspec/wiki/Topic-Branches lo spiega bene:

Un ramo "argomento" è un ramo separato che si utilizza quando si lavora su un singolo "argomento" (una correzione di bug, una nuova funzionalità o un'idea sperimentale). Si consiglia di lavorare su un ramo argomento anziché direttamente sopra "master" perché:

{... visit link ...}

Quindi, per tutti questi motivi, si consiglia di utilizzare un ramo argomento per preparare gli invii anche per contributi semplici come correzioni di bug a commit singolo e simili.

Questo esempio fornisce anche esempi. Il che in realtà mi ha fatto pensare, questo è probabilmente ciò che la maggior parte dei negozi fa già. Tutti i progetti agili con cui sono mai stato fanno. Ho votato "Non è un termine tecnico" perché sento che questo colpisce l'unghia sulla testa.


4

sembra che il tipo più importante e importante di rami che non sono rami di argomento sarebbero i rami di rilascio su un repository principale, disponibile al pubblico, giusto?

Questo è probabilmente giusto per te, ma riguarda te e il progetto a cui stai pensando; non è determinato da Git.

La maggior parte dei sistemi di controllo delle versioni (in particolare quelli centralizzati) prescrivono o impongono un flusso di lavoro particolare, incluso ciò per cui ha senso usare un ramo. Git (e in una certa misura la maggior parte dei VCS distribuiti) considera che il flusso di lavoro, per quali rami sono usati, quando impegnarsi, per quali diversi repository sono usati, ecc. Sono tutti scelti dagli utenti e gli accordi tra gli utenti (politiche). Quindi Git non li applica tecnicamente.

Questa è una delle cose che mi ha reso difficile da imparare. Oliver Steele ha spiegato questo dal punto di vista dell'utente, scrivendo sulle politiche di commit .

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.