Welche dieser Zeilen ist richtig?
git checkout 'another_branch'
Oder
git checkout origin 'another_branch'
Oder
git checkout origin/'another_branch'
Und was ist der Unterschied zwischen diesen Zeilen?
git
github
version-control
gitlab
git-checkout
Benyamin Jafari
quelle
quelle
git checkout [branch]
für die meisten Benutzer, die zu dieser Frage kommenAntworten:
Wenn es
another_branch
bereits lokal vorhanden ist und Sie sich nicht in diesem Zweig befinden,git checkout another_branch
wechseln Sie zum Zweig.Wenn
another_branch
es nicht existiert, aber existiertorigin/another_branch
,git checkout another_branch
ist es äquivalent zugit checkout -b another_branch origin/another_branch; git branch -u origin/another_branch
. Das ist erstellenanother_branch
ausorigin/another_branch
und Setorigin/another_branch
als voranother_branch
.Wenn keines vorhanden ist, wird ein
git checkout another_branch
Fehler zurückgegeben.git checkout origin another_branch
Gibt in den meisten Fällen einen Fehler zurück. Wennorigin
es sich um eine Revision undanother_branch
eine Datei handelt, wird die Datei dieser Revision ausgecheckt, aber höchstwahrscheinlich ist dies nicht das, was Sie erwarten.origin
ist vor allem in verwendetgit fetch
,git pull
undgit push
als Fernbedienung, ein Alias der URL zur Remote - Repository.git checkout origin/another_branch
erfolgreich, wennorigin/another_branch
vorhanden. Es führt dazu, dass es sich in einem abgetrennten HEAD-Zustand befindet, nicht in einem Zweig. Wenn Sie neue Commits vornehmen, sind die neuen Commits von keinem vorhandenen Zweig aus erreichbar und keiner der Zweige wird aktualisiert.UPDATE :
Da 2.23.0 veröffentlicht wurde, können wir damit auch
git switch
Zweige erstellen und wechseln.Wenn
foo
vorhanden, versuchen Sie zu wechseln zufoo
:Wenn
foo
nicht vorhanden ist undorigin/foo
vorhanden ist , versuchen zu erstellenfoo
ausorigin/foo
und wechseln Sie dann zufoo
:Wenn
foo
dies nicht vorhanden ist, versuchen Sie im Allgemeinen,foo
aus einem bekannten Verweis oder Commit zu erstellen , und wechseln Sie dann zufoo
:Wenn wir gleichzeitig ein Repository in Gitlab und Github verwalten, verfügt das lokale Repository möglicherweise über zwei Fernbedienungen, z. B.
origin
für Gitlab undgithub
für Github. In diesem Fall hat das Repositoryorigin/foo
undgithub/foo
.git switch foo
wird sich beschwerenfatal: invalid reference: foo
, weil es nicht bekannt ist, aus welchem reforigin/foo
odergithub/foo
zu erstellenfoo
. Wir müssen es mitgit switch -c foo origin/foo
odergit switch -c foo github/foo
nach Bedarf spezifizieren . Wenn Sie Zweige aus beiden Remote-Zweigen erstellen möchten, ist es besser, unterscheidende Namen für die neuen Zweige zu verwenden:Wenn
foo
vorhanden, versuchen Sie, eine bekannte Referenz oder ein Commit neu zu erstellen / zu erzwingenfoo
(oder auf diese zurückzusetzenfoo
) und wechseln Sie dann zufoo
:die gleichbedeutend sind mit:
Versuchen Sie, zu einem getrennten HEAD eines bekannten Refs oder Commits zu wechseln:
Wenn Sie nur einen Zweig erstellen möchten, aber nicht zu diesem wechseln möchten, verwenden Sie
git branch
stattdessen. Versuchen Sie, einen Zweig aus einem bekannten Verweis oder Commit zu erstellen:quelle
git checkout
Befehl hat zu viele Dinge, meiner Meinung nach . Deshalb gibt es hier so viele Betriebsarten. Wenn das einzige , wasgit checkout
tut , war Schalter Zweig, wäre die Antwort einfach sein, aber es kann auch schaffen Zweige und sogar Dateien aus bestimmten Commits extrahieren , ohne Zweig zu wechseln.git switch
zu einem Zweig wechseln.git checkout
stattdessen für alte Versionen, die auch in modernen Versionen funktioniert.Wechseln zu einem anderen Zweig in Git. Einfache Antwort,
git-checkout - Zweige wechseln oder Arbeitsbaumdateien wiederherstellen
Stellen Sie vor dem Wechseln des Zweigs sicher, dass Sie keine geänderten Dateien haben. In diesem Fall können Sie die Änderungen festschreiben oder sie speichern.
quelle
[
git checkout "branch_name"
]ist eine andere Art zu sagen:
[
git checkout -b branch_name origin/branch_name
]falls "branch_name" nur remote existiert .
[
git checkout -b branch_name origin/branch_name
] ist nützlich, wenn Sie mehrere Fernbedienungen haben.In Bezug auf [
git checkout origin 'another_branch'
] bin ich mir nicht sicher, ob dies möglich ist. AFAK Sie können dies mit dem Befehl "fetch" tun - [git fetch origin 'another_branch'
]quelle
Mit Git 2,23 ab, kann man verwenden
git switch <branch name>
Zweigen umzuschalten.quelle
Was für mich funktioniert hat, ist Folgendes:
quelle
Nützliche Befehle für die Arbeit im täglichen Leben:
quelle
Wenn Sie möchten, dass der Zweig den Remote-Zweig verfolgt, was sehr wichtig ist, wenn Sie Änderungen am Zweig festschreiben und Änderungen usw. abrufen möchten, müssen Sie für die eigentliche Kaufabwicklung ein -t hinzufügen, z.
git checkout -t branchname
quelle
Prüfen :
git branch -a
Wenn Sie nur einen Zweig bekommen. Führen Sie dann die folgenden Schritte aus.
git config --list
git config --unset remote.origin.fetch
git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
quelle
depth
Parameter) erstellt haben und sich jetzt fragen, warum Sie keine anderen Remote-Zweige abrufen können, umerror: pathspec 'another_branch' did not match any file(s) known to git
die oben vorgeschlagenen Befehle zu erhalten. Es ist sicherlich nicht das, worum es bei der ursprünglichen Frage ging, aber es kann anderen helfen, sich hier am Kopf zu kratzen.Ich benutze dies, um einen Zweig zu einem anderen zu wechseln. Jeder, den Sie verwenden können, funktioniert für mich wie ein Zauber.
git switch [branchName] ODER git checkout [branchName]
Beispiel: Git Switch entwickeln ODER
Git Checkout entwickeln
quelle