Domanda

Stiamo lavorando con un repository git semi-centralizzato qui dove lavoro. Ogni sviluppatore ha la sua sottostruttura nel repository git centrale, quindi è simile a questa:

master
alice/branch1
alice/branch2
bob/branch1
michael/feature
release/1.0
release/1.1

Lavorando localmente nel mio albero ho topic/feature, che corrisponde a michael/feature nella struttura centrale.

Sto usando

git push origin topic/feature:michael/feature

per inviare le mie modifiche all'albero remoto. Tuttavia, ciò è ingombrante e soggetto a errori (ad es. Omissione del nome dello sviluppatore, errori di ortografia del nome della funzione, ecc.).

Sto cercando un modo più pulito per farlo. Ad esempio, & Quot; git push & Quot ;. Ho il sospetto che l'impostazione di un telecomando diverso con un refspec di recupero modificato lo farà, ma non sono sicuro di come farlo esattamente. Inoltre, non sono sicuro di come modificare le definizioni dei rami correnti per utilizzare il telecomando diverso.

La mia attuale .git/config assomiglia a:

[remote "origin"]
    url = git://central/git/project
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "topic/feature"]
    remote = origin
    merge = refs/heads/michael/project

Modifica: Vorrei anche applicarlo a pull / fetch. Ma branch.<name>.merge se ne occupa?

Continuerò a ricercare questo e pubblicherò qui se trovo qualcosa, ma spero di ottenere qualche altra buona idea.

Modifica 2: Ho deciso di mantenere uguali i nomi delle filiali locali e remote. Sembra che sarà il minimo lavoro e il meno incline a problemi futuri.

È stato utile?

Soluzione

Se puoi, ti suggerisco di usare gli stessi nomi di ramo localmente & amp; da remoto. Quindi git push invierà tutti i tuoi rami locali ai rami corrispondenti nel repository centrale.

Per utilizzare prefissi diversi nei repository locali e remoti, è necessario aggiungere una mappatura al file di configurazione ogni volta che si crea un nuovo ramo di funzionalità. Il comando per impostare il mapping per topic / BRANCH_NAME è

 git config remote.origin.push refs/heads/topic/BRANCH_NAME:michael/BRANCH_NAME

Altri suggerimenti

Nella sezione [remoto " origin "], aggiungi una riga per mappatura. Incluso da maestro a maestro.

push = refs/heads/master:master
push = refs/heads/topic/feature:michael/feature

Non sono sicuro di come farlo con il comando git-config.

Tieni presente che d'ora in poi tutti i rami vengono spinti allo stesso modo quando esegui una spinta dritta (senza parametri).

Ti andrebbe di spiegare perché non mantieni gli stessi nomi di filiale localmente e da remoto?

Puoi mappare il tuo ramo su un altro ramo di monitoraggio sul telecomando con qualcosa del genere:

git remote add heroku git@heroku.com:YOURAPPNAME.git
git checkout -b heroku -t heroku/master

La tua configurazione finisce in modo simile a quanto suggerisce @Paul (un po '" più semplice " in realtà).

Guarda questo riassunto (con alcune modifiche da me) per i passaggi di utilizzo che funzionano bene per me https: //gist.github .com / 2002048 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top