[解決済み] リモートブランチからチェリーピックを行うには?
質問
チェリーピックの実行に問題があります。私のローカルマシンでは、現在私の"master"ブランチにいます。私は、"zebra"という名前の別のブランチからコミットをチェリーピックしたいのです。この "zebra" ブランチは、リモートブランチです。
そこでgit status。
# On branch master
nothing to commit (working directory clean)
さて、今度は欲しいコミットをチェリーピックしてみます。
git cherry-pick xyz
fatal: bad object xyz
ここで、"xyz" はブランチ "zebra" で発生した、私が関心を持つコミットのシグネチャを表します。
そこでまず疑問に思うのは、なぜ git は私が参照しているコミットを見つけられないのだろうということです。正直なところ、これがそもそもどのように機能しているのかよくわかりません。git は他のすべてのブランチに対して、コミットのデータベースを作業ディレクトリにローカルに保存しているのでしょうか?cherry-pick コマンドを実行するときに、そのローカルのデータベースを検索して私が話しているコミットを見つけるのでしょうか?
zebra"はリモートブランチなので、ローカルにそのデータがないのではと思ったのですが。ということで、ブランチを切り替えました。
git checkout zebra
Switched to branch 'zebra'
そして今、私のローカルマシンで、ディレクトリ内のファイルがzebraの状態を正しく反映していることが確認できます。masterに戻り、もう一度cherry-pickしてみましたが(コミットデータが利用可能であることを期待して)、同じ問題が発生しました。
根本的に誤解しているようなので、何かご教示いただければ幸いです。
どのように解決するのですか?
<ブロッククオートzebra"はリモートブランチなので、そのデータを持っていないと思っていたのです。 をローカルに表示します。
正しいデータを持っていないのは正しいのですが、間違った方法で解決しようとしました。リモート・ソースからローカルにデータを収集するためには
git fetch
. あなたが
git checkout zebra
を実行すると、前回フェッチしたときのブランチの状態に切り替わります。ですから、まずリモートから取得するようにしましょう。
# fetch just the one remote
git fetch <remote>
# or fetch from all remotes
git fetch --all
# make sure you're back on the branch you want to cherry-pick to
git cherry-pick xyz
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] git rebase の取り消し
-
[解決済み] リモートにないトラッキングブランチを削除
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み] Git で、別のブランチの変更を選択的にマージしたり選択したりするにはどうすればよいですか?
-
[解決済み】ローカルリポジトリのブランチをリセットして、リモートリポジトリのHEADと同じにする
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】以下の追跡されていないワーキングツリーファイルは、マージによって上書きされますが、私は気にしません。
-
[解決済み】ローカルに変更があるにもかかわらず、git pushが「すべて最新」と言う
-
[解決済み] リモートの <ブランチ名> とマージするように設定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み】gitの「not something we can merge」エラーの解決方法
-
[解決済み】Git Push Error: リポジトリデータベースにオブジェクトを追加する権限が不足しています。
-
[解決済み] このリポジトリで別の git プロセスが実行されているようです。
-
[解決済み] 無効なVCSルートマッピング - 私のプロジェクトで3つのエラーが発生しました。
-
[解決済み] git ls-remote と git ls-remote origin の違い。
-
[解決済み] git initを2回実行すると、リポジトリが初期化されますか?それとも既存のリポジトリを再初期化しますか?
-
[解決済み] "fatal: This operation must be run in work tree." というメッセージが表示されるのはなぜですか?