リモートGitブランチをどのように作成しますか?


3130

上流に「プッシュ」するローカルブランチを作成しました。Stack Overflowには、新しく作成されたリモートブランチを追跡する方法に関する同様の質問があります。

ただし、私のワークフローは少し異なります。最初にローカルブランチを作成します。満足し、ブランチを共有したい場合にのみ、それを上流にプッシュします。

  • どうすればいいですか?(私のグーグル検索は何も思いつかなかったようです)。
  • それを上流のリポジトリからプルするように同僚にどのように伝えますか?

更新Git 2.0では、以下に記述したより簡単な答えがあります。https//stackoverflow.com/a/27185855/109305


14
誰かがあなたに2番目の質問に答えたことがありますか?>>そして上流のリポジトリからそれをプルするように同僚にどのように伝えますか?
milkplus


1
@milkplus get fetch --allは、リモート側で新しいブランチをフェッチします(ただしget fetch --prune、削除されたリモートブランチへの参照をローカルで削除するだけです)。私は、これは彼らによって自動的に設定されるべきか、あなたは彼らと口頭で話す必要があると思います。
peterh-モニカを2017年

回答:


3732

まず、ローカルにブランチを作成します。

git checkout -b <branch-name> # Create a new branch and check it out

リモートブランチは、リモートサーバーにプッシュすると自動的に作成されます。ですから、準備ができていると感じたら、次のようにすることができます。

git push <remote-name> <branch-name> 

どこ<remote-name>一般的であるoriginリモートあなたがからクローニングに与えるgitの名前は、。その後、同僚はそのブランチをプルするだけで、ローカルに自動的に作成されます。

ただし、形式は次のとおりです。

git push <remote-name> <local-branch-name>:<remote-branch-name>

ただし、1つを省略すると、両方のブランチ名が同じであると見なされます。これを言っても、注意として、:<remote-branch-name>(コロンで)指定するだけの重大な間違いを犯さないでください。そうしないと、リモートブランチが削除されます。

後続git pullが何をすべきかを知っているように、代わりにあなたが使いたいかもしれません:

git push --set-upstream <remote-name> <local-branch-name> 

以下で説明するように、この--set-upstreamオプションは上流ブランチをセットアップします。

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


85
gitのデフォルトの動作は一致する参照をプッシュするため、git push <remote>ブランチが存在しない場合はブランチをプッシュしないことに注意してください<remote>
JakubNarębski、2009年

222
git push -u <remote-name> <branch-name>代わりに使用すると、後続のユーザーgit pullが何をすべきかを知ることができます。
Bart Schuller

87
サーバー名を明示的に指定する代わりにorigin、「このリポジトリの残りの部分を取得したサーバー」を意味するを使用できますgit push origin <branch-name>
lambshaanxy

68
-uオプションを使用するのを忘れた場合は、git push -u後でブランチに入力するだけでgit pull機能します。

90
すべてをまとめると、git push -u origin <local-branch-name>私にとってうまくいきました。
サモ

881

まず、ローカルにブランチを作成する必要があります

git checkout -b your_branch

その後、ブランチでローカルに作業できます。ブランチを共有する準備ができたら、プッシュします。次のコマンドは、ブランチをリモートリポジトリのオリジンにプッシュして追跡します

git push -u origin your_branch

チームメイトは次のようにしてブランチに到達できます。

git fetch
git checkout origin/your_branch

git pushに引数を渡さなくても、ブランチで作業を続けていつでもプッシュできます(引数なしのgit pushはマスターをリモートマスターにプッシュし、your_branchローカルをリモートyour_branchにプッシュする、など...)

git push

チームメイトはコミットを実行してブランチにプッシュしてから明示的にプッシュできます

... work ...
git commit
... work ...
git commit
git push origin HEAD:refs/heads/your_branch

またはブランチを追跡してgit pushの引数を回避します

git checkout --track -b your_branch origin/your_branch
... work ...
git commit
... work ...
git commit
git push

同じ名前のローカルブランチを作成せずにリモートブランチを作成する方法はありますか?
アリエルガビゾン

330

シンプルなGit 2.0+ソリューション:

以下のようにGit 2.0動作が簡単になりました

gitを設定して、作業をpush.default = current簡単にすることができます。

これを追加したので、新しいブランチを上流にプッシュすることができます

$ git push -u

-u同じ名前のリモートブランチを追跡します。この構成で、git pushへのリモート参照を自動推測します。git.configドキュメントから:

push.default

refspecが明示的に指定されていない場合にgit pushが実行するアクションを定義します。

push.default = current-現在のブランチをプッシュして、受信側の同じ名前のブランチを更新します。中央ワークフローと非中央ワークフローの両方で機能します。

私にとって、これは私の日々のGitワークフローを単純化したものです。構成設定は、ブランチをローカルに追加してリモートで作成する「通常の」ユースケースを処理します。また、git co remote_branch_name--set-upstream-toフラグを使用するのではなく)実行するだけで、リモートからローカルブランチを簡単に作成できます。

私はこの質問と受け入れられた回答がかなり古いことを知っていますが、動作が変更されたため、ワークフローを簡素化するための構成オプションが存在します。

グローバルGit構成に追加するには、コマンドラインでこれを実行します。

$ git config --global push.default current

5
git push -u origin HEADここで答えたように、タイプしすぎることなく、もう少し冗長(あなたが何をしているかを書く)を見つけます。さらに、git push -uブランチが次のように作成された場合、追加の引数なしでは動作しませんでした-t
Qw3ry

git config --global push.default upstream && git checkout -b foo && <change a file> && git push -u動作しません(git 2.19.1以降)。pushには、リモート引数とブランチ引数が必要です。
knite 2018年

どういう意味git co remote_branch_nameですか?
flannelbeard

84

以前の回答で述べたように、

git push <remote-name> <local-branch-name>:<remote-branch-name>

ローカルブランチをプッシュするのに十分です。

同僚は、次のコマンドですべてのリモートブランチ(新しいブランチを含む)をプルできます。

git remote update

次に、ブランチに変更を加えるための通常のフロー:

git checkout -b <local-branch-name> <remote-name>/<remote-branch-name>

リモートの名前をローカルの名前とは異なるものにすることができるので、私はこの理由が気に入っています
Ariel Gabizon

66

現在のブランチに基づいてローカルに新しいブランチを作成します。

git checkout -b newbranch

通常どおり変更をコミットします。次に、上流にプッシュします。

git push -u origin HEAD

これは、現在のブランチを同じ名前のブランチにプッシュしてoriginそれを追跡するためのショートカットorigin HEADであり、将来指定する必要がないようにします。


4
これは私の場合に役立ちました:git push -u origin HEAD。それが最も明確な方法だと思います。
Scadge 2014年

2
ええ、あなたが最後にブランチとしてタイプしたものを正確に覚えていることは決してないので、これが進むべき道です。
markyzm 2016

4
@marksyzm自分がどのブランチにいるか、またはどのブランチに名前を付けているかを思い出せない場合は、おそらくプッシュするべきではありません。少なくとも、git status最初に実行せずに。
Zenexer 2016年

1
ええ、そのプッシュで世界が爆発しないようにしてください。同意する。
markyzm 2016年

1
これは、追跡ブランチとリモートブランチを同時に作成する最も効率的な方法です。またgit remote show origin、新しい追跡/追跡された関係を視覚化するために、3番目のステップとして追加したいと思います。
hb5fa 2016

54

現在のブランチからブランチを作成したい場合

git checkout -b {your_local_branch_name} 

あなたはリモートブランチからブランチが欲しい、あなたは試すことができます

git checkout -b {your_local_branch_name} origin/<remote_branch_name>

変更が完了したら、ファイルを追加できます。

git add -A or git add <each_file_names>

次に、ローカルでコミットします

git commit -m 'your commit message'

リモートレポにプッシュしたいとき

git push -u origin <your_local_branch_name>

すべて一緒になります

git checkout -b bug_fixes 

または、リモートブランチからブランチを作成する場合は、開発と言います

git checkout -b bug_fixes origin / development

あなたはブランチをリモートレポにプッシュすることができます

git push -u origin bug_fixes

他のブランチからブランチを更新したいときはいつでも、masterと言ってください。

git pull origin master


46

ローカルブランチを持たずに実際にリモートブランチを作成したい場合は、次のようにできます:

git push origin HEAD:refs/heads/foo

リモートに存在しないブランチfooに HEADをプッシュします。


これを行うと、Visual Studioが完全に混乱し、正しく起動しなくなります。チームエクスプローラーはまったく読み込まれませんでしたが、それ以外はすべてエラーが発生します。参考までに。
Josh

これは動作するはずですが、実際に試したところ、gitlabサーバーは結果をブランチとして認識しませんでした。
JosephH 2016年

fooはリモートでどのブランチから分岐していますか?foo2から分岐してfooにしたい場合はどうなりますか?それは可能ですか?ありがとうございました。
user674669 2017

これはgerritサーバーでも機能し、このコマンドの前には存在しなかったリモート上に新しいブランチを作成します。
MichaelZ

33

最も簡単な解決策...ドラムロール... gitバージョン2.10.1(Apple Git-78)

1) git checkout -b localBranchNameThatDoesNotExistInRemote

2) Do your changes, and do a git commit 

3) git push origin localBranchNameThatDoesNotExistInRemote --force

注意-ローカル環境で作成したブランチと、プッシュしようとしている存在しないリモートブランチは、同じ名前なければなりません


3
あなたの提案をありがとう。これを簡単な解決策と呼んでも、私はそれでもgit push -uずっと簡単だと思います。グローバル設定行が1つ必要です。stackoverflow.com/ a / 27185855/109305を参照してください。私はgit push -u常に使用していますが、作業中のユースケースの99%をカバーしています。
JesperRønn-Jensen2017

30

[素早い回答]

あなたは2スティープでそれを行うことができます:

1.を使用しcheckoutてローカルブランチを作成します。

git checkout -b yourBranchName

2.pushコマンドを使用してブランチを自動作成し、コードをリモートリポジトリに送信します。

git push -u origin yourBanchName

これには複数の方法がありますが、この方法は本当に簡単だと思います。


1
迅速かつ的確に!
Dev

26

まず、ローカルでブランチを作成します。

git checkout -b your_branch

そして、リモートでブランチを作成するには:

git push --set-upstream origin your_branch

注:これは最新バージョンのgitで機能します。

$ git --version
git version 2.3.0

乾杯!


これはgit push、ローカルブランチがリモートで追跡されていないときにコマンドによって生成されるヘルプテキストにすぎません。
nurettin 2018年

18

ローカルマシンにブランチを作成し、このブランチに切り替えます。

$ git checkout -b [name_of_your_new_branch]

ブランチをgithubにプッシュします。

$ git push origin [name_of_your_new_branch]

ブランチで何かをコミットしたいときは、ブランチにいることを確認してください。

を使用して作成されたすべてのブランチを表示できます。

$ git branch

表示されます:

* approval_messages
  master
  master_clean

ブランチに新しいリモートを追加します。

$ git remote add [name_of_your_remote] 

コミットからブランチに変更をプッシュします。

$ git push origin [name_of_your_remote]

公式リポジトリの元のブランチが更新されたら、ブランチを更新します。

$ git fetch [name_of_your_remote]

次に、変更をマージするために適用する必要があります。ブランチが開発から派生している場合は、実行する必要があります。

$ git merge [name_of_your_remote]/develop

ローカルファイルシステムのブランチを削除します。

$ git branch -d [name_of_your_new_branch]

ファイルシステムのローカルブランチを強制的に削除するには:

$ git branch -D [name_of_your_new_branch]

githubのブランチを削除します。

$ git push origin :[name_of_your_new_branch]

ここにすべての情報

その他の既存プロジェクト


14

既存のブランチからローカルブランチを作成する(マスター/開発/その他のブランチにすることができます)。

git checkout -b branch_name

これをリモートにプッシュ

git push -u remote_name local_branch_name:remote_branch_name

ここに、

  1. -u:上流ブランチを設定します
  2. remote_name:gitは、リポジトリを作成するときに、デフォルトで名前を「origin」に設定します。ただし、これは別の任意の名前に変更できます。
  3. local_branch_name:プッシュするローカルブランチの名前です。
  4. remote_branch_name:リモートに作成するリモートブランチの名前です。

ローカルとリモートのブランチ名を削除すると、次の形式になります

git push -u remote_name branch_name

これにより、ローカルブランチがリモートにプッシュされ、ローカルブランチのbranch_nameと同じ名前になります。ローカルブランチはリモートブランチも追跡します。


10

私はこの質問への回答が正しいことを知っていますが、新しいブランチ「myNewBranch」を作成し、リモート(私の場合は「オリジン」)にプッシュして追跡を設定するために実行する手順をリストしたいだけです。これを "TL; DR"バージョンと考えてください:)

# create new branch and checkout that branch
git checkout -b myNewBranch
# now push branch to remote 
git push origin myNewBranch
# set up the new branch to track remote branch from origin
git branch --set-upstream-to=origin/myNewBranch myNewBranch

8

gitを使用すると、正しいブランチにいるときに入力するだけで済みます

git push --set-upstream origin <remote-branch-name>

そしてgit createでoriginブランチを作成します。


1
-uは--set-upstreamの省略形です。コマンドをgit pushすることができます-u origin <remote-branch-name>
キャッチされない例外

fatal: 'origin'はgitリポジトリではないようです
Dmitry Grinko

多分あなたはあなたのgitリポジトリの起源を設定する必要があります
Maurizio Brioschi 2018

8

それを追加したかっただけです:

git checkout -b {branchName}

新しいブランチを作成し、そのブランチをチェックアウトし、現在のブランチにします。なんらかの理由で、ブランチからスナップオフするだけで現在のブランチにしない場合は、次のコマンドを使用します。

git branch {branchName}

最初のコマンドでは、「チェックアウト」がこのブランチを現在のブランチにし、「-b」はこのブランチがまだ存在しないので、私のために作成することを意味します。


6

ソースツリーを使用する方法

 1: Open SourceTree, click on Repository -> Checkout
 2 :Click on Create New Branch
 3: Select branch where from you want to get code for new branch 
 4: Give your branch name
 5: Push the branch  (by click on Push button)

5

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

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

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


3

Egitを使用してEclipseでそれを行う方法を次に示します。

1)「Git Repository Exploring」ビューに移動し、ブランチを作成するgitプロジェクトを展開します。Brances-> Localの下で、ブランチを作成するブランチを選択します(この場合、マスターを選択しました..必要に応じて別のブランチを選択できます)..右クリックして、Create Branchオプションをクリックします。このプロジェクトのチェックアウトオプションを選択し、[完了]ボタンをクリックします。

2)プロジェクトエクスプローラからプロジェクトを選択します。右クリックして[チーム]-> [ブランチのプッシュ]を選択します。

新しいリモートブランチが作成されます。ブランチの名前を同僚に渡して、同僚がプルできるようにすることができます。


Egitに関する接線警告-すべてのJGitベースのクライアント、AFAIK:.gitattributesをサポートしていません!つまり、チームがWindows(CRLF)とLinux / OSX(LF)を組み合わせて使用​​する場合は、常に適切な設定を持つ各クライアントに依存する必要があります。当然のことながら、行末をリポジトリまたはプロジェクトレベルで集中管理することをお勧めします。これを行うには、.gitattributesがサポートされています。したがって、Egitを絶対に使用する必要がない場合は、使用しないでください。:)

2

2つの方法でブランチを作成しました

TortoiseGitを使用している場合は、次の手順に従います。

1. TortoiseGitを使用してブランチを作成する

プロジェクトを右クリック>>> TortoiseGit >>>ブランチを作成>>>ブランチの名前を書き、ベースブランチを選択して[ok]を押します

2.ブランチをプッシュする

プロジェクトを右クリック>>> TortoiseGit >>>プッシュ>>> OKをクリック

3.新しいブランチに切り替える

プロジェクトを右クリック>>> TortoiseGit >>>スイッチ/チェックアウト>>>新しく作成したブランチを選択し、[ok]を押します

コマンドプロンプトを使用している場合は、次の手順に従います。

1.コマンドプロンプトを使用してブランチを作成する

$ git checkout -b new_branch_name

2.ブランチをプッシュする

$ git push origin new_branch_name

3.新しいブランチに切り替えると、すでにnew_branch_nameに切り替わります。それ以外の場合は、

$ git checkout new_branch_name


0

私はこれを使用し、それはかなり便利です:

git config --global alias.mkdir '!git checkout -b $1; git status; git push -u origin $1; exit;'

使用法:git mkdir NEW_BRANCH

git statusも必要ありません。たぶん、私はすべてがうまくいっていることを確認したいだけです...

1つのコマンドでLOCALブランチとREMOTEブランチの両方を持つことができます。

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