È possibile forzare git a unire i rami di monitoraggio remoto solo nel ramo locale corrispondente? Per esempio. supponiamo origine / X tracce X sull'origine e corrisponde a X locale e lo stesso per origine / Y e Y. Voglio impedire agli utenti di fare git checkout Y; git merge origin/X
. È possibile? Come?
Modifica:
Per chiarire: il flusso di lavoro non è un problema. Le persone cercano di unire i rami sbagliati perché si sono dimenticati di eseguire il checkout del ramo corretto prima di unire. Non si tratta di "trasgressori" o di spingere al repository centrale. Sono solo le persone che si dimenticano di quale ramo sono. L'ultimo "incidente" è stato letteralmente:
"I should commit and push real quick before I leave.
git add .
git commit -am 'Feature Y'
git push originWhoops, whats that. It tells me to merge branch origin/X first. OK whatevs.
git merge origin/X
Whoops, whats that now. Lots of merge conflicts. What have I done. I better call somebody..."
L'utente stava lavorando nel ramo Y e non ha capito cosa stava dicendo git push origin
. Diceva che l'origine / X necessitava della fusione e questo è quello che ha fatto, perché voleva "spingere molto in fretta". Nel caso sopra il ramo X c'era un commit davanti alla X locale, quindi spingendo tutti i rami ha prodotto l'errore "need merging".
Ho modificato il "flusso di lavoro" ora per inserire sempre un ramo in modo esplicito, ad es. git push origin Y
invece di solo git push origin
, ma questo non risolve il problema. Dovrebbe (di solito) non essere consentito senza un avvertimento per unire origine / X con Y. Per unire i rami di feature X e Y possono essere uniti.