delete - git remote branch




Git holt Remote Branch (16)

Überprüfen Sie Ihre .git/config , insbesondere welches Tracking beim Abruf für diese Remote vorhanden ist.

[remote "randomRemote"]
    url = [email protected]:someUser/someRepo.git
    fetch = +refs/heads/*:refs/remotes/randomRemote/*

Wenn heads/* auf randomRemote/* heads/* zeigen, randomRemote/* git fetch randomRemote alle Zweige ab. Dann können Sie einfach diesen Zweig auschecken.

Andernfalls,

  1. Sie müssen dem Tracking Remote-Zweige hinzufügen. Überprüfen Sie Ihre .git/config nach dem Ausführen. Du wirst verstehen. git remote set-branches --add randomRemote randomBranch

  2. Führen Sie git fetch randomRemote . Dies wird die entfernte Verzweigung holen.

  3. Jetzt können Sie git checkout randomBranch

Mein Kollege und ich arbeiten an demselben Repository, das wir in zwei Zweige für verschiedene Projekte technisch aufgeteilt haben, aber sie haben Ähnlichkeiten, so dass wir manchmal von der Verzweigung zum * Master zurückkehren wollen.

Wie auch immer, ich habe den Zweig, wie kann mein Kollege diesen Zweig konkret ziehen. Ein git clone des Repo scheint die Zweige nicht lokal für ihn zu schaffen, obwohl ich sie nach einem Schub meines Endes live sehen kann.

Außerdem, als ich ursprünglich den Zweig gemacht habe, habe ich -b checkout . Nicht sicher, ob das viel Unterschied macht?

iMac:test_solar dave$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master

git fetch origin discover
git checkout discover

Dies sind die Befehle, die ich ausgeführt habe. Aber definitiv nicht funktioniert. Ich möchte in der Lage sein, diese Verzweigung zu überprüfen und dann nur die Verzweigungsänderungen von verschiedenen Mitbearbeitern oder Arbeitsstationen zurückzuschieben und zurückzusenden.


Der einfachste Weg, es zumindest für mich zu tun:

git fetch origin <branchName>

Du benutzt 'git pull', um deine Zweige getrennt zu halten. Ich werde die tatsächlichen Repo- und Zweignamen verwenden, um zu helfen, da 'llanch' und 'rbranch' schwer zu entziffern sind.

Lass uns benutzen:

  • myteam.unfuddle.com = der Remote-Git-Server
  • tlc = Projektkonto auflösen, in dem der Repo existiert
  • daves_branch = Name der entfernten Filiale

    Sie oder jeder Kollege können dies ausführen, um nur Ihre Niederlassung zu ziehen, egal wie viele Filialen es gibt:

    git init
    git pull [email protected]:myteam/tlc daves_branch:refs/remotes/origin/daves_branch
    


  • Ein einfacher Befehl - "git checkout remote_branch_name" hilft Ihnen beim Erstellen einer lokalen Verzweigung, die alle Änderungen in der Remote-Verzweigung enthält.


    Ich tippte

    git checkout <branch_name>
    

    und hab

    Branch <branch_name> set up to track remote branch <branch_name> from origin.
    Switched to a new branch '<branch_name>'
    

    Manchmal werden Sie gebeten, nicht mit dem Master-Zweig herumzuhantieren und nur den entfernten Zweig zu bearbeiten (wie ich gefragt wurde). Alles, was Sie brauchen, ist die entfernte Niederlassung.

    Um den entfernten Zweig allein (ohne den Master) zu klonen, tun Sie dies

    git clone url --branch remote_branch_name
    

    wo, remote_branch_name ist der Name der Remote-Zweigstelle

    Beispielsweise,

    git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v3.15
    

    Dadurch wird sichergestellt, dass Sie den Remote-Zweig mit dem Namen des Remote-Zweiges in Ihren lokalen Zweig klonen.

    Jetzt, wenn Sie Ihren Code festschreiben und drücken, wird der Code nur an diesen Zweig gesendet.


    Nehmen wir an, Ihre Fernbedienung ist [email protected] und Sie möchten ihren Zweig random_branch. Der Prozess sollte wie folgt aussehen:

    1. Überprüfen Sie zuerst die Liste Ihrer Fernbedienungen nach

      git remote -v

    2. Wenn du die [email protected] in der Ausgabe des obigen Befehls nicht hast, würdest du sie hinzufügen

      git remote add xyz [email protected]

    3. Jetzt können Sie den Inhalt dieser Fernbedienung abrufen

      git fetch xyz

    4. Überprüfen Sie nun den Zweig dieser Fernbedienung durch

      git checkout -b my_copy_random_branch xyz/random_branch

    5. Überprüfen Sie die Verzweigungsliste nach

      git branch -a

    Der lokale Zweig my_copy_random_branch würde den Zweig random_branch Ihrer Fernbedienung verfolgen.


    Sie können den Remote-Zweig auch auf einmal abrufen und auschecken:

    git fetch && git checkout the-branch-name
    

    Um myBranch auszumachen, das existiert remote und nicht lokal - Das hat bei mir funktioniert:

    git fetch --all
    git checkout myBranch
    

    Ich habe diese Nachricht bekommen:

    Branch myBranch set up to track remote branch myBranch from origin
    Switched to a new branch 'myBranch'
    

    Verwenden Sie git branch -a (sowohl lokale als auch Remote-Zweige) oder git branch -r (nur Remote-Zweige), um alle Remote-Objekte und ihre Zweige anzuzeigen. Sie können dann eine git checkout -t remotes/repo/branch an die remote machen und eine lokale Verzweigung erstellen.

    Es gibt auch einen Befehl git ls-remote, um alle Referenzen und Tags für diese Fernbedienung zu sehen.


    Wenn Sie ein Repository haben, das mit --depth 1 geklont wurde, funktionieren viele der aufgeführten Befehle nicht. Zum Beispiel siehe hier

    % git clone --depth 1 https://github.com/repo/code
    Cloning into 'code'...
    cd code
    remote: Counting objects: 1778, done.
    remote: Compressing objects: 100% (1105/1105), done.
    remote: Total 1778 (delta 87), reused 1390 (delta 58), pack-reused 0
    Receiving objects: 100% (1778/1778), 5.54 MiB | 4.33 MiB/s, done.
    Resolving deltas: 100% (87/87), done.
    Checking connectivity... done.
    Checking out files: 100% (1215/1215), done.
    % cd code
    % git checkout other_branch
    error: pathspec 'other_branch' did not match any file(s) known to git.
    % git fetch origin other_branch
    remote: Counting objects: 47289, done.
    remote: Compressing objects: 100% (15906/15906), done.
    remote: Total 47289 (delta 30151), reused 46699 (delta 29570), pack-reused 0
    Receiving objects: 100% (47289/47289), 31.03 MiB | 5.70 MiB/s, done.
    Resolving deltas: 100% (30151/30151), completed with 362 local objects.
    From https://github.com/repo/code
     * branch            other_branch-> FETCH_HEAD
    % git checkout other_branch
    error: pathspec 'other_branch' did not match any file(s) known to git.
    %
    

    In diesem Fall würde ich den Repo reclone, aber vielleicht gibt es andere Techniken zB git seichter Klon (Klon --depth) verfehlt entfernte Zweige


    Wenn Sie versuchen, eine neue Remote-Zweigstelle (die nur auf der Remote-Station, aber nicht lokal vorhanden ist) zu "checken", benötigen Sie Folgendes:

    git fetch origin
    git checkout --track origin/<remote_branch_name>
    

    Dies setzt voraus, dass Sie vom Ursprung abrufen möchten. Wenn nicht, ersetzen Sie den Ursprung durch Ihren entfernten Namen.


    git branch <name> --track origin/<name>


    git fetch && git checkout <your friend's branch name> sollte den Trick machen


    Der Titel und die Frage sind verwirrt:

    • Git holt Remote Branch
    • Wie kann mein Kollege diesen Zweig speziell ziehen?

    Wenn die Frage ist, wie kann ich eine Remote-Zweigstelle zum Arbeiten mit oder zum Auschecken einer Remote-Zweigstelle erhalten, ist eine einfachere Lösung:

    Mit git (> = 1.6.6) können Sie:

    git checkout <branch_name>
    

    Wenn local <branch_name> nicht gefunden wird, aber ein <branch_name> in genau einer Fernbedienung mit einem übereinstimmenden Namen vorhanden ist, behandeln Sie dies wie folgt:

    git checkout -b <branch_name> --track <remote>/<branch_name>
    

    checkout

    Für deinen Freund:

    $ git checkout discover
    Branch discover set up to track remote branch discover
    Switched to a new branch 'discover'
    

    git checkout -b serverfix origin/serverfix
    

    Dies ist eine übliche Operation, die git die --track shorthand liefert:

    git checkout --track origin/serverfix
    

    Tatsächlich ist dies so üblich, dass es sogar eine Verknüpfung für diese Verknüpfung gibt. Wenn der Name des Zweigs, den Sie auschecken möchten (a) nicht vorhanden ist und (b) genau mit einem Namen auf nur einem Remote übereinstimmt, erstellt Git einen Tracking-Zweig für Sie:

    git checkout serverfix
    

    Um eine lokale Verzweigung mit einem anderen Namen als der Remote-Verzweigung einzurichten, können Sie einfach die erste Version mit einem anderen lokalen Verzweigungsnamen verwenden:

    git checkout -b sf origin/serverfix
    

    Jetzt wird Ihr lokaler Zweig sf automatisch von origin / serverfix ziehen.

    Quelle: Pro Git 2nd Edition, geschrieben von Scott Chacon und Ben Straub (geschnitten zur besseren Lesbarkeit)





    git-fetch