824 Stimmen

Wie kann man die Verfolgung eines entfernten Zweigs in Git beenden?

Wie kann man die Verfolgung eines entfernten Zweigs in Git ?

Ich bitte darum, die Verfolgung zu beenden, da ich in meinem konkreten Fall den lokalen Zweig löschen möchte, nicht aber den entfernten. Wenn ich den lokalen Zweig lösche und die Löschung an den entfernten Zweig übertrage, wird auch der entfernte Zweig gelöscht:

Kann ich einfach tun git branch -d the_branch und es wird nicht weitergegeben, wenn ich später git push ?

Wird es sich nur ausbreiten, wenn ich das Programm git push origin :the_branch später?

1148voto

VonC Punkte 1117238

Wie bereits in Yoshua Wuyts ' Antwort , mit git branch :

git branch --unset-upstream

Andere Optionen:

Sie müssen Ihre lokale Niederlassung nicht löschen.

Löschen Sie einfach den lokalen Zweig, der den entfernten Zweig verfolgt:

git branch -d -r origin/<remote branch name>

-r, --remotes weist git an, den entfernten Zweig zu löschen (d.h. den Zweig zu löschen, der den entfernten Zweig verfolgt). Dies wird no den Zweig auf dem entfernten Projektarchiv löschen !

Siehe " Es fällt mir schwer, git-fetch zu verstehen "

Es gibt kein Konzept für lokale Verfolgungszweige, sondern nur für entfernte Verfolgungszweige.
Also origin/master ist ein entfernter Verfolgungszweig für master im origin Repo

Wie bereits in Dobes Vandermeer 's Antwort müssen Sie auch die Konfiguration zurücksetzen, die mit dem . Zweigstelle:

git config --unset branch.<branch>.remote
git config --unset branch.<branch>.merge

Entfernen Sie die vorgelagerten Informationen für <branchname> .
Wenn keine Verzweigung angegeben wird, wird standardmäßig die aktuelle Verzweigung verwendet.

(git 1.8+, Okt. 2012, Übergabe b84869e por Carlos Martín Nieto ( carlosmn ) )

Dadurch wird jeder Push/Pull völlig unbemerkt von origin/<remote branch name> .

288voto

Yoshua Wuyts Punkte 3616

Um den Upstream für den aktuellen Zweig zu entfernen, tun Sie dies:

$ git branch --unset-upstream

Dies ist für Git v.1.8.0 oder neuer verfügbar. (Quellen: 1.7.9 ref , 1.8.0 ref )

Quelle

116voto

Dobes Vandermeer Punkte 8123

Um die Verbindung zwischen dem lokalen und dem entfernten Zweig zu entfernen, führen Sie aus:

git config --unset branch.<local-branch-name>.remote
git config --unset branch.<local-branch-name>.merge

Sie können den lokalen Zweig anschließend löschen, wenn Sie ihn nicht mehr benötigen:

git branch -d <branch>

Dadurch wird der entfernte Zweig nicht gelöscht.

43voto

Jacob Groundwater Punkte 6461

Der einfachste Weg ist die Bearbeitung von .git/config

Hier ist eine Beispieldatei

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
[remote "origin"]
        url = git@example.com:repo-name
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "test1"]
        remote = origin
        merge = refs/heads/test1
[branch "master"]
        remote = origin
        merge = refs/heads/master

Löschen Sie die Zeile merge = refs/heads/test1 im test1 Zweigstelle

25voto

8c6b5df0d16ade6c Punkte 992

Lokal verfolgende Zweigstellen

Wenn Sie über lokale Zweigstellen sprechen (z. B. main , dev ), die so konfiguriert sind, dass push -an und pull -von einem vorgelagerten [Remote-Zweig], dann können Sie dies mit deaktivieren:

 git branch --unset-upstream <LOCALBRANCH>

Z.B.:

 git branch --unset-upstream dev
 git branch --unset-upstream feature-x

Zweigstellen mit Fernverfolgung

Wenn Sie über Zweige mit dem Namen <REMOTE>/<BRANCH> (z.B.. origin/main , origin/dev ), die in Ihrem git log (und .git/refs/remotes/<REMOTE>/ Verzeichnis), das Ihnen den Status eines entfernten Zweigs anzeigt, können Sie die "Verfolgung" (Aktualisierung) dieses Zweigs beenden, indem Sie die aktuelle Liste der entfernten Zweige mit Ihrer eigenen Liste überschreiben:

 git remote set-branches <REMOTE> [<REMOTE-BRANCH> …]

Wenn Sie darüber hinaus diese Remote-Tracking-Zweige nicht mehr in Ihrem git log (und .git/refs/remotes/<REMOTE>/ Verzeichnis), dann können Sie sie mit entfernen:

 git branch --delete --remotes -- <REMOTE>/<BRANCH>
Deleted remote-tracking branch <REMOTE>/<BRANCH> (was 1f1a655).

Z.B.:

# keep tracking `origin/main`, and `origin/dev`,
# untrack all other `origin/*` remote branches
 git remote set-branches origin main dev

# delete remote branches previously tracked, from the
# `.git/refs/remotes/<REMOTE>/` directory
 git branch --delete --remotes -- origin/feature-x origin/feature-y
 git branch --delete --remotes -- origin/hotfix-z

Veraltete Remote-Zweige

Und schließlich, wenn es entfernte Zweige gibt, die aus dem entfernten Repository selbst entfernt wurden (veraltet sind), und Sie Ihr lokales Repository aktualisieren möchten, um dies widerzuspiegeln, dann können Sie sie löschen (beschneiden):

# automatically
 git remote prune <REMOTE>
Pruning <REMOTE>
URL: <REMOTEURL>
 * [pruned] <REMOTE>/<BRANCH>

...oder

# manually
 git branch --delete --remotes -- <REMOTE>/<BRANCH>
Deleted remote-tracking branch <REMOTE>/<BRANCH> (was 1f1a655).

PS

Sie können den Status der Verfolgung mit überprüfen:

 git remote show <REMOTE>

Z.B.:

 git remote show origin
* remote origin
  Fetch URL: /Users/johndoe/bare-remote
  Push  URL: /Users/johndoe/bare-remote
  HEAD branch: ant
  Remote branches:
    brooms  tracked
    bull    tracked
    cat     tracked
    deer    tracked
    dog     tracked
    foxy    tracked
    john    tracked
    master  tracked
    new     tracked
    tim     tracked
    timothy tracked
  Local branches configured for 'git pull':
    ant    merges with remote ant
    master merges with remote master
  Local refs configured for 'git push':
    ant    pushes to ant    (up to date)
    master pushes to master (up to date)

  • git-remote(1):

    set-branches : Ändert die Liste der Zweige, die von dem benannten Fernzugriff verfolgt werden. Dies kann verwendet werden, um eine Teilmenge der verfügbaren Remote-Zweige nach der anfänglichen Einrichtung für eine Remote zu verfolgen.

    prune : Löscht veraltete Referenzen, die mit . Standardmäßig werden veraltete Remote-Tracking-Zweige unter gelöscht, aber je nach globaler Konfiguration und der Konfiguration des Remote-Zweigs können auch lokale Tags gelöscht werden, die nicht dorthin übertragen wurden.

    show : Zeigt einige Informationen über die Fernbedienung an.

  • git-branch(1):

    --unset-upstream : Entfernen Sie die vorgelagerten Informationen für .

    --delete : Löschen Sie einen Zweig.

    --remotes : Auflisten oder Löschen (bei Verwendung mit -d) der Remote-Tracking-Zweige.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X