を選択:この警告はについては何のgitのsvn桜私は<code>git svn fetch</code>を実行すると、それは時々警告以下印刷し、無視警告
W:svn cherry-pick ignored (/path/in/svn:<svn revision number list>) missing 55 commit(s) (eg 9129b28e5397c41f0a527818edd344bf264359af)
を?
を選択:この警告はについては何のgitのsvn桜私は<code>git svn fetch</code>を実行すると、それは時々警告以下印刷し、無視警告
W:svn cherry-pick ignored (/path/in/svn:<svn revision number list>) missing 55 commit(s) (eg 9129b28e5397c41f0a527818edd344bf264359af)
を?
誰かがSubversionで「cherry-pick merge」を実行すると、Subversionは関連するファイルとフォルダのメタデータにマージされたコミットを記録します。
git svn fetch
を実行すると、Gitはそのメタデータを見て、それをGitリモートブランチ間のマージとして解釈しようとします。このメッセージは、Gitがそれを試みたが失敗したため、マージではなく通常のコミットとして記録することを意味しています。
GitがSubversionコミットを取り上げる方法でバグが表示されない限り、心配する必要はありません。あなたが戻ってブランチA
に枝B
を再統合した場合
A B
* r6
| * r5
* | r4
| * r3
|/
* r2
* r1
:
が一致するGitのSVNリポジトリで、次の2本の枝A
と
B
でSubversionリポジトリを持って言う:より詳細には
ブランチの作業コピーをsvn merge -r 3:HEAD ^/branches/B
またはちょうどsvn merge --reintegrate ^/branches/B
のようなコマンドを使用してください。 Subversionはこのマージが行われたことを記録するsvn:mergeinfo
タグのメタデータを記録し、次のgit svn fetch
はこのメタデータを表示します。そのブランチB
がブランチA
に再統合され、マージとして履歴に対応するコミットも記録されます。
あなたは1つだけ(たとえばR3はあなたが必要とする機能を追加しました)ブランチA
に枝B
からコミットたかったのですが、あなたはまだ全体のブランチを再統合したくない場合は、代わりにsvn merge -c 3 ^/branches/B
のようなSubversionのコマンドを使用したいです。ここでも、Subversionはマージメタデータを記録し、Gitはこれを見て、前の例のようにブランチマージを記録できるかどうか試してみるでしょう。この場合、ブランチA
にブランチB
のr5のようなものは含まれていません。それがこの警告を引き起こすのです。
「あなたはブランチからr3を引っ張ったと言っていいでしょうか? –
例を少し書き直しました。それは明確ですか? –
ありがとう、今それは明確です –
こんにちは、私はチェリーピッキングが歴史を破壊すると思います!おそらく、彼が55コミットの「歴史」を紛失していると言っているのかもしれません。 –
@ SG86、「破壊する」とはどういう意味ですか? –
チェリーピッキングは歴史を破壊しません。チェリーピッキングはそれを複製します。 Gitは実際に歴史を正常に破壊しません。 Rebaseはそれを孤立させますが、リポジトリにはまだガベージコレクションが行われるまで存在します。それまではgit-reflogで回復できます。 – bambams