問題タブ [git-cherry-pick]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - git あるコミットから別のブランチに変更を適用する
git rebase に似たようなことをしたいのですが、並列コミットを崩壊させません。
次のコミットがあるとします。
ここで、D がブランチ foo で C に導入した変更を取得し、それらをブランチ bar の B に適用したいと考えています。私は次のようになります:
コミット B と E の違いは、コミット C と D の違いと同じです。これは可能ですか? パッチを作成せずにそれを行う方法はありますか?
git - ブランチでのコミットのマージ
私はGitが初めてです。
新しいブランチを作成しましたnew_branch
。すべての変更とコミットを別のブランチで行いましたold_branch
。old_branch
ここで、ブランチからnew_branch
byへのコミットをいくつか選択したいと思いgit cherry-pick
ます。そのためには、まずどのコミットがそのブランチにあるかを知り、次にそれらを選択して とマージする必要がありnew_branch
ます。
これどうやってするの?
git - より詳細な git cherry
のように動作する git cherry を探していgit log
ます。
git リポジトリに 2 つの独立したブランチがあります (svn インポートの結果)。共通の祖先も、それらの間のマージもありません。これら 2 つのブランチが同じプロジェクトに関係していても、これら 2 つのブランチが接続されることは望ましくありません。
2 つのブランチは次のとおりです。
master
(きれいなライン、リリース可能なコード)
old_trunk
(ジャンク開発ブランチ、実験的なコミットと私がチェリーピックしたいものを含む)
今、
すでにマスターに適用されている変更セットを適切に識別します (svn マージはチェリーピックのように機能するため)。
ただし、git ログ:
マスターにまだ適用されていないすべてのコミットを表示します。チェリーピックを見つけるために壊れているか、別のメカニズムを使用しています。
old_trunk
履歴をナビゲートして作成者を確認し、コミットの日付を確認し、完全なコミット メッセージを確認し、最も重要なこととして、既に行われたチェリー ピックを区別できるようにするソリューションを探しています。
何かご意見は?
git - git cherry-pick: コミットによって変更された行のみを考慮する方法 (つまり、周囲のコンテキストではない)?
私は2つのブランチを持つプロジェクトを持っています:
branch2 の上にコミット E (D ではなく) を適用したい。
競合を解決するためにgit cherry-pickとgit mergetool ( meldを使用) を使用しました。ここまでは順調ですね。
ただし、コミット C 後のファイルの状態が
コミット E によって導入された変更は
デフォルトでmergetoolによって表示される結果は
(つまり、行 E1 と E2 はコミット E に従って変更されましたが、内部コンテキストは現在のブランチから保持されています)。
代わりに、mergetool (つまり、meld) はデフォルトで次のように表示します。
これは本当に意味がありません。
branch2 からコンテキストを保持し、コミット E によって変更された行への変更のみを考慮するように git cherry-pick に指示するにはどうすればよいですか?
git - Git チェリーピック、github ブランチの比較、SHA ID など
チェリーピックについて質問です。デプロイと開発の 2 つの主要なブランチを持つプロジェクトがあります (これは単純化されていますが、正確なビューです)。デプロイは本番サーバーにデプロイしたものであり、開発は私たちが取り組んでいるものです (個々の機能/修正などの開発から離れた機能ブランチを使用)。
機能ブランチから開発にマージされた (個々の開発者のフォークからの GitHub プル リクエストを介して) コミットがあり、それを本番環境にプッシュする必要がありました。まだデプロイしたくない開発中の他のコミットがあったので、私はgit checkout deploy && git cherry-pick 049cae3 && git push
必要な 1 つのコミットを取得します。これで問題なく動作し、コードは本番環境にプッシュされました。ただし、GitHub API を使用して deploy..develop の比較を行うステータス ダッシュボードがあり、develop で積み上げられたもののデプロイされていないコミットの数を確認できます。数値が変わらないことに気付きました。github の比較ページを見ると、チェリーピックしたコミットがまだ差分に表示されていました。これは、cherry-pick が新しい SHA でコミットを適用するため、GitHub がそれを両方のブランチにあると見なさないためだと思います。これらは 2 つの異なるコミットです。
ある時点で開発をデプロイにマージするので、これはおそらく大したことではありませんが、その場合、コミットが重複する可能性がありますよね? (そして、はい、私たちはマージを行っています。リベースは私を怖がらせますが、私はまだそれを理解していません)。
では、特定のコミットが 1 つ必要な状況を考えると、チェリー ピッキングは正しい方法でしたか? そうでない場合、何ですか?