Как исправления работают в Git? - PullRequest
26 голосов
/ 17 января 2010

Я новичок в Git, но знаком с SVN. В качестве теста я сделал хранилище в локальном каталоге с git init. Затем я клонировал пустой репозиторий (через SSH, используя 127.0.0.1, что я хотел проверить) в другой локальный каталог. Я добавил несколько файлов в репозиторий 2, я сделал git add * и наконец git commit -a -m "First source code".

Теперь я хочу создать патч с помощью git format-patch и применить его к хранилищу 1. Как мне это сделать? Я знаю, что есть руководство, но эти вещи ужасно сложны и заставляют меня делать определенные вещи с моим монитором.

Ответы [ 5 ]

21 голосов
/ 17 января 2010

Создайте свой патч с помощью:

$ git format-patch master --stdout > patch.diff

, тогда patch.diff будет содержать diff, который вы затем можете отправить кому-то другому для применения, используя:

$ git am < patch.diff

Иногда, когдаруководства немного плотные, имеет смысл поискать учебник:

http://luhman.org/blog/2009/09/22/git-patch-tutorial

14 голосов
/ 17 января 2010

Самый простой способ создания патчей из последнего коммита (или нескольких последних коммитов) - использовать format-patch с отрицательным числом, указывающим количество коммитов для создания патчей:

git format-patch -1

Вы получите файл патча, названный в честь описания коммита. Используйте am, чтобы вставить его в другой репозиторий:

git am << name_of_patch_file
2 голосов
/ 13 февраля 2012

Правильный и простой способ сделать это, если вы используете Git, - через пульты:

cd \path\to\repo1
git remote add otherrepo \path\to\repo2
git fetch otherrepo

git log otherrepo/master  ## Find the commit you want to steal in the list

git cherry-pick SOME_SHA1  ## Snag just one commit
git merge otherrepo/master  ## Merge all of the new commits from otherrepo/master

Это приведет к переносу коммитов из одного репо в другое, включая их авторов и сообщения о коммитах, и поможет вам разобраться в конфликтах слияния (особенно если вы перемещаетесь> 1 коммит)

2 голосов
/ 13 февраля 2012

Использование патча GitHub

  1. Добавьте .patch к URL-адресу фиксации, чтобы получить файл исправления, пример

    github.com/git/git/commit/b6b3b6a.patch

  2. Исправьте исходный файл следующим образом:

    git am /tmp/b6b3b6a.patch
    

Использование GitHub diff

  1. Добавьте .diff к URL-адресу фиксации, чтобы получить файл патча, пример

    github.com/git/git/commit/b6b3b6a.diff

  2. Исправьте исходный файл следующим образом:

    git apply -p0 /tmp/b6b3b6a.diff
    

& раздел 5.3 Распределенный Git - ведение проекта

0 голосов
/ 18 января 2010

Вам нужно перейти в «хранилище 2», из которого вы хотите создать патч, и запустить git-format-patch для создания патча: мастер форматирования патчей git --stdout> name_of_patch_file

Затем вы идете в «хранилище 1», к которому вы хотите применить патч: git apply name_of_patch_file

Иногда полезно просто проверить, не вызовет ли патч проблемы: git apply --check name_of_patch_file

...