Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.1.4 → 2.51.0 no changes
-
2.0.5
2014-12-17
ОПИС
Визначити, чи є коміти в <head>..
<upstream>, еквівалентні тим, що в діапазоні <limit>..
<head>.
Тест еквівалентності базується на різниці (diff) після видалення пробілів та номерів рядків. Таким чином, git-cherry виявляє, коли коміти були "скопійовані" за допомогою git-cherry-pick[1], git-am[1] або git-rebase[1].
Виводить SHA1 кожного коміту в <limit>..
<head>, з префіксом -
для комітів, що мають еквівалент в <upstream>, та +
для комітів, що його не мають.
ПРИКЛАДИ
Робочі процеси виправлення
git-cherry часто використовується в робочих процесах на основі патчів (див. gitworkflows[7]), щоб визначити, чи було застосовано серію патчів розробником основної версії. У такому робочому процесі ви можете створити та надіслати тематичну гілку ось так:
$ git checkout -b topic origin/master # попрацюйте та створіть кілька комітів $ git format-patch origin/master $ git send-email ... 00*
Пізніше ви можете перевірити, чи ваші зміни були застосовані, сказавши (все ще за темою):
$ git fetch # оновіть своє уявлення про походження/господаря $ git cherry -v
Конкретний приклад
У ситуації, коли тема складається з трьох комітів, а розробник застосував два з них, ситуація може виглядати так:
$ git log --graph --oneline --decorate --boundary origin/master...topic * 7654321 (origin/master) upstream tip commit [... snip some other commits ...] * cccc111 cherry-pick of C * aaaa111 cherry-pick of A [... snip a lot more that has happened ...] | * cccc000 (topic) commit C | * bbbb000 commit B | * aaaa000 commit A |/ o 1234567 branch point
У таких випадках git-cherry показує стислий виклад того, що ще потрібно застосувати:
$ git cherry origin/master topic - cccc000... commit C + bbbb000... commit B - aaaa000... commit A
Тут ми бачимо, що коміти A та C (позначені -
) можна видалити з вашої гілки topic
, коли ви перебазуєте її поверх origin/master
, тоді як коміт B (позначений +
) все ще потрібно зберегти, щоб його було надіслано для застосування до origin/master
.
Використання ліміту
Необов’язковий тег <limit> корисний у випадках, коли ваша тема базується на іншій роботі, яка не є частиною основної розробки. Розвиваючи попередній приклад, це може виглядати так:
$ git log --graph --oneline --decorate --boundary origin/master...topic * 7654321 (origin/master) upstream tip commit [... snip some other commits ...] * cccc111 cherry-pick of C * aaaa111 cherry-pick of A [... snip a lot more that has happened ...] | * cccc000 (topic) commit C | * bbbb000 commit B | * aaaa000 commit A | * 0000fff (base) unpublished stuff F [... snip ...] | * 0000aaa unpublished stuff A |/ o 1234567 merge-base between upstream and topic
Вказавши base
як обмеження, ви можете уникнути перерахування комітів між base
та topic
:
$ git cherry origin/master topic base - cccc000... commit C + bbbb000... commit B - aaaa000... commit A
GIT
Частина набору git[1]