Kann ich lokale Niederlassungen an entfernte Niederlassungen mit verschiedenen Präfixen in git Karte?

StackOverflow https://stackoverflow.com/questions/167697

  •  03-07-2019
  •  | 
  •  

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.

War es hilfreich?

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 .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top