672

Gitでリモート ブランチの追跡を停止するにはどうすればよいですか?

私の具体的なケースでは、リモートブランチではなくローカルブランチを削除したいので、追跡を停止するよう求めています。ローカル ブランチを削除し、削除をリモート ブランチにプッシュすると、リモート ブランチも削除されます。

私はただ行うgit branch -d the_branchことができgit pushますか?

git push origin :the_branch後で実行した場合にのみ伝播しますか?

4

11 に答える 11

902

Yoshua Wuyts ' answerで述べたように、次を使用しgit branchます。

git branch --unset-upstream

その他のオプション:

ローカル ブランチを削除する必要はありません。

リモート ブランチを追跡しているローカル ブランチを削除するだけです。

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

-r, --remotesリモート追跡ブランチを削除するように git に指示します (つまり、リモート ブランチを追跡するブランチ セットを削除します)。これは、リモート リポジトリのブランチを削除しません

git-fetch を理解するのに苦労する」を参照してください

ローカル追跡ブランチのような概念はなく、リモート追跡ブランチのみです。
レポ内のorigin/masterリモート追跡ブランチも同様ですmasterorigin

Dobes Vandermeeranswerで述べたように、ローカルブランチに関連付けられている構成もリセットする必要があります。

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

のアップストリーム情報を削除し<branchname>ます。
ブランチが指定されていない場合、デフォルトで現在のブランチになります。

(git 1.8+、2012 年 10 月、コミット b84869e by Carlos Martín Nieto ( carlosmn) )

これにより、プッシュ/プルが完全に認識されなくなりorigin/<remote branch name>ます。

于 2010-06-15T15:11:39.713 に答える
109

ローカル ブランチ実行とリモート ブランチ実行の間の関連付けを削除するには、次のようにします。

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

ローカル ブランチが必要ない場合は、必要に応じて後で削除します。

git branch -d <branch>

これはリモート ブランチを削除しません。

于 2010-07-30T23:14:44.683 に答える
40

最も簡単な方法は、編集することです.git/config

ここにサンプルファイルがあります

[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

分岐部の行merge = refs/heads/test1を削除test1

于 2011-11-08T07:28:49.040 に答える
14

を使用してリモート追跡ブランチを削除できます

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

VonCが上で述べたように。ただし、ブランチのローカル コピーを保持している場合git push でも、 はそのブランチをプッシュしようとします (これにより、 ruffinの場合のように非早送りエラーが発生する可能性があります)。これは、構成がpush.defaultデフォルトで次のようになっているためmatchingです。

matching - 一致するすべてのブランチをプッシュします。両端で同じ名前を持つすべてのブランチは、一致していると見なされます。これがデフォルトです。

(の下のhttp://git-scm.com/docs/git-configpush.defaultを参照してください)

これはおそらく、リモート追跡ブランチを削除したときに望んでいたものではないので、に設定できますpush.defaultupstreamまたはtracking、git < 1.7.4.3 がある場合)

アップストリーム - 現在のブランチを上流のブランチにプッシュします。

使用して

git config push.default upstream

git は、「追跡を停止」したブランチのプッシュを停止します。

注:より簡単な解決策は、ローカル ブランチの名前を別の名前に変更することです。これにより、混乱の可能性も排除されます。

于 2012-06-08T18:22:45.213 に答える
1

これは質問への回答ではありませんが、上記のコメントで適切なコードの書式設定を取得する方法がわかりませんでした...自動ダウンレピュテーションビーダムドが私のコメントです。

.gitconfig の派手な shmancy [alias] エントリに @Dobes によって提出されたレシピがあります。

# to untrack a local branch when I can't remember 'git config --unset'
cbr = "!f(){ git symbolic-ref -q HEAD 2>/dev/null | sed -e 's|refs/heads/||'; }; f"
bruntrack = "!f(){ br=${1:-`git cbr`};  \
    rm=`git config --get branch.$br.remote`; \
    tr=`git config --get branch.$br.merge`; \
    [ $rm:$tr = : ] && echo \"# untrack: not a tracking branch: $br\" && return 1; \
    git config --unset branch.$br.remote; git config --unset branch.$br.merge; \
    echo \"# untrack: branch $br no longer tracking $rm:$tr\"; return 0; }; f"

それから私はただ走ることができます

$ git bruntrack branchname
于 2014-06-04T15:07:26.180 に答える
0

これを行う最も簡単な方法は、ブランチをリモートで削除してから次を使用することです。

git fetch --prune (別名 git fetch -p)

于 2013-05-09T17:36:27.727 に答える
-4

この方法を使用して、リモートブランチを削除できます

git remote remove <your remote branch name>
于 2019-07-11T07:46:36.907 に答える