Ich habe mich gefragt, ob es eine einfache Möglichkeit gibt, einen lokalen Zweig mit einem Remote-Zweig mit einem anderen Namen zu verschieben und zu ziehen, ohne immer beide Namen anzugeben.
Beispielsweise:
$ git clone myrepo.git
$ git checkout -b newb
$ ...
$ git commit -m "Some change"
$ git push origin newb:remote_branch_name
Wenn jemand remote_branch_name aktualisiert, kann ich:
$ git pull
Und alles wird zusammengeführt / vorgespult. Wenn ich jedoch Änderungen an meinem lokalen "Neuling" vornehme, kann ich nicht:
$ git push
Stattdessen muss ich:
% git push origin newb:remote_branch_name
Scheint ein wenig albern. Wenn git-pull
verwendet wird git-config branch.newb.merge
, um zu bestimmen, woher gezogen werden soll, warum kann es keine git-push
ähnliche Konfigurationsoption geben? Gibt es dafür eine nette Abkürzung oder soll ich einfach den langen Weg fortsetzen?
quelle
git push buildserver .:test_this
wo der.
Name der lokalen Niederlassung sein soll, den ich nicht unbedingt kenne. Ich könnte es sicher nachschlagen, aber wenn es dafür eine kurze Hand wie den Punkt gäbe, wäre es cool.HEAD
ist die Abkürzung, die Sie suchen.HEAD
Dies verweist auf den aktuell ausgecheckten Zweig oder direkt auf ein bestimmtes Commit, wenn Sie einen abgetrennten Kopf haben.Updates were rejected because a pushed branch tip is behind its remote
Fehler für mich behoben . Mein lokales Repo war auf dem neuesten Stand, aber die Namen waren einfach anders.Wenn Sie den ersten Push ausführen , fügen Sie den Parameter -u hinzu :
Nachfolgende Pushs gehen dahin, wo Sie wollen.
BEARBEITEN:
Laut Kommentar wird dadurch nur Pull eingerichtet.
Sollte es tun.
quelle
-u
setzt einfach den Upstream, der laut Frage schon gesetzt ist. Er muss einstellenpush.default
,upstrem
umpush
die Upstream-Einstellung zu respektieren, da dies standardmäßig nur derpull
Fall ist.git branch --set-upstream
es notwendig ist. Hinweis: Meingit --version
ist 2.17.1.Der Befehl von Adam ist jetzt veraltet. Sie können verwenden:
um den Upstream-Zweig von
my_local_branch
zu setzenorigin/my_remote_branch
.quelle
Hier ist der Prozess, der für mich funktioniert hat.
Jetzt ist Ihr neues Repo "Ursprung" und das ursprüngliche Repo ist "Upstream". Bestätigen Sie dies, indem Sie git remote -v ausführen. (Randnotiz: Upstream wird zum Abrufen des ursprünglichen Repos verwendet, um Ihre lokale Kopie mit dem Projekt synchron zu halten, zu dem Sie beitragen möchten, und Origin wird zum Ziehen und Schieben verwendet, da Sie zu Ihrem eigenen Repo beitragen können.)
git push origin master
Jetzt ist der Master Ihres neuen Remote-Repos (auf Github) mit dem ursprünglichen Master synchron, hat jedoch keinen der Feature-Zweige.
Rebase ist eine intelligente Zusammenführung. Drücken Sie dann erneut auf Master und Sie sehen den ausgewählten Feature-Zweig als Master auf dem neuen Repo.
Optional:
quelle
Ich habe seit einiger Zeit das gleiche Problem. Ich habe endlich eine Reihe von Aussagen, damit ich nicht
git push origin local:remote
jedes Mal etwas tun muss. Ich folgte diesen:Nach dem Einrichten des Upstreams für einen Remote-Zweig mit einem anderen Namen (1. Zeile) und dem anschließenden Festlegen des Upstreams als Standard (2. Zeile) befolgt die 3. Zeile nun diese Regeln und wechselt zum festgelegten Upstream.
quelle