Як ви берете файл git diff та застосуєте його до локальної гілки, яка є копією того ж сховища?


491

У мене є .diff-файл, створений співробітником, і я хотів би застосувати зміни, перелічені в цьому файлі diff, до моєї локальної гілки того самого сховища. Я не маю доступу до ПК або гілки цього працівника, який використовувався для створення цього файлу різниці.

Очевидно, що я міг переходити по черзі та переглядати все, але я краще не піддавав систему людським помилкам. Який найпростіший спосіб це зробити?

Відповіді:


746

Скопіюйте файл diff у корінь вашого сховища та виконайте:

git apply yourcoworkers.diff

Більше інформації про applyкоманду розміщено на її довідковій сторінці .

До речі: Кращим способом обміну цілими файлами за файлом є поєднання команд git format-patchна відправника та потім git amна одержувач, оскільки він також передає інформацію про авторство та повідомлення про фіксацію.

Якщо патч-програму не вдалося, і якщо комітети, від яких було створено відмінності, фактично знаходяться у вашій репо-репортажі, ви можете скористатися -3параметром, applyякий намагається об'єднати зміни.

Він також працює з Unix трубою наступним чином:

git diff d892531 815a3b5 | git apply

3
Дякуємо за відповідь, але це призвело до помилки: виправлення не вдалося: filename.php: 202 помилка: filename.php: патч не застосовується. Хороша новина полягає в тому, що це не перше ім’я файлу у файлі, тому воно, принаймні, могло б обробити частину файлу. Будь-які думки?
Mike_K

4
Ви також маєте зміни у цьому файлі, які зупиняють роботу виправлення. Щоб вирішити це, ви можете здійснити зміни, створити нову гілку, скинути її на комісію, де ви та ваш колега розходилися, застосуйте патч, введіть його, а потім об'єднайте дві гілки.
Філіп

3
@orlybg Якщо ви цього ще не зробили, git reset --hardповерніть робоче дерево до останнього. Коли ви вже зробили це, додайте до редакції, до якого потрібно повернутися.
Філіпп

5
@orlybg Вибачте, але тоді вас накрутили. Git створює лише контрольну точку, до якої можна повернутися, коли ви взяли на себе зобов'язання. Ось чому багато посібників з git рекомендують здійснювати рано і часто .
Філіп

4
Принаймні @orlybg, запустіть git stashперед тим, як виконати якусь дію, яку ви, можливо, захочете змінити після. Тоді в будь-якому випадку ви можете повернути свою скриньку та здійснити зобов’язання в якийсь пізній момент.
maurice
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.