チェリーピッキングは、任意のコミットからコピーされた一連の差分をリポジトリの現在の状態に適用しています。これらの差分の一部がリポジトリの現在の状態と矛盾している場合はどうなりますか?たとえば、diffのうちの1人がファイルfを変更するが、このファイルが現在のリポジトリに存在しなくなったらどうなるでしょうか?リポジトリの現在の状態と一致しないコミットからのチェリーピック
答えて
このような状況では、競合が発生します。 Gitはチェリーピックを一時停止し、あなたが紛争を解決するか、チェリーピックを中止するのを待ちます。概念的には、これはa conflict that might arise due to a git merge
またはgit rebase
と同じです。
の差分の一つは、ファイルfを変更しませんが、このファイルは、もはや現在のリポジトリに存在する場合Gitはあなたはチェリーピッキングしているファイルを保つかの選択を提示だろうか
ファイルを削除したままにしたり、手動でファイルを更新したりすることができます。
これはどのように動作するのかはとても分かりやすいです。
ファイルシステム(既存のGitリポジトリの外)のどこかに新しいディレクトリを作成してください。
mkdir cherry cd cherry
空のGitリポジトリ
git init
ファイルを作成して初期化し、それ
echo "Some changes" > README.md
にいくつかのコンテンツを追加し、インデックスにファイルを追加し、変更をコミット
git add README.md git commit -m "Added some content to the readme"
新しいブランチを作成し、チェックアウト
git checkout -b feature/readme-update
変更
README.md
ファイルを再度echo "New content of README" > README.md
ステージと
git add README.md git commit -m "Added more to readme"
変更をコミットコミット最後のハッシュを保存。
バックmaster
から移動し、ファイルを削除し、変更をコミット
git checkout master git rm README.md git commit -m "Removed the readme"
あなたはあなたが
README.md
ファイルの内容にgit cherry-pick <commit-hash>
を変更
feature/readme-update
からコミットチェリー選びますあなたの手に矛盾があります[email protected] MINGW64 /c/repos/cherry (master) $ git cherry-pick <commit-hash> error: could not apply 4a99ca7... Added more to readme hint: after resolving the conflicts, mark the corrected paths hint: with 'git add <paths>' or 'git rm <paths>' hint: and commit the result with 'git commit' [email protected] MINGW64 /c/repos/cherry (master|CHERRY-PICKING)
git status
はまた、あなたがファイルを削除(master
から変更を受け入れる)か、それを追加することができ、この場合、あなたは同じこと$ git status On branch master You are currently cherry-picking commit 4a99ca7. (fix conflicts and run "git cherry-pick --continue") (use "git cherry-pick --abort" to cancel the cherry-pick operation) Unmerged paths: (use "git add/rm <file>..." as appropriate to mark resolution) deleted by us: README.md
を教えてくれます(あなたはチェリーピッキングしている変更を受け入れます)。もう1つの選択肢は、あなたが賢明とみなす方法でファイルを手動で調整することです。
にかかわらず、あなたはチェリーピックを続行し、もはや混乱しているしない場合
git cherry-pick --continue
を呼び出すことによって、受け入れるファイルに適用、それらをステージとチェリーピックを続行変わるものの、呼び出しによって中止します。
git cherry-pick --abort
- 1. svnは 'バージョン'として現在の状態をコミットします
- 2. Gitのコミットはリポジトリの状態を表していますか?
- 3. $ state.goは現在の状態から現在の状態に関連するイベントを起動しますか?
- 4. ハスケルソフトリアルタイムの現在の状態
- 5. GitLabのリポジトリにコミットしてYouTrackの問題の状態を更新しない
- 6. Turbo C++マウスが現在のクリック状態にならない
- 7. シリアライズとその現在の状態
- 8. 古いコミットをgithubにプッシュした後に現在の状態に移動
- 9. ESXiホストは現在の状態で電源が入らない
- 10. ReactjSとfirebaseデータの状態が一致しないのはなぜですか?
- 11. 画像が重なっているホバーと現在の状態?
- 12. に一貫性がないのgitリポジトリの原点状態
- 13. は私の現在の状態の状態
- 14. FacebookのOpenIDサポートの現在の状態
- 15. Internet Explorerの現在の状態テスト
- 16. バイコードの現在の状態は?
- 17. MS Surfaceの現在の状態
- 18. stateparmsは、stateParamsを別の状態に渡すと、現在の状態
- 19. Java SQL例外無効なカーソル状態 - 現在の行なし
- 20. P4V現在の状態を保存
- 21. イオンアプリで現在の状態を取得
- 22. isStickyボタン現在の状態Android
- 23. 現在の状態名を返すメソッド
- 24. チェリーピックされたコミット?
- 25. IronPythonと.Netを使用したマウスの現在の状態
- 26. 未コミットはすべて現在のブランチにコミットしますが、すべての変更は現在の状態にしておきます
- 27. サブスクライブなしで現在のngrx状態を取得
- 28. は、「現在、どのブランチにない」コミット
- 29. 一般的な祖先がいないときにgitリポジトリから別のgitリポジトリにコミットする方法
- 30. git:現在のブランチに現在のブランチに影響を与えずに現在のコードの状態をコミットします。