Ядро річ , яку ви збираєтеся хочете тут git add -p
( -p
це синонім --patch
). Це забезпечує інтерактивний спосіб перевірити вміст, дозволяючи вирішити, чи повинен кожен загін, і навіть дозволяти вам вручну редагувати виправлення, якщо це необхідно.
Щоб використовувати його в поєднанні з вишневим набором:
git cherry-pick -n <commit> # get your patch, but don't commit (-n = --no-commit)
git reset # unstage the changes from the cherry-picked commit
git add -p # make all your choices (add the changes you do want)
git commit # make the commit!
(Дякую Тіму Хенігану за те, що він нагадав мені, що у git-cherry-pick є варіант - no-commit, і дякую Феліксу Рейб за те, що він зазначив, що потрібно скинути! Якщо ви хочете лише залишити кілька речей поза комітетом , ви можете використовувати git reset <path>...
для видалення лише цих файлів.)
Ви, звичайно, можете надати конкретні шляхи до add -p
необхідності. Якщо ви починаєте з патчем ви могли б замінити cherry-pick
з apply
.
Якщо ви дійсно хочете git cherry-pick -p <commit>
(цей варіант не існує), ви можете використовувати його
git checkout -p <commit>
Це відрізнятиме поточне зобов’язання від вказаного вами зобов’язання, а також дозволяє застосовувати описи від цього, що відрізняється окремо. Цей варіант може бути більш корисним, якщо комісія, яку ви виконуєте, має конфлікти злиття в частині комітету, який вас не цікавить. (Однак зауважте, що checkout
відрізняється від cherry-pick
: checkout
намагається повністю застосувати <commit>
вміст, cherry-pick
застосовує diff зазначений фіксатор від його батька. Це означає, що ви checkout
можете застосувати більше, ніж просто те, що може бути більше, ніж ви хочете.)