メインブランチ(マスター)といくつかの実験的作業用のブランチを備えたgithubにリポジトリがあります。私はいくつかのコミットを行い、実験的なブランチにプッシュしましたが、すべてが順調でした。
今、別のマシンで、リポジトリのクローンを作成して(git clonerepository)、実験ブランチに切り替えます(git checkoutbranchname)しかし、これを行うたびに頭が外れ、変更をプッシュできません。私は何を間違えていますか?基本的なgitの概念をどこかで見逃しているような気がしますが、ランダムなgitのマニュアルページを読んでも手がかりが得られません。
私はgitが初めてなので、バカになっていたら申し訳ありませんが、ドキュメントに頭を付け直すのに役立つものが見つかりません。
[〜#〜] edit [〜#〜]
追跡ブランチの概念は、私が欠けていたものです。その概念を理解した今、すべてが明確になりました。個人的には、git branch --track
構文は、git checkout -b branch-name Origin/branch-name
。
助けてくれてありがとう!
# first time: make Origin/branchname locally available as localname
git checkout -b localname Origin/branchname
# othertimes
git checkout localname
git Push Origin
便宜上、ローカル名とブランチ名に同じ文字列を使用できます
チェックアウトしたときOrigin/branchname
ブランチを実際にチェックアウトしていませんでした。 Origin/branchname
は「リモート」名であり、次のコマンドでリストを取得できます。
branch -a
色を有効にしている場合、ローカルブランチは1色になり、リモートブランチは別の色になります。
切り替えて作業できるようにするには、最初にリモートブランチをローカルで追跡する必要があります。
git clone [email protected]:abc/def.git
cd def
追跡ブランチを作成します。
git branch --track experimental Origin/experimental
git checkout experimental
次に、そこで作業した後、単にgithubにプッシュします
git Push
ケントの返事を拡張するために、あなたがクローンをした後、あなたが持つ唯一のブランチ(リモートはカウントしません)は、あなたがクローンを作成したリポジトリでアクティブであったブランチです-あなたの場合はマスターです。
そのため、最初に新しいブランチを作成して、リモートの実験的なブランチを追跡します。
$ git branch experimental Origin/experimental
そして、それをチェックしてください:
$ git checkout experimental
ただし、Kentは正しい-これら2つのコマンドを組み合わせることができます
$ git checkout -b experimental Origin/experimental
Git 2.23(2019年8月)では、 git switch
コマンド
同じ名前のリモートブランチがある場合、自動的に追跡されます。
$ git switch new-topic
Branch 'new-topic' set up to track remote branch 'new-topic' from 'Origin'
Switched to a new branch 'new-topic'