タグ付けされた質問 「cherry-pick」

ソース管理では、単一の変更をピアからピアに選択的にプルする動作を「チェリーピック」と呼びます。


12
複数のコミットを選択する方法
私は2つの支店を持っています。コミットa他が持っている一方で、1のヘッドであるb、c、d、eとfの上にa。私が移動したいc、d、eおよびfコミットせずに最初の分岐にb。チェリーピックを使用するのは簡単です。最初のブランチを1つずつチェリーピックでチェックアウトcしf、2番目のブランチを最初にリベースします。しかし、チェリー選ぶすべてにどのような方法がありますc- f1つのコマンドで? 以下は、シナリオの視覚的な説明です(JJDに感謝)。

11
別のgitリポジトリからコミットを選択することはできますか?
私は、最初の何も知らない別のgitリポジトリからのコミットが必要なgitリポジトリを使用しています。 通常HEAD@{x}、reflogのを使用してチェリーピックしますが、これ.gitはこのreflogエントリ(物理ディレクトリが異なる)を何も知らないため、どのようにチェリーピックすることができますか? 私は使用していgit-svnます。私の最初の分岐は、使用しているgit-svnのtrunkSubversionのレポの、そして次の分岐を使用しているgit-svnSubversionのブランチに。
726 git  cherry-pick 

12
特定のファイルへの変更のみをgit-cherry-pickする方法は?
複数のファイルへの変更を含む特定のコミットで変更された一部のファイルのみに加えられた変更をGitブランチにマージしたい場合、どのようにしてこれを達成できますか? Gitのが呼ばコミットと仮定すると、stuffファイルへの変更があるA、B、C、とD私はマージしたいが、stuffファイルへの変更をAしてB。それはのための仕事のように聞こえるgit cherry-pickが、cherry-pickファイルのみのサブセット、全体のコミットをしませマージする方法を知っています。
587 git  github  cherry-pick 

5
git cherry-pickは、「…38c74dはマージですが、-mオプションが指定されていません」と述べています。
私は私のマスターブランチにいくつかの変更を加え、それらをアップストリームにしたいと思っています。次のコミットをチェリーピックすると、gitが言うfd9f578に行き詰まります。 $ git cherry-pick fd9f578 fatal: Commit fd9f57850f6b94b7906e5bbe51a0d75bf638c74d is a merge but no -m option was given. gitが私に伝えようとしていることは何ですか?ここでチェリーピックを使用するのは適切ですか?マスターブランチには、上流のブランチで変更されたファイルへの変更が含まれているため、マージの競合が発生することは間違いありませんが、それらを修正しても問題はありません。どの変更がどこで必要かを知っています。 これらは私がアップストリームに持ち込みたいコミットです。 e7d4cff added some comments... 23e6d2a moved static strings... 44cc65a incorporated test ... 40b83d5 whoops delete whitspace... 24f8a50 implemented global.c... 43651c3 cleaned up ... 068b2fe cleaned up version.c ... fd9f578 Merge branch …
519 git  merge  rebase  cherry-pick 

4
どのGitブランチモデルが適していますか?
当社は現在、単純なトランク/リリース/ホットフィックス分岐モデルを使用しており、どの分岐モデルが会社または開発プロセスに最適かについてアドバイスを求めています。 ワークフロー/分岐モデル 以下は、これについて私が見た3つの主な説明ですが、それらは部分的に互いに矛盾しているか、(以下で説明するように)発生した後続の問題を整理するのに十分ではありません。したがって、これまでのところ、私たちのチームはそれほど優れたソリューションではないとしています。あなたはもっと良いことをしていますか? gitworkflows(7)マニュアルページ (nvie)成功した​​Git分岐モデル (reinh)アジャイルチームのためのGitワークフロー マージとリベース(複雑な履歴と順次履歴) pull --rebaseタスクが完了するまで、メインラインにマージして待機する必要がありますか?個人的には、どのベースでタスクが開始および終了したかを示す視覚的なイラストが保存されるため、私はマージに傾倒していますmerge --no-ff。この目的のためにも、私は好んで使用しています。ただし、他の欠点もあります。また、マージの有用な特性を理解していない人も多くいます-それは可換ではありません(トピックブランチをマスターにマージしても、マスターをトピックブランチにマージすることを意味するわけではありません)。 自然なワークフローを探しています 私たちの手順は単純なルールでは特定の状況を捉えていないため、時々間違いが発生します。たとえば、以前のリリースに必要な修正はもちろん、必要なすべてのブランチに上流をマージできるように十分に下流に基づいている必要があります(これらの用語の使用法は十分明確ですか?)ただし、開発者がそれがさらに下流に配置されているはずであることに開発者が気付く前に、修正がマスターに組み込まれ、それがすでにプッシュされている場合(さらに悪いことに、マージまたはそれに基づくもの)、残りのオプションはチェリーピッキングであり、関連する危険。このような単純なルールを使用しますか?これには、他のトピックブランチを必ず除外する1つのトピックブランチのぎこちなさも含まれます(それらが共通のベースラインからブランチされている場合)。開発者は、機能を完成させて、今書いたコードがもう存在しないような別の感覚を開始したくない (cherry-pickによる)マージの競合を回避する方法 マージの競合を発生させる確実な方法は、ブランチ間でチェリーピックすることです。ブランチを再びマージすることはできませんか?どちらのブランチでも、リバートで同じコミットを適用すると(これを行う方法は?)、この状況が解決される可能性がありますか?これは、私が大部分がマージベースのワークフローを敢えて推し進めない1つの理由です。 局所的な枝に分解する方法は? トピックブランチから完成した統合をアセンブルすることは素晴らしいことだと認識していますが、開発者による作業は明確に定義されていないことがあり(「ポーキング」のように単純な場合もあります)、コードがすでに「その他」のトピックに入っている場合は、上記の質問によると、それを再びそこから取り出すことはできませんか?トピックブランチの定義/承認/卒業/リリースをどのように行いますか? コードのレビューや卒業などの適切な手順はもちろんすばらしいでしょう。 しかし、これを管理するのに十分なほど絡み合っておくことはできません。何か提案はありますか?統合ブランチ、イラスト? 以下は関連する質問のリストです: デプロイされたアプリケーションをホットフィックス可能にするための良い戦略は何ですか? 社内開発でのGit使用のワークフローの説明 企業のLinuxカーネル開発のためのGitワークフロー 開発コードと製品コードをどのように維持しますか?(この PDFに感謝!) gitリリース管理 Git Cherry-pickとマージのワークフロー 複数のコミットを選択する方法 選択したファイルをgit-mergeでどのようにマージしますか? 一連のコミットを選択して別のブランチにマージする方法 ReinH Gitワークフロー 元に戻さない変更を行うためのgitワークフロー マージをチェリーピックする OSとプライベートコードを組み合わせた適切なGitワークフロー? Gitでプロジェクトを維持する 変更された親/マスターでGitがファイルの変更をマージできないのはなぜですか。 Gitのブランチ/グッドプラクティスのリベース 「git pull --rebase」を実行するといつ問題が発生しますか? 大規模なチームでDVCSはどのように使用されますか? また、Plastic SCMがタスク駆動開発に書き込む内容を確認し、Plasticを選択しない場合は、nvieの分岐モデルとそれをサポートするスクリプトを調べてください。

3
Git Cherry-pickとマージのワークフロー
私がリポジトリのメンテナーであり、コントリビューターから変更をプルしたい場合、いくつかの可能なワークフローがあります: 私はcherry-pickそれぞれリモートから(順番に)コミットします。この場合、gitはコミットをリモートブランチとは無関係であると記録します。 私mergeはブランチで、すべての変更を取り込み、新しい「競合」コミットを追加します(必要な場合)。 私はmergeそれぞれリモートブランチから(順番に)個別にコミットし、すべてを1つにまとめるのではなく、コミットごとに競合を記録できるようにします。 完全を期すために、rebase(cherry-pickオプションと同じですか?)を実行できますが、私の理解では、これは投稿者を混乱させる可能性があります。多分それはオプション1を排除します。 2と3のどちらの場合も、1とは異なり、gitはコミットのブランチ履歴を記録します。 cherry-pickまたはmerge説明されている方法を使用することの賛否両論は何ですか?私の理解は方法2が標準であるということですが、単一の「競合」マージで大規模なコミットを解決することは、最もクリーンな解決策ではないと感じています。
302 git  merge  cherry-pick 

10
特定のコミットを削除する
私はプロジェクトで友人と働いていました、そして彼は編集されるべきではないたくさんのファイルを編集しました。どういうわけか、私はそれを引っ張ったとき、または私が欲しがっている特定のファイルだけを選ぼうとしたときに、彼の仕事を私のものにマージしました。私は長い間探して遊んでいて、それらのファイルへの編集を含むコミットを削除する方法を見つけようとしていましたが、それは元に戻すとリベースの間でトスアップのようであり、簡単な例はなく、ドキュメントは私が私よりも多くを知っていると仮定しています。 だからここに質問の簡略版があります: 次のシナリオで、コミット2を削除するにはどうすればよいですか? $ mkdir git_revert_test && cd git_revert_test $ git init Initialized empty Git repository in /Users/josh/deleteme/git_revert_test/.git/ $ echo "line 1" > myfile $ git add -A $ git commit -m "commit 1" [master (root-commit) 8230fa3] commit 1 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 myfile …

2
チェリーピックの作業後にgitはどのようにマージされますか?
masterブランチがあるとしましょう。 次に、 newbranch git checkout -b newbranch そして、2つの新しいコミットを作成しnewbranchます:commit1とcommit2 次にマスターに切り替えて cherry-pick git checkout master git cherry-pick hash_of_commit1 gitk調べてみると、commit1とその厳選されたバージョンではハッシュが異なるため、厳密には2つの異なるコミットであることがわかります。 最後にマージnewbranchしmasterます: git merge newbranch 同じハッシュを2回適用する必要があることを示しているため、ハッシュが異なる2つのコミットが問題なくマージされたことを確認してください。 gitはマージ中に実際にコミットの内容をスマートに分析し、変更を2回適用しないようにするか、これらのコミットが内部でリンクされているとマークされていると判断しますか?

1
ある枝から別の枝にチェリーピックする方法
私は2つの支店を持っている、masterとdev。 私はdevブランチにいて、からmasterまで1つのコミットをチェリーピックしたいと思いdevます。だから私はやった $ git cherry-pick be530cec7748e037c665bd5a585e6d9ce11bc8ad Finished one cherry-pick. しかし、私がgit statusとを実行するとgitx、be530cec7748e037c665bd5a585e6d9ce11bc8adgit履歴にコミットが表示されません。 devブランチでコミットを確認するにはどうすればよいですか?

4
git cherry-pickが機能しない
私はマスターからコミットをチェリーピックして現在の本番ブランチに入れようとしています。ただし、を実行するとgit cherry-pick <SHA-hash>、次のメッセージが表示されます。 # On branch prod_20110801 # Untracked files: # (use "git add <file>..." to include in what will be committed) # site/test-result/ nothing added to commit but untracked files present (use "git add" to track) The previous cherry-pick is now empty, possibly due to conflict resolution. If you …

2
Mercurialで移植片を使用した結果
最近、Mercurialでリリースブランチを維持するときに変更をスキップすることについていくつかの質問がありました。例えば: Mercurial:ダミーのマージ後、ブランチ固有の変更が引き続き返される あるブランチのMercurialバックアウトが他のブランチに影響を与えるのはなぜですか? これは2.0で導入されて以来、graftこの問題を回避するためにを使用することについて疑問に思っていました。次のようなリビジョンツリーがあるとします。 A---B---C---D---E---F---G---H---I---J 悪の変更をスキップするリリースブランチを作成する必要があるとしますE。 hg update -r D hg graft "F::J" 私たちに与える: A---B---C---D---E---F---G---H---I---J \ --F'--G'--H'--I'--J' Q1:ここで何が起こったのですか?私はそれが理解できるtransplantの外にパッチを生成しているだろうF::Jし、その後にそれらを適用しDますが、graftむしろパッチよりも3ウェイマージを使用すると言われています。それで……それはどのように機能しますか?なぜそれが良いのですか? 今修正しE、それをリリースブランチにマージするとします。 --E2----------------- / \ A---B---C---D---E---F---G---H---I---J---M1 \ \ --F'--G'--H'--I'--J'---------M2-- M1は単純なマージです。特別なことは何もありません。M2は、「同じ」(または少なくとも同等の)変更がオンになっているブランチをマージしています。 Q2:このマージは、通常の3ウェイマージ使用しているD、J'とM1? Q3:mercurialは、マージ操作に役立つ移植操作に関する追加情報を保存/使用していますか? そして最後に... Q4:このようなフローの潜在的な問題は何ですか?

4
GITの変更のプッシュ中にエラーが発生しました。参照名はgit ref-formatルールに従う必要があります
Sourcetreeでgitを使用すると1つのエラーが発生します。私はsprints / Mycompany_sprint_1という名前のローカルブランチを作成し(カテゴリに追加したいため)、別のブランチからこのブランチに複数のチェリーピックを実行しました。その後、ブランチにすべての変更をプッシュしようとしましたが、次のエラーが発生します。 リモートブランチ ''(ローカルブランチ= 'sprints / Mycompany_sprint-1')は無効です。文献名はgitのREF-形式の規則に従う必要があります。 https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html エラーで終了し、上記を参照してください。 しかし、リンクに移動すると、最初のルールを調べているため、すべてのルールに従います(私が見た限りでは)。 階層(ディレクトリ)のグループ化のためにスラッシュ/を含めることができますが、スラッシュで区切られたコンポーネントをドットで始めることはできません。または、シーケンス.lockで終わります。春のカテゴリがすでに存在していることが問題であるかどうかを確認しますが、そうではありません。 誰かが私が間違っていることを教えてもらえますか?ここでエラーが表示されないのは残念です...
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.