ローカルGitブランチをリモートリポジトリにコピーする方法


127

これまでに次の手順を実行しました。

  1. リモートGitリポジトリを複製
  2. マスターブランチを実験に分岐しました
  3. 試験的なブランチで編集/テスト/コミットされたコード

今、私は実験をマスターにマージする準備ができていません。しかし、それは私が数人の同僚と共有しているリポジトリなので、それをリモートリポジトリにプッシュしたいと思います。実験ブランチで私がやったことを彼らに見てもらいたい。私は通常、SSH経由でリモートリポジトリにアクセスします。

リモートリポジトリのマスターブランチに影響を与えずに、リモートリポジトリでローカルブランチを共有するにはどうすればよいですか?


このリンクは、この点でも非常に役立ちます。gitブランチの共有
Vishnu Kumar

回答:


157

git pushマニュアルページによると:

 git push origin experimental

experimentalソースリポジトリで一致するリファレンスを見つけ(ほとんどの場合、が見つかりますrefs/heads/experimental)、それを元のリポジトリで同じリファレンス(例:)に更新しrefs/heads/experimentalます。リモートに存在しなかった
場合experimentalは、作成されます。

これは次と同じです:

git push origin experimental:refs/heads/experimental

experimental現在のexperimentalブランチをコピーして、オリジンリポジトリにブランチを作成します。
このフォームは、ローカル名とリモート名が異なる場合にリモートリポジトリに新しいブランチまたはタグを作成する場合にのみ必要です。それ以外の場合は、ref名だけで機能します。

または、git tipで述べたように、「ブランチのデフォルトリモート」を設定できます。

git configを使用して、デフォルトのリモートを特定のブランチに割り当てることができます。このデフォルトのリモートは、特に指定がない限り、そのブランチをプッシュするために使用されます。

これはgit cloneを使用するときにすでに行われているため、引数なしでgit pushを使用してローカルマスターブランチをプッシュし、オリジンリポジトリのマスターブランチを更新できます。

git config branch.<name>.remote <remote> 

これを手動で指定するために使用できます。


01月(のための示唆はgit> = 1.7.0push -u(またはpush --set-upstream)オプション:

最新の、または正常にプッシュされたすべてのブランチに対して、引数なしのgit-pull(1)およびその他のコマンドで使用される上流(追跡)参照を追加します。

そうすれば、git configを実行する必要はありません。

git push -u origin experimental

12
ローカルブランチがパブリックブランチを作成した後、リモートブランチを追跡するようにするには、-uオプションを使用する必要がありますpush-uオプションを使用するのを忘れた場合は、git push -u後でブランチに入力するだけでgit pull機能します。

これを行ったときgit push origin experimentalに、パックがアップロードされた形跡がないことに気づきました。それは次のようになります以前のプッシュからリモートすでに持っているすべての材料。参照にフックする必要があるだけです。
Kaz

@Kaz:これらの新しいコミットがリモートの別のブランチにすでにプッシュされている場合、すべての資料が含まれます。その場合、リモートにgit push origin experimentalブランチexperimentalを作成するだけです。
VonC、2012年

ありがとうございました!あなたの答えはとても役に立ちました。
12

15

ブランチexperimentalの名前が​​で、リモートの名前がのorigin場合、それは

git push origin experimental

上記と同じコメントですが、リモートリポジトリに暗黙的に実験的ブランチが作成されますか、それともリモートのマスターにプッシュされますか?
Coocoo4Cocoa 2009

1
それは実験的なブランチをプッシュし、ローカル側でもリモートでもマスターに触れません
John Douthat

1

git push -u <remote-name> <branch-name> 新しく作成されたブランチが同じリポジトリから生成されていない場合、つまり新しいブランチを作成していない場合は機能しません git checkout -b new_branch、これは機能しません。

たとえば、2つの異なるリポジトリをローカルで複製し、repo2 / branch1をrepo1 /にコピーしてから、それもプッシュする必要がありました。

このリンクは、ローカルブランチ(別のリポジトリから複製されたもの)をリモートリポジトリにプッシュするのに役立ちました。



0

tl; dr

$ git push --set-upstream origin your_new_branch

より詳しい情報

あなたがあなたにいくつかのコミットをした後:

$ git checkout -b your_new_branch
$ git add file
$ git commit -m "changed file"

次のように、アップストリームを指定してブランチをリモートリポジトリの1つにプッシュします。

$ git push --set-upstream REMOTE YOUR_BRANCH

リモコンは、

$ git remote -v

通常、デフォルトのリモートは1つですorigin。したがって、コマンドは次のようになります。

$ git push --set-upstream origin your_new_branch

結果として生じるすべてのプッシュは、だけで行うことができますgit push

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.