リポジトリ全体ではなくブランチをフォークするにはどうすればよいですか?完全なリポジトリではなくブランチ https://github.com/COMSYS/contiki/tree/split-buffer のみをコピーしたい https://github.com/jenshiller/ contiki 。 Gitでブランチをフォークする方法 が私の場合機能しません。ブランチを複製したくありません。
Github(およびgitのメンタルフレームワーク)では、リポジトリのクローンを作成してフォークします。
ブランチをフォークする方法はありません。それは意味がありません。プロジェクトをforkして、興味のあるブランチで作業してください。そうすることで何も失うことはありません。
「ブランチで作業する」とは通常、
git clone http://repository
)、次にgit checkout awesome-branchname
)、git checkout -b new-even-more-awesome-branch-name
)git clone --single-branch u://r/l
メインブランチだけを複製し、
git clone -b $branch --single-branch u://r/l
必要な特定のブランチのみを複製します。
ただし、git clone
自体と同様に、簡単な設定の省略形であるので、オプションは必要ありません。
git clone u://r/l
は次のとおりです:
git init l; cd $_
git remote add -f Origin u://r/l
そしてここにgit clone --single-branch -b whatever u://r/l
があります:
git init l; cd $_
git remote add -ft whatever Origin u://r/l
-f
オプションは、「後でgit fetch
を実行する」の省略形です。
まず第一に、マーカスは彼の説明において完全に正しい。フォークできるのはレポだけです。ただし、ローカルでフォークのクローンを作成した後、単一行のパイプコマンドを実行することで、必要な結果を得ることができます。ただし、Github自体が実行する単一ステップの操作ではありません。
最終的に必要なのは、ブランチが1つだけのフォークです。これを取得するには、次のコマンドを実行します。ここでは、フォークのリモート名がfork
であると想定しています。
git branch -r --list 'fork/*' | \
grep -v "$(git rev-parse --abbrev-ref fork/HEAD)" | \
sed 's~fork/~~' | \
grep -v split-buffer | \
xargs git Push fork --delete
コマンドのgit rev-parse
部分が機能するためには、事前にこれを実行する必要があることに注意してください。
git remote set-head fork master
これを行うのは、すべてのリポジトリのHEADがmaster
に設定されているわけではないためです。一部はstaging
、またはdevelop
、または何かを使用しますそれ以外の場合、これは基本的に、リモートのメインブランチがmaster
であると仮定するよりも少し柔軟です。リモート側ではHEADブランチを除外する必要があります。メインブランチを削除します。
上記のコマンドを実行すると、リモートに最大2つのブランチが残ることになります。
fork/HEAD
によって参照されるシンボリック参照)保持したいブランチもHEADブランチである場合、ブランチは1つだけ残っていることに注意してください。
頻繁に行う場合は、このスクリプトを作成することをお勧めします。 git-delete-all-except.sh
のような名前を付け、一般化して、リモート名(fork
を想定する代わりに)を使用し、保持するブランチのリストを1つだけではなく多分指定します。
これをスクリプトとして持つnotに対する反対の引数:これは危険な操作であり、フォークまたは他のタイプのリポジトリでこれを実行することは絶対に望まないでしょう。オンにして変更をプッシュします!