3

約 1 か月前から、'git pull' を発行するたびに、'git branch -a' に多数の remotes/origin/pr/* ブランチが作成され、プル リクエストの数に直接マップされます。このレポで開かれたことはありません。「git remote prune origin」を実行すると、それらがクリーンアップされます。

引く前:

C:\experimental [develop]> git branch -a
* develop
  feature/291
  master
  remotes/origin/HEAD -> origin/master

引く :

C:\experimental [develop]> git pull
From https://github.com/.../experimental
 * [new ref]         refs/pull/1/head -> origin/pr/1
 * [new ref]         refs/pull/10/head -> origin/pr/10
 * [new ref]         refs/pull/100/head -> origin/pr/100
 * [new ref]         refs/pull/101/head -> origin/pr/101
 * [new ref]         refs/pull/102/head -> origin/pr/102
 * [new ref]         refs/pull/103/head -> origin/pr/103
...
 * [new ref]         refs/pull/103/head -> origin/pr/382

引っ張った後:

C:\experimental [develop]> git branch -a
* develop
  feature/291
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/pr/1
  remotes/origin/pr/10
  remotes/origin/pr/100
  remotes/origin/pr/101
  remotes/origin/pr/102
  remotes/origin/pr/103
...
  remotes/origin/pr/382

掃除 :

C:\experimental [develop]> git remote prune origin
Pruning origin
URL: https://github.com/.../experimental.git
 * [pruned] origin/pr/1
 * [pruned] origin/pr/10
 * [pruned] origin/pr/100
 * [pruned] origin/pr/101
 * [pruned] origin/pr/102
 * [pruned] origin/pr/103
...
 * [pruned] origin/pr/382

クリーンアップ後:

C:\experimental [develop]> git branch -a
* develop
  feature/291
  master
  remotes/origin/HEAD -> origin/master

最初の「git pull」がそれらをプルダウンしないようにするにはどうすればよいですか? それは約1か月と少し前に起こり始めたばかりです。

ありがとう。

4

2 に答える 2

7

おそらく、プル リクエストをローカルでチェックアウトする方法の提案に従いました ( https://help.github.com/articles/checking-out-pull-requests-locallyを参照)。これを取り除くには、行を削除するだけです

fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

あなたから.git/config

于 2013-07-14T22:08:13.933 に答える
1

どういうわけか、システム レベルの git config に追加されました。

これはおそらく Windows (または Mac?) 用の GitHub であり、次のような強化された構成を提供し--systemます。

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

( で確認できますgit config --get-all remote.origin.fetch。)

origin/pr参照が役に立たない場合は、refs/pull行を削除するとうまくいきます。個人的には便利だと思うので、pruneあなたが発見した動作は苛立たしいものでした:

古いバージョンの Git では、refs/pull行が行の後に来た場合、 refs/headsaremote pruneは参照をorigin/pr取り除きます。行を交換すると、origin/pr参照が生き残ります。

そのバグはGit 1.9.2で修正されました:

 * "git fetch --prune", when the right-hand-side of multiple fetch
   refspecs overlap (e.g. storing "refs/heads/*" to
   "refs/remotes/origin/*", while storing "refs/frotz/*" to
   "refs/remotes/origin/fr/*"), aggressively thought that lack of
   "refs/heads/fr/otz" on the origin site meant we should remove
   "refs/remotes/origin/fr/otz" from us, without checking their
   "refs/frotz/otz" first.

   Note that such a configuration is inherently unsafe (think what
   should happen when "refs/heads/fr/otz" does appear on the origin
   site), but that is not a reason not to be extra careful.
于 2014-10-17T06:23:01.483 に答える