Чим відрізняється git am від git?


134

І те, git amі git applyінше можна використовувати для нанесення патчів. Я не бачу різниці. Зараз я бачу різницю: git amавтоматично здійснює виконання, тоді як git applyлише торкається файлів, але не створює фіксацію. Це єдина різниця?


11
amможна вважати абревіатурою Apply Mail...
Філіп Оуклі

Відповіді:


144

І вхід, і вихід відрізняються:

  • git applyбере патч (наприклад, вихід git diff) та застосовує його до робочого каталогу (або індексу, якщо він використовується --indexабо --cached).
  • git amприймає поштову скриньку комітетів, відформатованих як повідомлення електронної пошти (наприклад, вихід git format-patch) та застосовує їх до поточної гілки.

git amвикористовує git applyза кадром , але робить більше роботи до (читання Maildirабо mboxта аналіз електронних повідомлень) та після (створення комісій).


6
Примітка: git applyсхоже, також приймається git format-patchвихід.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

7
git applyтакож буде працювати з результатами git format-patch, але зміни будуть не встановлені, і їх потрібно вчинити (таким чином створюючи іншу точку фіксації в індексі, до якого вони застосовуються). З git amвами ви б переносили інформацію про фіксацію (разом з автором тощо) в індекс, до якого вона застосовується. git applyто для того, щоб виправити репо (погано), git amможна прийняти легітимні зміни функції та включити їх у ваше репо (бажаний підхід).
Prasoon Joshi

18

git applyпризначений для застосування прямої різниці (наприклад, від git diff), тоді git amяк для застосування патчів і послідовностей патчів з електронних листів, або формату mbox або Maildir, є "протилежним" git format-patch. git amнамагається витягнути повідомлення електронної пошти та деталі автора з повідомлень електронної пошти, тому він може робити зобов’язання.


9

Коли git amви застосуєте виправлення, тож якщо ви не використовуєте, git statusви не побачите локальних змін.

git applyдає змогу вносити зміни у вихідні файли так, як ніби ви писали код самостійно, отже, git statusі git diffвиводить зміни, внесені в патч, який ви застосували, ви можете виправити / додати більше змін та подати їх разом як один новий патч .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.