Antworten:
Das wird fast funktionieren.
Wenn Sie zu einem nicht standardmäßigen Zweig wechseln, müssen Sie die Quellreferenz und die Zielreferenz angeben:
git push origin branch1:branch2
Oder
git push <remote> <branch with new changes>:<branch you are pushing to>
<remote>/<branch>
git push origin :branch2
denkt, dass er nur den aktuellen lokalen Zweig auf die Fernbedienung schiebt branch2
und stattdessen die Fernbedienung löschtbranch2
! Der richtige Weg ist git push origin HEAD:branch2
.
Sicher, obwohl es nur funktioniert, wenn es ein schneller Vorlauf von BRANCH2 ist oder wenn Sie es erzwingen. Die richtige Syntax dafür ist
git push <remote> <source branch>:<dest branch>
Weitere Informationen zur Funktionsweise finden Sie in der Beschreibung einer "refspec" auf der git push-Manpage . Beachten Sie auch, dass sowohl ein Force-Push als auch ein Reset Vorgänge sind, die "den Verlauf neu schreiben" und nicht von schwachen Herzen versucht werden sollten, es sei denn, Sie sind absolut sicher, dass Sie wissen, was Sie in Bezug auf Remote-Repositorys und andere tun Leute, die Gabeln / Klone des gleichen Projekts haben.
git push --force remote local-branch:remote-branch
.
Es ist sehr einfach. Angenommen, Sie haben Änderungen an Ihrem Zweig A vorgenommen, der sich sowohl lokal als auch remote befindet, möchten diese Änderungen jedoch auf Zweig B übertragen, der nirgendwo vorhanden ist.
Schritt 01: Erstellen und Wechseln zum neuen Zweig B.
Git Checkout -b B.
Schritt 02: Fügen Sie Änderungen in der neuen lokalen Verzweigung hinzu
git hinzufügen. // oder bestimmte Datei (en)
Schritt 03: Übernehmen Sie die Änderungen
git commit -m "commit_message"
Schritt 04: Änderungen in den neuen Zweig B verschieben . Mit dem folgenden Befehl wird auch remote ein neuer Zweig B erstellt
Git Push Ursprung B.
Jetzt können Sie anhand von Bitbucket überprüfen, ob der Zweig B ein Commit mehr als der Zweig A hat . Und wenn Sie den Zweig A auschecken, werden diese Änderungen nicht vorhanden sein, da sie in den Zweig B verschoben wurden .
Hinweis: Wenn Sie Ihre Änderungen in Zweig A übernommen haben und danach diese Änderungen in den neuen Zweig B verschieben möchten, müssen Sie diese Änderungen zuerst zurücksetzen. #HappyLearning
In meinem Fall hatte ich ein lokales Commit, das nicht origin\master
verschoben, sondern an meine lokale master
Niederlassung übergeben wurde. Dieses lokale Commit sollte jetzt in einen anderen Zweig verschoben werden.
Mit Git Extensions können Sie Folgendes tun:
Sie können dies auch über die GIT-Befehlszeile tun . Beispiel von David Christensen kopiert :
Ich denke, Sie werden feststellen, dass
git cherry-pick
+git reset
ein viel schnellerer Workflow ist:Wenn Sie dasselbe Szenario verwenden und "Feature" der Zweig ist, in dem das oberste Commit falsch ist, ist dies viel einfacher:
git checkout master
git cherry-pick feature
git checkout feature
git reset --hard HEAD^
Spart viel Arbeit und ist das Szenario,
git cherry-pick
für das es entwickelt wurde.Ich werde auch bemerken, dass dies auch funktioniert, wenn es nicht das oberste Commit ist; Sie brauchen nur einen Commitish für das Argument, um zu wählen, über:
git checkout master
git cherry-pick $sha1
git checkout feature
git rebase -i ... # whack the specific commit from the history
Ich habe ein schlechtes Ergebnis mit git push origin branch1:branch2
Befehl:
In meinem Fall branch2
wird gelöscht und branch1
mit einigen neuen Änderungen aktualisiert.
Wenn Sie also nur die Änderungen auf die Push wollen branch2
von der branch1
, versuchen Verfahren unter:
branch1
:git add .
branch1
:git commit -m 'comments'
Am branch1
:git push origin branch1
Am branch2
:git pull origin branch1
Ein branch1
: Zum vorherigen Commit zurückkehren.
Sie können dies leicht tun
git status
git add .
git commit -m "any commit"
git pull origin (branch name, master in my case)
git push origin current branch(master):branch 2(development)(in which you want to push changes)
git init
#git remote remove origin
git remote add origin <http://...git>
echo "This is for demo" >> README.md
git add README.md
git commit -m "Initail Commit"
git checkout -b branch1
git branch --list
****add files***
git add -A
git status
git commit -m "Initial - branch1"
git push --set-upstream origin branch1
#git push origin --delete branch1
#git branch --unset-upstream
Sie haben sich zu BRANCH1 verpflichtet und möchten dieses Commit entfernen, ohne die Änderungen zu verlieren? Git Reset ist das, was Sie brauchen. Tun:
git branch BRANCH2
Wenn Sie möchten, dass BRANCH2 ein neuer Zweig ist. Sie können dies auch am Ende mit einem anderen Zweig zusammenführen, wenn Sie möchten. Wenn BRANCH2 bereits vorhanden ist, lassen Sie diesen Schritt weg.
Dann mach:
git reset --hard HEAD~3
Wenn Sie das Commit für den von Ihnen festgeschriebenen Zweig zurücksetzen möchten. Dies übernimmt die Änderungen der letzten drei Commits.
Führen Sie dann die folgenden Schritte aus, um die zurückgesetzten Commits auf BRANCH2 zu übertragen
git checkout BRANCH2
Diese Quelle war hilfreich: https://git-scm.com/docs/git-reset#git-reset-Undoacommitmakingitatopicbranch
branch1
undbranch2
müssen auf der Fernbedienung sein? Was ist, wenn Sie von lokalbranch1
auf die Fernbedienung übertragen möchtenorigin branch2
?