User Tools

Site Tools


geda:scm.ru

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
geda:scm.ru [2012/11/29 04:56]
vzh Fixed a header
geda:scm.ru [2014/04/24 16:02] (current)
vzh
Line 1: Line 1:
-====== gEDA/gaf и git ======+//Эта страница доступна также на следующих языках://​ [[scm|English]]
  
 +====== gEDA/gaf и git ======
  
 В gEDA для управления исходными текстами программ используется **git**. В gEDA для управления исходными текстами программ используется **git**.
-**git** --- это распределённая система управления версиями,​ которая позволяет +**git** --- это распределённая система управления версиями,​ которая 
-каждому пользователю иметь свою собственную полную копию истории изменений проекта.+позволяет каждому пользователю иметь свою собственную полную копию истории 
 +изменений проекта. 
   * [[http://​git.or.cz/​|Официальная веб-страница git]]   * [[http://​git.or.cz/​|Официальная веб-страница git]]
   * [[http://​www.kernel.org/​pub/​software/​scm/​git/​docs/​|Интерактивная документация по git]]   * [[http://​www.kernel.org/​pub/​software/​scm/​git/​docs/​|Интерактивная документация по git]]
   * [[wp>​Git_(software)|Страница википедии по git]]   * [[wp>​Git_(software)|Страница википедии по git]]
- 
  
 ===== Установка git и других вспомогательных программ ===== ===== Установка git и других вспомогательных программ =====
-Конечно,​ в первую очередь для использования репозитория необходимы основные инструменты + 
-**git**, и всегда полезна документация. Но часто для работы с **git** удобно +Конечно,​ в первую очередь для использования репозитория необходимы основные 
-пользоваться и другими средствами:​+инструменты **git**, и всегда полезна документация. Но часто для работы с 
 +**git** удобно пользоваться и другими средствами:​ 
   * [[http://​www.kernel.org/​pub/​software/​scm/​git/​docs/​gitk.html|gitk]],​ программа просмотра истории репозитория   * [[http://​www.kernel.org/​pub/​software/​scm/​git/​docs/​gitk.html|gitk]],​ программа просмотра истории репозитория
   * [[http://​www.procode.org/​stgit/​|Stacked Git]], для работы с наборами заплат   * [[http://​www.procode.org/​stgit/​|Stacked Git]], для работы с наборами заплат
 +
  
 Для дистрибутивов на основе Debian: Для дистрибутивов на основе Debian:
 +
   apt-get install git-core git-doc gitk stgit   apt-get install git-core git-doc gitk stgit
  
 Ещё может пригодиться следующее:​ Ещё может пригодиться следующее:​
 +
   apt-get install git-email git-completion   apt-get install git-email git-completion
 +
  
 Fedora Linux: Fedora Linux:
 +
   yum install git stgit   yum install git stgit
 +
 +
  
  
 ===== Изучение git ===== ===== Изучение git =====
 +
 Главная страница документации **git**: Главная страница документации **git**:
 +
   * [[http://​www.kernel.org/​pub/​software/​scm/​git/​docs/​|Официальная документация git]]   * [[http://​www.kernel.org/​pub/​software/​scm/​git/​docs/​|Официальная документация git]]
  
 Руководство пользователя **git**: Руководство пользователя **git**:
 +
   * [[http://​www.kernel.org/​pub/​software/​scm/​git/​docs/​user-manual.html|Руководство пользователя git]]   * [[http://​www.kernel.org/​pub/​software/​scm/​git/​docs/​user-manual.html|Руководство пользователя git]]
  
 Текущее руководство можно найти по ссылке:​ Текущее руководство можно найти по ссылке:​
-  ​* [[http://​www.kernel.org/​pub/​software/​scm/​git/​docs/​core-tutorial.html|Введение в основы git]]+ 
 +  ​* [[http://​www.kernel.org/​pub/​software/​scm/​git/​docs/​gitcore-tutorial.html|Введение в основы git]]
  
 Другие замечательные руководства/​веб-страницы:​ Другие замечательные руководства/​веб-страницы:​
  
-  * [[http://​wiki.sourcemage.org/​Git_Guide|Руководство по git]]\\+  * [[http://​wiki.sourcemage.org/​Git_Guide|Руководство по Git]]
   * [[http://​git.or.cz/​course/​index.html|Аварийные курсы по git]]   * [[http://​git.or.cz/​course/​index.html|Аварийные курсы по git]]
  
 Имейте в виду, что некоторые из этих руководств немного устарели и могут не Имейте в виду, что некоторые из этих руководств немного устарели и могут не
 совсем полно отражать текущий синтаксис **git**. совсем полно отражать текущий синтаксис **git**.
 +
 +
 +
 +
 +
 +
  
  
 ===== Анонимный доступ к репозиторию ===== ===== Анонимный доступ к репозиторию =====
-Клонирование (создание точной локальной копии) репозитория + 
-**geda-gaf.git** (или любого другого репозитория,​ поддерживаемого на +Клонирование (создание точной локальной копии) репозитория **geda-gaf.git** 
-[[http://​git.geda-project.org|git.geda-project.org]]) с использованием анонимного доступа +(или любого другого репозитория,​ поддерживаемого на 
-**git** производится так:+[[http://​git.geda-project.org|git.geda-project.org]]) с использованием 
 +анонимного доступа **git** производится так: 
   git clone git://​git.geda-project.org/​geda-gaf.git   git clone git://​git.geda-project.org/​geda-gaf.git
 +
 или или
 +
   git clone git://​git.geda-project.org/​pcb.git   git clone git://​git.geda-project.org/​pcb.git
  
-Для клонирования других репозиториев,​ поддерживаемых на ''​git.geda-project.org'',​ достаточно поправить +Для клонирования других репозиториев,​ поддерживаемых на 
-последнюю часть вышеуказанной ссылки.+''​git.geda-project.org'',​ достаточно поправить последнюю часть вышеуказанной 
 +ссылки.
  
 Для репозиториев различных проектов существует Для репозиториев различных проектов существует
-[[http://​hjemli.net/​git/​cgit/​about/​|cgit]]-интерфейс. Открыть его можно, просто +[[http://​hjemli.net/​git/​cgit/​about/​|cgit]]-интерфейс. Открыть его можно, 
-набрав в строке адреса браузера [[http://​git.geda-project.org/​]] . +просто набрав в строке адреса браузера [[http://​git.geda-project.org/​]].
- +
 ===== Доступ к репозиторию с правами на запись ===== ===== Доступ к репозиторию с правами на запись =====
-Для доступа в **git** с правами разработчика вам нужно связаться с //DJ Delorie//, + 
-чтобы он установил ваш открытый ключ SSH на сервере,​ после этого+Для доступа в **git** с правами разработчика вам нужно связаться с //DJ 
 +Delorie//, чтобы он установил ваш открытый ключ SSH на сервере,​ после этого
 для отправки своих изменений можно использовать следующие адреса:​ для отправки своих изменений можно использовать следующие адреса:​
 +
   ssh://​git@git.geda-project.org/​geda-gaf.git   ssh://​git@git.geda-project.org/​geda-gaf.git
 или или
   ssh://​git@git.geda-project.org/​pcb.git   ssh://​git@git.geda-project.org/​pcb.git
  
-Вам также будет нужно отредактировать у себя +Вам также будет нужно отредактировать у себя файл //''​~/​.ssh/​config''//​ 
-файл //''​~/​.ssh/​config''//​ (создать,​ если он ещё не существует) и вставить +(создать,​ если он ещё не существует) и вставить туда следующий текст: 
-туда следующий текст:+
   Host git.geda-project.org   Host git.geda-project.org
   Port 65   Port 65
Line 81: Line 107:
  
 Если для доступа к **git** вы отдали администратору ключ, специально Если для доступа к **git** вы отдали администратору ключ, специально
-созданный для gEDA, вам может быть также нужно добавить к своим +созданный для gEDA, вам может быть также нужно добавить к своим настройкам 
-настройкам ещё одну строку,​ где указать этот дополнительный ключ:+ещё одну строку,​ где указать этот дополнительный ключ:
  
   Host git.geda-project.org   Host git.geda-project.org
Line 89: Line 115:
  
 Учтите,​ что файл, на который вы ссылаетесь здесь, это ваш закрытый ключ Учтите,​ что файл, на который вы ссылаетесь здесь, это ваш закрытый ключ
-("​private key"), а файл, который нужно послать на сервер,​ +(«private key»), а файл, который нужно послать на сервер,​ это 
-это соответствующий ему открытый ключ ("​public key").+соответствующий ему открытый ключ («public key»).
  
  
 ===== Создание и внесение изменений ===== ===== Создание и внесение изменений =====
 +
 +
 ==== Настройка информации о пользователе ==== ==== Настройка информации о пользователе ====
-Сначала вам нужно обеспечить,​ чтобы в файле настроек **git** у вас + 
-были заданы ваше имя и ваш адрес электронной почты.+Сначала вам нужно обеспечить,​ чтобы в файле настроек **git** у вас были 
 +заданы ваше имя и ваш адрес электронной почты. 
   $ git config --global user.name "​Здесь должно быть ваше имя"​   $ git config --global user.name "​Здесь должно быть ваше имя"​
   $ git config --global user.email вы@ваш_домен.example.com   $ git config --global user.email вы@ваш_домен.example.com
 +
  
  
 ==== Внесение заплат других участников проекта ==== ==== Внесение заплат других участников проекта ====
-При наложении чужой заплаты (например,​ из записи о заплате в + 
-''​launchpad''​),​ следует иметь в виду некоторые моменты. Для +При наложении чужой заплаты (например,​ из записи о заплате в ''​launchpad''​),​ 
-вносимых изменений **git** сохраняет по два имени и по два адреса +следует иметь в виду некоторые моменты. Для вносимых изменений **git** 
-электронной почты: ​"автора" ​заплаты ("​author"​) и "вносящего" ​заплату +сохраняет по два имени и по два адреса электронной почты: ​«автора» заплаты 
-("​committer"​), и при внесении изменений эти данные должны быть +(«author») и «вносящего» заплату («committer»), и при внесении изменений эти 
-правильными.+данные должны быть правильными.
  
 Прежде всего, убедитесь,​ что: Прежде всего, убедитесь,​ что:
Line 118: Line 149:
  
 Заплата накладывается обычным способом (как этом в примере):​ Заплата накладывается обычным способом (как этом в примере):​
 +
   $ patch -p1 < example_changes.patch   $ patch -p1 < example_changes.patch
  
 Можно также использовать команду **''​git apply''​**:​ Можно также использовать команду **''​git apply''​**:​
 +
   $ git apply example_changes.patch   $ git apply example_changes.patch
  
 Если перед внесением в репозиторий заплату нужно чуть подкорректировать Если перед внесением в репозиторий заплату нужно чуть подкорректировать
-(например,​ поправить пробелы),​ проинформируйте об этом автора. Может +(например,​ поправить пробелы),​ проинформируйте об этом автора. Может быть на 
-быть на основе этой заплаты он делает +основе этой заплаты он делает что-то другое,​ и тогда он должен знать, какие 
-что-то другое,​ и тогда он должен знать, какие изменения появились в +изменения появились в наложенной версии.
-наложенной версии.+
  
 Примечание:​ //​очень легко допустить случайную ошибку,​ если ваш редактор Примечание:​ //​очень легко допустить случайную ошибку,​ если ваш редактор
Line 133: Line 165:
  
 Прежде чем вносить изменения,​ **git** нужно проинформировать о всех Прежде чем вносить изменения,​ **git** нужно проинформировать о всех
-изменённых,​ добавленных или, наоборот,​ удалённых файлах. Чтобы +изменённых,​ добавленных или, наоборот,​ удалённых файлах. Чтобы посмотреть,​ 
-посмотреть,​ какие файлы изменены,​ можно запустить:​+какие файлы изменены,​ можно запустить:​ 
   $ git status   $ git status
 +
 Для скорости,​ командой Для скорости,​ командой
 +
   $ git add -u   $ git add -u
 +
 можно обновить все файлы, отслеживаемые **git**, включая удалённые. можно обновить все файлы, отслеживаемые **git**, включая удалённые.
  
-Добавление новых файлов,​ вводимых в репозиторий с этой заплатой,​ производится командой+Добавление новых файлов,​ вводимых в репозиторий с этой заплатой,​ 
 +производится командой 
   $ git add new_file.c   $ git add new_file.c
  
Line 146: Line 184:
 метасимволов. метасимволов.
  
-При внесении заплаты обязательно следует указать имя и адрес электронной почты автора:​+При внесении заплаты обязательно следует указать имя и адрес электронной 
 +почты автора:​ 
   $ git commit --author "​Здесь должно быть имя автора <​author@example.com>"​   $ git commit --author "​Здесь должно быть имя автора <​author@example.com>"​
  
-Как вариант,​ если заранее настроить переменные окружения +Как вариант,​ если заранее настроить переменные окружения ''​GIT_AUTHOR_NAME''​ 
-''​GIT_AUTHOR_NAME''​ и ''​GIT_AUTHOR_EMAIL'',​ команду **''​git commit''​** +и ''​GIT_AUTHOR_EMAIL'',​ команду **''​git commit''​** можно запускать как 
-можно запускать как обычно.+обычно.
  
  
 ==== Написание хороших сообщений о вносимых изменениях ==== ==== Написание хороших сообщений о вносимых изменениях ====
 +
 +
 Формат сообщения о вносимых изменениях ["​commit message"​] следующий:​ Формат сообщения о вносимых изменениях ["​commit message"​] следующий:​
-**строго** однострочное изложение сути заплаты,​ за которым следует +**строго** однострочное изложение сути заплаты,​ за которым следует пустая 
-пустая строка,​ а затем длинное описание. Если можно уместить полное +строка,​ а затем длинное описание. Если можно уместить полное описание 
-описание заплаты в одной строке,​ --- прекрасно,​ --- тогда и не стоит +заплаты в одной строке,​ --- прекрасно,​ --- тогда и не стоит забивать голову 
-забивать голову насчёт длинного описания.+насчёт длинного описания.
  
-Однострочные описания используются для создания темы электронного письма +Однострочные описания используются для создания темы электронного письма и 
-и для отображения в журналах **gitk** и **gitweb**. Очень удобно,​ когда +для отображения в журналах **gitk** и **gitweb**. Очень удобно,​ когда они 
-они написаны хорошо,​ потому что это значит,​ что пользователь этих +написаны хорошо,​ потому что это значит,​ что пользователь этих программ 
-программ сможет быстро находить интересные изменения.+сможет быстро находить интересные изменения.
  
-**Не добавляйте** в сообщения о вносимых изменениях перечни изменённых файлов. +**Не добавляйте** в сообщения о вносимых изменениях перечни изменённых файлов. ​ Эту информацию очень просто извлечь с помощью инструментария **git**.
-Эту информацию очень просто извлечь с помощью инструментария **git**.+
  
 Пример:​ Пример:​
 +
 <​code>​ <​code>​
 Added new GedaList class derived from GObject Added new GedaList class derived from GObject
  
 This abstracts a GList with API for write access. Its main use is in list This abstracts a GList with API for write access. Its main use is in list
-change notification,​ as it emits a "​changed"​ g_signal when modified. +change notification,​ as it emits a "​changed"​ g_signal when modified. ​ Read 
-Read only access to the underlying GList is provided by an accessor, +only access to the underlying GList is provided by an accessor, ​currenly 
-currenly ​implemented as a macro. +implemented as a macro. ​ </​code>​
-</​code>​+
  
 +==== Операция push - разрушительна ====
  
-==== Операция push - разрушительна ​ ==== +**Предупреждение:​ добавление изменений с помощью //push// в удалённый репозиторий разрушительно** 
-**Предупреждение:​ добавление изменений с помощью //push// в удалённый репозиторий + 
-разрушительно**+В отличие от CVS, командой **''​git-push''​** изменения не просто добавляются 
 +в основной репозиторий,​ но «продвигается» локальная версия. Всегда нужно 
 +дважды (или даже трижды) проверить,​ что «продвигаемые» вами изменения в 
 +самом деле предназначены для основного репозитория.
  
-В отличие от CVS, командой **''​git-push''​** изменения не просто добавляются в 
-основной репозиторий,​ но "​продвигается"​ локальная версия. Всегда нужно 
-дважды (или даже трижды) проверить,​ что "​продвигаемые"​ вами изменения в самом деле 
-предназначены для основного репозитория. 
  
  
 ===== Как мне ... ? ===== ===== Как мне ... ? =====
 +
 Более подробную информацию можно найти в Более подробную информацию можно найти в
 [[http://​wiki.sourcemage.org/​Git_Guide|Руководстве по Git]]. [[http://​wiki.sourcemage.org/​Git_Guide|Руководстве по Git]].
- 
  
 ==== ... получить копию репозитория git проекта gEDA/gaf? ==== ==== ... получить копию репозитория git проекта gEDA/gaf? ====
 +
 При анонимном доступе только на чтение:​ При анонимном доступе только на чтение:​
 +
   $ git clone git://​git.geda-project.org/​geda-gaf   $ git clone git://​git.geda-project.org/​geda-gaf
  
 Для разработчиков с доступом на чтение и запись:​ Для разработчиков с доступом на чтение и запись:​
 +
   $ git clone ssh://​git@git.geda-project.org/​geda-gaf   $ git clone ssh://​git@git.geda-project.org/​geda-gaf
- 
  
 ==== ... поддерживать соответствие своей локальной копии текущей версии?​ ==== ==== ... поддерживать соответствие своей локальной копии текущей версии?​ ====
 +
 Те, кто не собирается отправлять свои изменения в центральный репозиторий Те, кто не собирается отправлять свои изменения в центральный репозиторий
 **git**, могут запустить:​ **git**, могут запустить:​
 +
   $ git pull   $ git pull
  
-Однако тем из вас, кто собирается ​"продвигать" ​свои изменения в центральный+Однако тем из вас, кто собирается ​«продвигать» свои изменения в центральный
 репозиторий **git**, использование **''​git pull''​** испортит историю репозиторий **git**, использование **''​git pull''​** испортит историю
-сообщениями об объединении веток ("​Merge ​branch '​master'​"). Чтобы избежать этого, +сообщениями об объединении веток («Merge ​branch '​master'​»). Чтобы избежать 
-нужно запустить:​+этого, нужно запустить:​ 
   $ git fetch   $ git fetch
   $ git rebase origin   $ git rebase origin
- 
  
 ==== ... внести свои изменения в локальный репозиторий git? ==== ==== ... внести свои изменения в локальный репозиторий git? ====
 +
   $ git commit -a   $ git commit -a
  
-Эта команда найдёт все изменённые файлы, о которых знает **git** (добавленные +Эта команда найдёт все изменённые файлы, о которых знает **git** 
-с помощью **''​git-add''​**) и запросит у вас сообщение о вносимых изменениях. +(добавленные с помощью **''​git-add''​**) и запросит у вас сообщение о 
-Непременно следуйте указанному выше соглашению по написанию таких сообщений,​ +вносимых изменениях. ​ Непременно следуйте указанному выше соглашению по 
-если планируете отправлять свои изменения в центральный репозиторий.+написанию таких сообщений,​ если планируете отправлять свои изменения в 
 +центральный репозиторий.
  
 Если вы хотите внести файлы из текущего каталога,​ или хотите внести только Если вы хотите внести файлы из текущего каталога,​ или хотите внести только
 явно определённые файлы, не указывайте флаг ''​-a''​ и (или) укажите имена явно определённые файлы, не указывайте флаг ''​-a''​ и (или) укажите имена
 выбранных файлов в командной строке,​ например:​ выбранных файлов в командной строке,​ например:​
 +
   $ git commit filename1 filename2   $ git commit filename1 filename2
 +
  
  
 ==== ... отменить все локальные изменения,​ ещё не внесённые в репозиторий?​ ==== ==== ... отменить все локальные изменения,​ ещё не внесённые в репозиторий?​ ====
 +
   $ git checkout -f   $ git checkout -f
  
Line 236: Line 286:
 **git**-репозитории,​ будут отвергнуты. **git**-репозитории,​ будут отвергнуты.
  
-Если нужно отменить изменения только в одном файле, достаточно +Если нужно отменить изменения только в одном файле, достаточно запустить:​
-запустить:​+
  
   $ git checkout путь/​к/​нужному/​файлу   $ git checkout путь/​к/​нужному/​файлу
  
-Если нужно отменить все изменения в текущем каталоге и рекурсивно во +Если нужно отменить все изменения в текущем каталоге и рекурсивно во всех 
-всех его подкаталогах,​ достаточно запустить:​+его подкаталогах,​ достаточно запустить:​
  
   $ git checkout .   $ git checkout .
Line 248: Line 297:
  
 ==== ... исправить/​отредактировать изменения,​ внесённые последний раз? ==== ==== ... исправить/​отредактировать изменения,​ внесённые последний раз? ====
 +
   $ ... изменение каких-то файлов ...   $ ... изменение каких-то файлов ...
   $ git commit --amend filename1..filenameN   $ git commit --amend filename1..filenameN
  
-Этой командой все новые изменения объединяются с внесёнными в последний +Этой командой все новые изменения объединяются с внесёнными в последний раз 
-раз и заново вносятся в репозиторий со старым сообщением. +и заново вносятся в репозиторий со старым сообщением.
  
 ==== ... отслеживать ветку? ==== ==== ... отслеживать ветку? ====
 +
   $ git checkout --track -b <​локальная_ветка>​ origin/<​удалённая_ветка>​   $ git checkout --track -b <​локальная_ветка>​ origin/<​удалённая_ветка>​
  
 Этой командой создаётся ветка //<​локальная_ветка>//,​ в которой отслеживается Этой командой создаётся ветка //<​локальная_ветка>//,​ в которой отслеживается
 удалённая ветка //<​удалённая_ветка>//​. удалённая ветка //<​удалённая_ветка>//​.
- 
  
 ==== ... создать ветку (начиная с определённого тега)? ==== ==== ... создать ветку (начиная с определённого тега)? ====
-Нужно запустить следующие команды (для примера используется ветка //​stable-1.4//​):​+ 
 +Нужно запустить следующие команды (для примера используется ветка 
 +//​stable-1.4//​):​ 
    $ git branch stable-1.4 1.4.0-20080127    $ git branch stable-1.4 1.4.0-20080127
    $ git checkout stable-1.4    $ git checkout stable-1.4
Line 271: Line 323:
 Чтобы опубликовать эту ветку в центральном репозитории (требуется доступ в Чтобы опубликовать эту ветку в центральном репозитории (требуется доступ в
 него на запись):​ него на запись):​
 +
    $ git push origin stable-1.4    $ git push origin stable-1.4
- 
  
 ==== ... получить ветку разработки другого разработчика?​ ==== ==== ... получить ветку разработки другого разработчика?​ ====
-Кроме репозитория [[http://​git.geda-project.org/​]],​ у нас есть его зеркало на +Кроме репозитория [[http://​git.geda-project.org/​]],​ у нас есть его зеркало 
-[[http://​repo.or.cz/​w/​geda-gaf.git]]. Некоторые разработчики имеют свои +на [[http://​repo.or.cz/​w/​geda-gaf.git]]. Некоторые разработчики имеют свои 
-ответвления ("​fork"​) данного репозитория с ветками ("​branch"​) разработки новых +ответвления («fork») данного репозитория с ветками («branch») разработки 
-возможностей.+новых возможностей.
  
 Если вы хотите попробовать одну из веток с новыми возможностями,​ нужно Если вы хотите попробовать одну из веток с новыми возможностями,​ нужно
-получить её из репозитория разработчика. Самый лёгкий способ получения ветки --- +получить её из репозитория разработчика. Самый лёгкий способ получения ветки 
-использовать команду **''​git fetch''​**.+--- использовать команду **''​git fetch''​**. 
     $ git fetch ссылка_на_репозиторий название_удалённой_ветки:​название_локальной_ветки     $ git fetch ссылка_на_репозиторий название_удалённой_ветки:​название_локальной_ветки
  
 **Примеры:​** **Примеры:​**
 Получение ветки //​cairo_experiment//​ от //Peter C.// выглядело бы так: Получение ветки //​cairo_experiment//​ от //Peter C.// выглядело бы так:
 +
     $ git fetch git://​repo.or.cz/​geda-gaf/​pcjc2.git cairo_experiment:​peters_cairo_experiment     $ git fetch git://​repo.or.cz/​geda-gaf/​pcjc2.git cairo_experiment:​peters_cairo_experiment
  
Line 292: Line 346:
 //​peters_cairo_experiment//​ и поиграться с ней. //​peters_cairo_experiment//​ и поиграться с ней.
  
-Более того, в локальный репозиторий можно добавить несколько удалённых +Более того, в локальный репозиторий можно добавить несколько удалённых ответвлений:​
-ответвлений:​+
     $ git remote add <​название>​ <url>     $ git remote add <​название>​ <url>
     $ git fetch <​название>​     $ git fetch <​название>​
 При условии,​ что <​название>​ уникально,​ у вас появится возможность следить за При условии,​ что <​название>​ уникально,​ у вас появится возможность следить за
 их развитием,​ не создавая локальных веток. С помощью таких их развитием,​ не создавая локальных веток. С помощью таких
-программ,​ как **gitk**, можно следить за прогрессом в ветках разработки +программ,​ как **gitk**, можно следить за прогрессом в ветках разработки различных возможностей в разных ответвлениях:​
-различных возможностей в разных ответвлениях:​+
     $ gitk --all     $ gitk --all
  
Line 311: Line 363:
     $ gitk --all     $ gitk --all
  
-Теперь gitk будет забит до отказа,​ но с помощью **//​Файл//​** -> +Теперь gitk будет забит до отказа,​ но с помощью **//​Файл//​** -> **//​Список 
-**//​Список ссылок//​** [**//​File//​** -> **//List references//​**] +ссылок//​** [**//​File//​** -> **//List references//​**] (<​key>​F2</​key>​) можно 
-(<​key>​F2</​key>​) можно открыть диалоговое окно для более лёгкой +открыть диалоговое окно для более лёгкой навигации.
-навигации.+
  
 Обновление любимых веток сократится тогда до: Обновление любимых веток сократится тогда до:
     $ git fetch --all     $ git fetch --all
- 
 ==== ... сделать заплату,​ чтобы отправить её разработчикам?​ ==== ==== ... сделать заплату,​ чтобы отправить её разработчикам?​ ====
-Самый простой способ,​ в котором в заплату включаются все изменения с тех пор, +Самый простой способ,​ в котором в заплату включаются все изменения с тех пор, как локальный репозиторий синхронизировался с репозиторием на geda-project.org:​
-как локальный репозиторий синхронизировался с репозиторием на geda-project.org:​+
   $ git diff > имя_файла_заплаты   $ git diff > имя_файла_заплаты
  
Line 330: Line 379:
   $ git commit ​          # внести изменения   $ git commit ​          # внести изменения
   $ git format-patch -1  # сделать файл заплаты,​ основанный на данных изменениях   $ git format-patch -1  # сделать файл заплаты,​ основанный на данных изменениях
-Последняя команда выведет имя файла, содержащего заплату. Чтобы больше +Последняя команда выведет имя файла, содержащего заплату. Чтобы больше узнать об этой команде,​ обязательно взгляните на документацию по **git-format-patch**. Полученный файл можно отправить по электронной почте разработчикам,​ имеющим доступ на запись,​ и они смогут наложить заплату с помощью **''​git apply''​**.
-узнать об этой команде,​ обязательно взгляните на документацию по +
-**git-format-patch**. Полученный файл можно отправить по +
-электронной почте разработчикам,​ имеющим доступ на запись,​ и они смогут +
-наложить заплату с помощью **''​git apply''​**.+
  
 ==== ... восстановить на самом деле испорченный локальный репозиторий?​ ==== ==== ... восстановить на самом деле испорченный локальный репозиторий?​ ====
-Прежде всего, не вздумайте никуда ​"продвигать" ​командой **''​git push''​**+ 
 +Прежде всего, не вздумайте никуда ​«продвигать» командой **''​git push''​**
 никаких изменений из локального репозитория,​ если вы думаете,​ что в нём никаких изменений из локального репозитория,​ если вы думаете,​ что в нём
 что-то испорчено. Спросите сначала кого-нибудь более опытного в **git**. что-то испорчено. Спросите сначала кого-нибудь более опытного в **git**.
Line 343: Line 389:
 Во-вторых,​ команда,​ которая в самом деле спасёт вашу шкуру --- это Во-вторых,​ команда,​ которая в самом деле спасёт вашу шкуру --- это
 **git-reflog**. Она используется примерно так: **git-reflog**. Она используется примерно так:
 +
    $ git reflog    $ git reflog
    ​086908e... HEAD@{0}: cherry-pick:​ Last minute updates to the READMEs for all pro    ​086908e... HEAD@{0}: cherry-pick:​ Last minute updates to the READMEs for all pro
Line 350: Line 397:
    $ git reset --hard HEAD@{1}    $ git reset --hard HEAD@{1}
  
-Последняя команда (**''​%%git reset --hard ...%%''​**) откатит все ваши изменения к +Последняя команда (**''​%%git reset --hard ...%%''​**) откатит все ваши 
-шагу ​"​checkout: moving to master"​.  Помните:​ не паникуйте! С помощью **git** +изменения к шагу ​«checkout: moving to master».  Помните:​ не паникуйте! С 
-можно многое починить.+помощью **git** можно многое починить.
  
geda/scm.ru.1354183008.txt.gz · Last modified: 2012/11/29 04:56 by vzh