新しいローカルブランチをリモートGitリポジトリに押して追跡するにはどうすればよいですか?
-
03-10-2019 - |
質問
次のことができるようになりたい:
他の(リモートまたはローカル)ブランチに基づいてローカルブランチを作成します(経由
git branch
またgit checkout -b
)ローカルブランチをリモートリポジトリ(公開)に押しますが、追跡可能にします。
git pull
とgit push
すぐに動作します。
それ、どうやったら出来るの?
私は知っています --set-upstream
GIT 1.7では、それは作成後のアクションです。ブランチをリモートリポジトリにプッシュするときに、同様の変更を加える方法を見つけたいと思います。
解決
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://git-scm.com/docs/git-pushGITの用語では、ヘッド(大文字で)は、現在のブランチ(ツリー)の上部への参照です。-u
オプションは略です--set-setupstream
. 。これにより、現在のブランチの上流追跡リファレンスが追加されます。 .git/configファイルを調べて、これを確認できます。
私は単にそうします
git push -u origin localBranch:remoteBranchToBeCreated
すでにクローン化されたプロジェクトを介して。
gitという名前の新しいブランチが作成されます remoteBranchToBeCreated
私のコミットの下で私はやった localBranch
.
編集: :これはあなたの現在のローカル支店の(おそらく名前が付けられている可能性があります localBranch
)上流 origin/remoteBranchToBeCreated
. 。それを修正するには、単に入力してください。
git branch --set-upstream-to=origin/localBranch
したがって、現在のローカルブランチは現在追跡されています origin/localBranch
戻る。
私はあなたがすでに次のようなプロジェクトをクローンしていると思います:
git clone http://github.com/myproject.git
次に、地元のコピーで、新しいブランチを作成してチェックしてください。
git checkout -b <newbranch>
サーバーで「git bare - 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
使用する git publish-branch
から ウィリアムのその他のgitツール (Gitorious Repo と クローン).
OK、ルビーはないので、セーフガードを無視してください! - スクリプトの最後の3行を取り、バッシュスクリプトを作成します。 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
, 、通常、リモートネームは起源です(スクリプトを変更して、原点をデフォルトとして取得するなど...)
既存のブランチから分岐して新しいブランチを作成するには
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
)
新しいブランチを作成するたびに、それに応じてリモートブランチを押して追跡するようにエイリアスを作成しました。私は後にチャンクを入れました .bash_profile
ファイル:
# Create a new branch, push to origin and track that remote branch
publishBranch() {
git checkout -b $1
git push -u origin $1
}
alias gcb=publishBranch
使用法: :入力するだけです gcb thuy/do-sth-kool
と thuy/do-sth-kool
私の新しいブランチ名です。
ここでの回答にわずかに構築されて、私はこのプロセスを単純なバッシュスクリプトとして包みました。これはもちろん、Gitエイリアスとしても使用できます。
私にとって重要な追加は、これにより、コミットする前にユニットテストを実行し、デフォルトで現在のブランチ名に合格するように促されることです。
$ git_push_new_branch.sh
Have you run your unit tests yet? If so, pass OK or a branch name, and try again
usage: git_push_new_branch {OK|BRANCH_NAME}
e.g.
git_push_new_branch -> Displays prompt reminding you to run unit tests
git_push_new_branch OK -> Pushes the current branch as a new branch to the origin
git_push_new_branch MYBRANCH -> Pushes branch MYBRANCH as a new branch to the origin
git_push_new_branch.sh
function show_help()
{
IT=$(cat <<EOF
Have you run your unit tests yet? If so, pass OK or a branch name, and try again
usage: git_push_new_branch {OK|BRANCH_NAME}
e.g.
git_push_new_branch.sh -> Displays prompt reminding you to run unit tests
git_push_new_branch.sh OK -> Pushes the current branch as a new branch to the origin
git_push_new_branch.sh MYBRANCH -> Pushes branch MYBRANCH as a new branch to the origin
)
echo "$IT"
exit
}
if [ -z "$1" ]
then
show_help
fi
CURR_BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$1" == "OK" ]
then
BRANCH=$CURR_BRANCH
else
BRANCH=${1:-$CURR_BRANCH}
fi
git push -u origin $BRANCH
あなたは2人の急勾配でそれを行うことができます:
1. 使用 checkout
ローカルブランチを作成するには:
git checkout -b yourBranchName
あなたが望むようにあなたの枝と一緒に作業してください。
2. 使用 push
ブランチを自己構造化し、コードをリモートリポジトリに送信するコマンド:
git push -u origin yourBanchName
これを行うには反対的な方法がありますが、この方法は本当に簡単だと思います。
公開リポジトリの地元の支店をアップロードするには、 cd
公開リポジトリに、次のコードを使用します。
git push -u origin branchname