新しいローカルブランチをリモートGitリポジトリにプッシュして追跡するにはどうすればよいですか?

2010年05月04日に質問されました。  ·  閲覧回数 3.6M回  ·  ソース

Roni Yaniv picture
2010年05月04日

私は次のことができるようになりたいです:

  1. 他の(リモートまたはローカル)ブランチに基づいてローカルブランチを作成します( git branchまたはgit checkout -b介して)

  2. ローカルブランチをリモートリポジトリにプッシュします(公開)が、追跡可能にして、 git pullgit pushがすぐに機能するようにします。

それ、どうやったら出来るの?

Git 1.7の--set-upstreamについて知っていますが、それは作成後のアクションです。 ブランチをリモートリポジトリにプッシュするときに、同様の変更を加える方法を見つけたいと思います。

回答

Daniel Ruoso picture
2011年06月04日
6924

Git 1.7.0以降では、新しいブランチをチェックアウトできます。

git checkout -b <branch>

ファイルを編集し、追加してコミットします。 次に-u--set-upstream略)オプションで

git push -u origin <branch>

Gitはプッシュ中に追跡情報を設定します。

ErichBSchulz picture
2014年01月20日
507

リポジトリを他の人と共有していない場合、これはすべてのブランチをリモートにプッシュ--set-upstreamを正しく追跡するのに役立ちます。

git push --all -u

(OPが求めていたものとは異なりますが、このワンライナーはかなり人気があります)

リポジトリを他の人と共有している場合、これは本当に良い形式ではありません。すべての危険な実験ブランチでリポジトリを詰まらせるからです。

Lohrun picture
2010年05月04日
167

git push -uが導入される前は、必要なものを取得するためのgit pushオプションはありません

以下を使用して新しいブランチを作成する場合:

$ git checkout -b branchB
$ git push origin branchB:branchB

git configコマンドを使用して、 .git/configファイルを直接編集しないようにすることができます。

$ git config branch.branchB.remote origin
$ git config branch.branchB.merge refs/heads/branchB

または、 .git/configファイルを手動で編集して、このブランチへの追跡情報を含めることもできます。

[branch "branchB"]
    remote = origin
    merge = refs/heads/branchB
piyushmandovra picture
2015年04月24日
137

簡単に言うと、新しいローカルブランチを作成するには、次のようにします。

git branch <branch-name>

リモートリポジトリにプッシュするには、次の手順を実行します。

git push -u origin <branch-name>
bg17aw picture
2016年07月05日
111

ここですでに示したソリューションのわずかなバリエーション:

  1. 他の(リモートまたはローカル)ブランチに基づいてローカルブランチを作成します。

    git checkout -b branchname
    
  2. ローカルブランチをリモートリポジトリにプッシュします(公開)が、追跡可能にして、 git pullgit pushがすぐに機能するようにします

    git push -u origin HEAD
    

    HEADは、「現在のブランチをリモートの同じ名前にプッシュする便利な方法」です。 出典: https

    -uオプションは、 --set-upstream略です。 これにより、現在のブランチのアップストリームトラッキング参照が追加されます。 これは、.git / configファイルを調べることで確認できます。

    Enter image description here

Arda picture
2017年03月20日
72

私は単にします

git push -u origin localBranch:remoteBranchToBeCreated

すでに複製されたプロジェクトに対して。

Gitは、 localBranch行ったコミットの下に、 remoteBranchToBeCreatedという名前の新しいブランチを作成します。

編集:これにより、現在のローカルブランチ( localBranchという名前の可能性があります)のアップストリームがorigin/remoteBranchToBeCreatedます。 これを修正するには、次のように入力します。

git branch --set-upstream-to=origin/localBranch

または

git branch -u origin/localBranch

したがって、現在のローカルブランチはorigin/localBranch追跡します。

VP. picture
2010年05月04日
34

あなたはすでに次のようなプロジェクトのクローンを作成していると思います。

git clone http://github.com/myproject.git
  1. 次に、ローカルコピーで、新しいブランチを作成してチェックアウトします。

    git checkout -b <newbranch>
    
  2. サーバーで「gitbare--init」を作成し、myapp.gitを作成したとすると、次のようにする必要があります。

    git remote add origin ssh://example.com/var/git/myapp.git
    git push origin master
    
  3. その後、ユーザーはできるはずです

    git clone http://example.com/var/git/myapp.git
    

注:サーバーが稼働していることを前提としています。 そうでない場合、それは機能しません。 良いハウツーはここにあり

追加

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

git push origin master:new_feature_name

すべてが良好かどうかを確認します(オリジンをフェッチしてリモートブランチを一覧表示します)。

git fetch origin
git branch -r

ローカルブランチを作成し、リモートブランチを追跡します。

git checkout -tb new_feature_name origin/new_feature_name

すべてを更新します。

git pull
Tobias Kienzler picture
2010年05月04日
26

古くなった編集git push -u origin $BRANCHNAME使用するだけ


Williamのその他のGitツールgitorious repo and clone )のgit publish-branch使用します

OK、Rubyはないので、セーフガードを無視します。 -スクリプトの最後の3行を取得し、bashスクリプトgit-publish-branchを作成します。

#!/bin/bash
REMOTE=$1 # Rewrite this to make it optional...
BRANCH=$2
# Uncomment the following line to create BRANCH locally first
#git checkout -b ${BRANCH}
git push ${ORIGIN} ${BRANCH}:refs/heads/${BRANCH} &&
git config branch.${BRANCH}.remote ${REMOTE} &&
git config branch.${BRANCH}.merge refs/heads/${BRANCH}

次に、 git-publish-branch REMOTENAME BRANCHNAME実行します。ここで、REMOTENAMEは通常originです(デフォルトとしてoriginを使用するようにスクリプトを変更できます...)

cptjack picture
2015年06月04日
24

既存のブランチから分岐して新しいブランチを作成するには

git checkout -b <new_branch>

次に、を使用してこの新しいブランチをリポジトリにプッシュします

git push -u origin <new_branch>

これにより、すべてのローカルコミットが作成され、新しく作成されたリモートブランチorigin/<new_branch>プッシュされます。

Fadid picture
2016年12月07日
14

1.7より前のバージョンのGitLabの場合は、以下を使用します。

git checkout -b name_branch

(name_branch、例: master

リモートリポジトリにプッシュするには、次の手順を実行します。

git push -u origin name_new_branch

(name_new_branch、例: feature