私はgitを使い始めています。私は質問があります。私のアプリには、dev_XXXXXのような独自のブランチを持つ10人の開発者がいます。だから私がリポジトリのクローンを作成すると、そのコードはすべて自分のマシンにコピーされますか?その場合、私はそれを望んでいません。私のブランチがdev_swamyだとしたら、安定したブランチとdev_swamyだけをどのようにクローンするのですか?ありがとう。gitの安定版ともう1つのブランチだけを複製しますか?
答えて
は、すべてのブランチを取得しますが、これらの枝は、リモート追跡ブランチとして格納されます例:ブランチのための「dev_XXXXX」「レフリー/リモコン/原点と(「起源/ dev_XXXXX」として格納されます/ dev_XXXXX 'というフルネーム)。これらのリモートトラッキングブランチは、git branch
出力には表示されません。リモートトラッキングブランチを一覧表示するにはgit branch -r
(すべてのブランチを表示するにはgit branch -a
)が必要です。それらのブランチがメインラインから多すぎないと、リポジトリにあまりにも多くのディスクスペースを取らないでしょう。したがって、選択したブランチだけをクローンする理由はわかりません。
あなたは2つだけ選択した支店を持つクローンを持つようにしたい場合はそれにもかかわらず、あなたはこのようにそれを行うことができます。
まず、
$ mkdir repoclone $ cd repoclone/ $ git init Initialized empty Git repository in /home/user/repoclone/.git/
新しい空のリポジトリを作成する次に、あなたのリポジトリを追加'git remote'コマンドを使用して、 'master'と 'dev_swamy'の2つのブランチのトラッキングを要求する、 'origin'という名前で( "git clone"と同じように)正しく追加されたことを確認してください。
$ git remote add -t master -t dev_swamy origin [email protected]:repo.git $ git remote origin $ git remote show origin * remote origin Fetch URL: [email protected]:repo.git Push URL: [email protected]:repo.git HEAD branch: master Remote branches: master new (next fetch will store in remotes/origin) dev_swamy new (next fetch will store in remotes/origin)
stableブランチが 'master'ではなく 'stable'と呼ばれる場合は、上記の例を変更する必要があります。指定したブランチをリモートのデフォルトブランチにする場合は、
-m <branch>
オプションもあります。「起源」からのフェッチ(あなたはまた、上記の「Gitはリモート追加」する
-f
オプションを使用してこれを行うことができます):$ git fetch remote: Counting objects: 282, done. remote: Compressing objects: 100% (193/193), done. remote: Total 282 (delta 82), reused 0 (delta 0) Receiving objects: 100% (282/282), 81.30 KiB | 135 KiB/s, done. Resolving deltas: 100% (82/82), done. From [email protected]:repo.git * [new branch] master -> origin/master * [new branch] dev_swamy -> origin/dev_swamy From [email protected]:repo.git * [new tag] v1.0 -> v1.0 * [new tag] v1.0.1 -> v1.0.1 * [new tag] v1.1 -> v1.1
を設定する「マスター」は(あなたはどうしたらローカルブランチあなた「起源/マスター」をフォローする仕事は)(「gitのクローンは」やるのと同じように、上流として「起源/マスター」)を持っている:あなたはブランチ「dev_swamy」のためにこれを繰り返すことができ
$ git checkout -t origin/master Branch master set up to track remote branch master from origin. Already on 'master'
。
ここで、設定ファイルの外観を確認できます。
.git/config
ファイルを次のように編集してから、「git fetch」を実行することで、まったく同じ結果が得られます。$ cat .git/config # or just open this file in your editor [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = [email protected]:repo.git fetch = +refs/heads/master:refs/remotes/origin/master fetch = +refs/heads/dev_swamy:refs/remotes/origin/dev_swamy [branch "master"] remote = origin merge = refs/heads/master
リポジトリ(すなわちセット「user.name」と「user.email」設定変数、通常、ユーザーごとの設定ファイル内)での作業を開始する前にGitに自分自身を紹介することを忘れないでください!
複製すると、すべてのブランチのすべてのリビジョンが複製されますが、複製されたリポジトリはデフォルトでマスターをチェックアウトします。
gitは本当にあなたがそのように働くべきだとは思っていないので、選択されたブランチを取るだけで扱いにくいです。手動で枝をプルダウンする必要があります。
上記mkdir repoclone
cd repoclone
git init
git remote add origin git://remote/url
git fetch origin master:master
git fetch origin dev_XXX:dev_XXX
は、私が働いていた知っていたものです。しかし、正常に機能するgit repoを設定したい場合は、リモートブランチをより細かく見ることができますか?あなたはかなり簡単にそれを行うことができます。
mkdir repoclone cd repoclone git init git remote add origin git://remote/url # now open .git/config for editing in your editor # replace the following line (grab all remote branches) fetch = +refs/heads/*:refs/remotes/origin/* # replace with lines listing exactly which branches you want fetch = +refs/heads/master:refs/remotes/origin/master fetch = +refs/heads/dev_XXX:refs/remotes/origin/dev_XXX # save the file, now run git fetch
を私はここで、より重要な問題は、他の人はあなたがクローニングたり引っ張っされるものではなく、プッシュされるものだと思います。各開発者は自分のブランチで作業しているので、別の問題は共通のコードベースで終わる方法です。開発者がブランチをマスターに合併していますか?そして、彼らは変更されたマスターブランチを中央のリポジトリにプッシュしていますか?そのような場合は、とにかく他の開発者のブランチを引き出す方法はありません。
そうでない場合、私はあなたが機能するチームをどのように形成することができないのか分かりません。
最終的には、他の開発者のブランチをリポジトリにクローンしたくない理由が分かりました。
これを行う別の方法は、直接のクローンを回避する代わりに、手動でfetch refspecのカスタムセットを使用してリモートを手動で追加することです。
デフォルトgit clone
ことで
mkdir myclone
cd myclone
git init
git remote add origin url://origin.repo
# Add fetch rules for the branches that we want to track
git config remote.origin.fetch +refs/heads/master:+refs/remotes/origin/master
git config --add remote.origin.fetch +refs/heads/dev_swamy:+refs/remotes/origin/dev_swamy
# fetch now fetches just what we need, subsequently it will do incremental fetches
git fetch
# Creating local branches tracking the remote branches
git checkout -b master origin/master
git branch dev_swamy origin/dev/swamy
- 1. gitから特定のブランチを安全なプレイブックに複製する
- 2. 1つのブランチだけにリモートを設定しますか?
- 3. 1つのブランチだけでGitをHGに変換する
- 4. 複数の安定したブランチを持つgitワークフロー、svnと同期
- 5. gitの安定版ブランチ:桜選んだが、私は以下のGitの歴史を持っている
- 6. gitを使って1つのブランチからもう1つのブランチにマージする
- 7. PythonもLTSと安定版に分かれていますか?
- 8. git logを2つのブランチだけで表示するには?
- 9. Gitは特定の名前のディレクトリを1つだけ除外します
- 10. すべてのgitサブモジュールで1つの特定のブランチをチェックアウト
- 11. git内の別の既存のブランチにブランチを複製する方法
- 12. 複数のパラメータを定義し、1つのパラメータだけを渡すとどうなりますか?
- 13. gitは元のリモートブランチに1つのブランチを戻します
- 14. Githubの特定のブランチだけをクローンしますか?
- 15. Gitを1つのブランチに設定する
- 16. gitブランチを2つのブランチに分割しますか?
- 17. gitリポジトリとそのGIT-LFS設定を複製する
- 18. 1つのgitブランチを同じリモートで別のものに膨らませることはできますか?
- 19. gitの複数のブランチにバージョンタグを付けることはできますか?
- 20. gitでプロジェクトを新しいものに複製/複製するにはどうすればよいですか?
- 21. gitリポジトリから1つのディレクトリだけを引き出す
- 22. ConstraintLayout安定版ですか?
- 23. 複製リレーbinファイルを削除しても安全ですか?
- 24. 複製キャッシュフォルダを削除しても安全ですか?
- 25. SwisscomDev/Cloudfoundryで不安定版/不安定版を解決する
- 26. なぜGitはrefs/remotes/originの下にブランチだけを保存しますか?
- 27. 複数のGitブランチ
- 28. Gitは1つのブランチから別のブランチにファイルを移動する
- 29. gitで特定のファイルのリビジョンを1つだけ保持することはできますか?
- 30. npmインストールパッケージは最新の安定版ですか?またはアルファベット版も含まれていますか?
Aha!これは私がしばらく考えていたものです。一つのブランチだけをクローンする方法があります。興味深いアイデアは、頭にそれをオンにし、必要なものだけを取る。しかし、最初のフェッチではこのエラーが発生します: "致命的:非ブランチリポジトリの現在のブランチリファレンス/ヘッド/マスターをフェッチすることを拒否しました" –
現代的なgitでBTWに 'git init recoclone'を使用できます。 –
@Steve: 。 "git fetch origin master; git reset --hard FETCH_HEAD'"をマスタに設定することで置き換えることができます。 – u0b34a0f6ae