問題タブ [git-cherry]
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-cherryで「チェリー」とはどういう意味ですか?
git-cherry のチェリーという言葉の意味は何ですか?
果物のほかに、チェリー ピッキング式 ( git-cherry-pick を使用して git にも存在する) の単語にしか見えませんでした。これは、何かを選択的に選択することを意味します (右?)。
私には、チェリーインgit-cherry
が果物にもチェリーピックにも関係していないように見えます.
私はブラジル人なので、英語の微妙なところがはっきりしないことがあります。
git - git cherry は、過去に同一のコミットがチェリー ピックされたときに、新しいコミットをチェリー ピックとして表示します。
2 つのブランチ branch1 と branch2 があり、両方のブランチに "opt:true" という行を持つ test.txt があるとします。
両方の分岐で値を「true」から「false」に変更します。
branch1 で、値を「false」から「true」に変更してコミットします。
最新のコミットが branch2 に選択されていないことを示しています。
+ dc703edb4cf0f90fa1b5294cc5bea5c63c849229
branch1 で、値を「true」から「false」に変更してコミットします。
branch2 にはすでに同一のコミットがあるため、最新のコミットがチェリー ピックされていることを示しています (ただし、チェリー ピックではありません)。
/+ dc703edb4cf0f90fa1b5294cc5bea5c63c849229
/- 9d767893962c0dd0d957e2c038bb2ef06df2fee3
branch2 にチェリーピックされていない branch1 のコミットの真のリストを git する方法はありますか?
git - ある git ブランチをマージして別のブランチにコピーする (移動しない) 方法
整理されていないブランチでいっぱいの GIT リポジトリを再編成しようとしています。ここで、そこにいくつかの構造 (devel、production、features、...branches) を作成し、多くの小さな変更も削除/スカッシュしたいと考えています。しかし、それについて取り組んでいる人々がいるので、まだ何かを維持する必要があります。
そこで私は大きな構造を作り、古いものをまとめて (何年も前の小さなタイプミスの修正には誰も興味を持っていませんでした)、基本的に今年の初めにすべてを修正しました。
しかし、問題が発生しました - 一部のブランチがアクティブで、完全に押しつぶすことができず、(新しいスキーマがしばらくの間機能することが証明されるまで) 削除/移動できず、内部に次のような小さなマージが多数含まれています。
次のように、適切な機能ブランチの上にこれをコピーしたいと思います
(スキーマはより複雑です。これが問題の部分です)
私は次のようなことをしたいと思います
しかし、それらすべてのマージで競合が発生します
コミット(マージ)はI
これらすべての競合を解決しますが、適用されず、チェリーピッキングが停止します
最善の方法は何ですか(最初からうまく整理されていることを除く)?
編集 - 例を追加:
私は持っている
ブランチAdam
に競合があることを確認してください (3e5f111 と 897bfc3 はそれぞれ行Adam_a
とAdam_b
同じ場所に追加されます)。これは、開発者の Adam が c04efb0 で何らかの形で解決しました (そこにまったく異なるものを書くなどAdam_* # it does not matter
) 。
そして、新しいブランチを追加したいdevelop
-それは簡単にスカッシュですmaster
そして今、私はからのコンテンツでブランチfeature_1
(over )を追加したい(ただし、すでに解決されているすべての競合を手動で解決する必要はありません。マージ(4444567)はブランチとまったく同じにする必要があります)develop
Adam
Adam
これを取得するには:
(そして後で私は削除Adam
しmaster
ます)
git - GIT は、git チェリーとフォーマットを使用してマスターにないブランチからのすべてのコミットを表示します
git cherry
特定のブランチに送信されたが、マスター ブランチから欠落しているすべてのコミットを表示し、きれいな形式を使用してこれをログに記録するために使用したいと考えています。
私はこれを試しました:
これが行うことは次のとおりです。
git cherry master branch_name
- コードが branch_name にあり master にはないコミットのすべてのハッシュを端末の行ごとにリストし、ハッシュの前に + または - 記号を付けて逆にリストします。grep "^+"
- + で始まるものだけを取得します (実際には branch_name の master にないもの)sed 's/^+ //'
- 行から を削除して+
、ハッシュのみを取得できるようにします。xargs -I {} git --no-pager log --pretty=format:'%h,%an,%d,%ae,%ad,%s' --date=short -1 {}
- 各ハッシュをパラメーターとして git log に渡し、各ハッシュのフォーマットされたログを表示します。ここで--no-pager
は、git ログ ウィンドウを終了し、-1
1 つのコミットのみを表示することを意味します。
これに関する問題は、同じ行で git cherry から返された各ハッシュの各結果を連結し始めることです。行ごとに実行しないので、コピーして貼り付けたり、.csv ファイルに保存したりできます... > tmp.csv
。
別に使用できるものが他にあるかxargs
どうか、またはそれが実際に git log の問題であり、これが機能しないかどうかはわかりません。
私は何が欠けていますか?そして、私は何を間違っていますか?
初心者で申し訳ありません。