私は次のことができるようになりたいです:
他の(リモートまたはローカル)ブランチに基づいてローカルブランチを作成します( git branch
またはgit checkout -b
介して)
ローカルブランチをリモートリポジトリにプッシュします(公開)が、追跡可能にして、 git pull
とgit push
がすぐに機能するようにします。
それ、どうやったら出来るの?
Git 1.7の--set-upstream
について知っていますが、それは作成後のアクションです。 ブランチをリモートリポジトリにプッシュするときに、同様の変更を加える方法を見つけたいと思います。
Git 1.7.0以降では、新しいブランチをチェックアウトできます。
git checkout -b <branch>
ファイルを編集し、追加してコミットします。 次に、 -u
( --set-upstream
略)オプションで
git push -u origin <branch>
Gitはプッシュ中に追跡情報を設定します。
リポジトリを他の人と共有していない場合、これはすべてのブランチをリモートにプッシュ--set-upstream
を正しく追跡するのに役立ちます。
git push --all -u
(OPが求めていたものとは異なりますが、このワンライナーはかなり人気があります)
リポジトリを他の人と共有している場合、これは本当に良い形式ではありません。すべての危険な実験ブランチでリポジトリを詰まらせるからです。
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
簡単に言うと、新しいローカルブランチを作成するには、次のようにします。
git branch <branch-name>
リモートリポジトリにプッシュするには、次の手順を実行します。
git push -u origin <branch-name>
ここですでに示したソリューションのわずかなバリエーション:
他の(リモートまたはローカル)ブランチに基づいてローカルブランチを作成します。
git checkout -b branchname
ローカルブランチをリモートリポジトリにプッシュします(公開)が、追跡可能にして、 git pull
とgit push
がすぐに機能するようにします
git push -u origin HEAD
HEAD
は、「現在のブランチをリモートの同じ名前にプッシュする便利な方法」です。 出典: https :
-u
オプションは、 --set-upstream
略です。 これにより、現在のブランチのアップストリームトラッキング参照が追加されます。 これは、.git / configファイルを調べることで確認できます。
私は単にします
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
追跡します。
あなたはすでに次のようなプロジェクトのクローンを作成していると思います。
git clone http://github.com/myproject.git
次に、ローカルコピーで、新しいブランチを作成してチェックアウトします。
git checkout -b <newbranch>
サーバーで「gitbare--init」を作成し、myapp.gitを作成したとすると、次のようにする必要があります。
git remote add origin ssh://example.com/var/git/myapp.git
git push origin master
その後、ユーザーはできるはずです
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
古くなった編集、 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を使用するようにスクリプトを変更できます...)
既存のブランチから分岐して新しいブランチを作成するには
git checkout -b <new_branch>
次に、を使用してこの新しいブランチをリポジトリにプッシュします
git push -u origin <new_branch>
これにより、すべてのローカルコミットが作成され、新しく作成されたリモートブランチorigin/<new_branch>
プッシュされます。
1.7より前のバージョンのGitLabの場合は、以下を使用します。
git checkout -b name_branch
(name_branch、例: master
)
リモートリポジトリにプッシュするには、次の手順を実行します。
git push -u origin name_new_branch
(name_new_branch、例: feature
)