Kann ich lokale Niederlassungen an entfernte Niederlassungen mit verschiedenen Präfixen in git Karte?
Frage
Wir arbeiten mit einer semi-zentralen Git Repository hier, wo ich arbeite. Jeder Entwickler hat seine eigene Unterstruktur im zentralen Git Repository, so sieht es etwa so aus:
master alice/branch1 alice/branch2 bob/branch1 michael/feature release/1.0 release/1.1
Die Arbeit vor Ort in meinem Baum Ich habe topic/feature
, die im zentralen Baum michael/feature
entspricht.
Ich habe mit
git push origin topic/feature:michael/feature
, um meine Änderungen an den entfernten Baum zu schieben. Dies ist jedoch umständlich und fehleranfällig (zum Beispiel der Entwicklernamen weggelassen, Rechtschreibfehler die Merkmalsnamen, usw.).
Ich bin auf der Suche für einen sauberere Weg, dies zu tun. Zum Beispiel: „git push
“. Ich vermute, dass mit einem modifizierten holen Refspec eine andere Remote-Einstellung wird es tun, aber ich bin nicht sicher, wie genau es zu tun. Ich bin auch nicht sicher, wie meine aktuellen Zweige Definitionen zu ändern, um die verschiedenen Remote zu verwenden.
Mein aktueller .git/config
sieht etwa so aus:
[remote "origin"] url = git://central/git/project fetch = +refs/heads/*:refs/remotes/origin/* [branch "topic/feature"] remote = origin merge = refs/heads/michael/project
Edit: Ich würde auch / holt zieht wie diese anzuwenden. Aber hat der branch.<name>.merge
kümmert das?
Ich werde dies auch weiterhin Forschung und hier posten, wenn ich etwas finden, aber ich bin der Hoffnung, ein paar andere gute Ideen zu erhalten.
Edit 2: Ich habe beschlossen, ich lokale und Remote-Zweignamen gleich bleiben werden. Es scheint, es wird die am wenigsten Arbeit und am wenigsten anfällig für zukünftige Probleme sein.
Lösung
Wenn Sie können, ich schlage vor, Sie verwenden den gleichen Zweig Namen lokal und remote. Dann git push
wird alle Ihre lokalen Niederlassungen in entsprechenden Filialen im zentralen Repository schieben.
Um verschiedene Präfixe in lokaler und Remote-repos zu verwenden, müssen Sie eine Zuordnung zu Ihrer Konfigurationsdatei hinzuzufügen, jedes Mal, wenn ein neues Feature Zweig erstellen. Der Befehl, um die Zuordnung für Thema einzurichten / branch_name ist
git config remote.origin.push refs/heads/topic/BRANCH_NAME:michael/BRANCH_NAME
Andere Tipps
In Ihrem [remote "Ursprung"] Abschnitt, fügen Sie eine Zeile pro Mapping. Einschließlich der Master zu Master.
push = refs/heads/master:master
push = refs/heads/topic/feature:michael/feature
Ich bin mir nicht sicher, wie es mit dem git-config Befehl zu tun.
Beachten Sie, dass von nun an alle Zweige auf derselben geschoben werden, wenn Sie einen geraden git push tun (ohne params).
Wollen Sie erklären, warum Sie halten nicht den gleichen Zweig Namen lokal als auch remote?
Sie können Ihre Niederlassung zu verschiedenen Tracking-Zweig auf der Fernbedienung mit so etwas wie diese Karte:
git remote add heroku git@heroku.com:YOURAPPNAME.git
git checkout -b heroku -t heroku/master
Ihre Konfiguration endet ähnlich dem, was @ Paul schlägt vor (ein bisschen „einfacher“ tatsächlich).
Sehen Sie diesen Kern (mit Verbesserungen von mir) für die Nutzung Schritte, die gut für mich arbeiten https: //gist.github .com / 2002048 .