Я новичок в git и в управлении версиями, поэтому я пытаюсь выяснить, что такое патч и чем он отличается от остальных действий, которые я выполняю в git?
Когда я могу применить патч? Это происходит каждый раз, когда я фиксирую?
источник
Я новичок в git и в управлении версиями, поэтому я пытаюсь выяснить, что такое патч и чем он отличается от остальных действий, которые я выполняю в git?
Когда я могу применить патч? Это происходит каждый раз, когда я фиксирую?
В этом посте вы можете увидеть, как создать патч (набор изменений, о которых вы хотите сообщить и применить к другому репо).
(картинка из поста в блоге 2008 года " Bioruby with git: как это будет работать? ", опубликованная Jan AERTS )
Смотрите также Вклад в Rails с помощью Git в качестве другого конкретного примера.
В настоящее время пул-запрос GitHub позволяет очень просто применять патчи к репозиториям GitHub, что полезно, когда вы не являетесь непосредственным участником (т. Е. У вас нет права напрямую продвигаться к репо).
На самом деле, совсем недавно GitHub представил « Better Pull Request Emails » для улучшения уведомления о новых патчах.
Patch - это программа Unix, которая обновляет текстовые файлы в соответствии с инструкциями, содержащимися в отдельном файле, называемом файлом заплатки.
Другими словами, это может означать файл с инструкциями или программу, которая обрабатывает этот файл и применяет его к чему-либо.
Теперь, что такое файл патча? Допустим, у вас есть текстовый файл с 2 строками:
Затем вы меняете первую строку, и теперь ваш файл выглядит так:
Как бы вы описали изменение содержимого файла? Вы можете сказать, что первая строка «Это строка А.» его заменили на «Это СПАРТА», или даже последнее слово «А» в первой строке заменили другим словом «СПАРТА». И это именно то, что говорит нам diff . Допустим, у меня есть две версии этого файла, одна называется file1.txt, а другая file2.txt, затем я запускаю diff и получаю следующее:
Имея описание изменений, вы можете применить его к исходному контенту и получить модифицированный контент. И эти изменения, представленные в унифицированном формате, понятном программам, подобным патчам, называются файлами патчей. Это похоже на то, что вместо того, чтобы ловить рыбу у кого-то, кого они научат ловить рыбу, вы сможете сами выкопать эту рыбу из воды. Теперь давайте применим наш патч к file1.txt, чтобы он выглядел в точности как file2.txt:
Вы можете подумать, что проще иметь две версии этого файла. Ну, в этом простом случае это правда. Но когда у вас много файлов, и эти файлы очень большие, гораздо эффективнее иметь несколько строк изменений, а не две копии всего этого.
Если говорить о git, файл заплатки все равно означает то же самое, но использование diff + patch самостоятельно было бы кошмаром. Например, вам всегда нужно иметь две версии файла (или даже весь репозиторий), чтобы сравнить их. Звучит не так хорошо, правда? Итак, git берет на себя всю тяжелую работу за вас - он сравнивает ваш локальный файл с тем, что находится в репозитории, с которым вы работаете, и может показать его вам как «diff», или применить этот «diff» как patch aka фиксирует ваши изменения или даже позволяет вам применить какой-либо файл исправлений, который у вас уже есть. Не вдаваясь в детали, git в этом смысле абсолютно такой же, как и другие системы контроля версий, такие как SVN, или даже CVS или производительность.
Надеюсь, поможет!
источник
patch
программу. Я думал, что у Git есть своя реализация.Патч - это небольшой файл, который указывает на изменения, внесенные в хранилище. Обычно он используется, когда кто-то из вашей команды имеет доступ только для чтения, но имеет хорошее изменение кода. Затем он создает патч и отправляет его вам. Вы применяете его и помещаете в репозиторий git. Все получают выгоду от обновленной версии, и автору патча не нужен доступ для чтения / записи.
На самом деле это в основном вопрос безопасности (по крайней мере, для этого люди его используют).
источник
git diff
показывает изменения как патчи по умолчанию,git apply
позволяет применять патчи и т. Д.).Файл исправления представляет собой единый набор изменений, которые можно применить к любой ветви в любом порядке. С помощью патча вы получите различия между одним или несколькими файлами. А позже вы можете применить различия (патч), чтобы получить изменения для новых файлов. Есть много вариантов использования патча в Git. Если у вас есть незафиксированные изменения в вашем рабочем каталоге, и вам нужно, чтобы эти изменения применялись где-то еще, просто создайте исправление и примените исправление.
Если у вас есть новые файлы в вашем хранилище (без отслеживания), вы должны подготовить файл перед созданием патча (не фиксировать) и использовать следующую команду
Позже вы можете применить патч:
Если вы хотите внести некоторые изменения в репозиторий git, для которого у вас нет разрешения на запись, просто внесите изменения и создайте исправление между ними, и отправьте исправление тому, у кого есть разрешение на применение исправления, этим Ваши изменения должны быть добавлены в этот репозиторий git.
источник
git format-patch <base_commit_or_branch_name>
= оберните все коммиты с этого момента обратно в <base_commit_or_branch_name> в красивые и аккуратные файлы, содержащие diff, а также сообщения коммитов, для легкой отправки (например, по электронной почте) кому-то еще, кто хочет их пропатчить их кодовая база. Затем получатель исправляет свою систему с помощью вашего файла:cat *.patch | git am
Патч - это набор различий между одним или несколькими файлами, чтобы показать, что между ними отличается. Обычно вы генерируете патч, чтобы показать кому-то, что вы изменили. Пример того, когда вы могли бы сделать это, когда вы находите и исправляете ошибку в приложении с открытым исходным кодом, а затем публикуете это исправление на своем трекере ошибок.
источник