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
Last revision Both sides next revision
geda:scm.ru [2012/11/29 04:56]
vzh Fixed a header
geda:scm.ru [2014/04/23 01:42]
vzh Fix quotes
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 105:
  
 Если для доступа к **git** вы отдали администратору ключ, специально Если для доступа к **git** вы отдали администратору ключ, специально
-созданный для gEDA, вам может быть также нужно добавить к своим +созданный для gEDA, вам может быть также нужно добавить к своим настройкам 
-настройкам ещё одну строку,​ где указать этот дополнительный ключ:+ещё одну строку,​ где указать этот дополнительный ключ:
  
   Host git.geda-project.org   Host git.geda-project.org
Line 89: Line 113:
  
 Учтите,​ что файл, на который вы ссылаетесь здесь, это ваш закрытый ключ Учтите,​ что файл, на который вы ссылаетесь здесь, это ваш закрытый ключ
-("​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 147:
  
 Заплата накладывается обычным способом (как этом в примере):​ Заплата накладывается обычным способом (как этом в примере):​
 +
   $ 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 163:
  
 Прежде чем вносить изменения,​ **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 182:
 метасимволов. метасимволов.
  
-При внесении заплаты обязательно следует указать имя и адрес электронной почты автора:​+При внесении заплаты обязательно следует указать имя и адрес электронной 
 +почты автора:​ 
   $ 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 284:
 **git**-репозитории,​ будут отвергнуты. **git**-репозитории,​ будут отвергнуты.
  
-Если нужно отменить изменения только в одном файле, достаточно +Если нужно отменить изменения только в одном файле, достаточно запустить:​
-запустить:​+
  
   $ git checkout путь/​к/​нужному/​файлу   $ git checkout путь/​к/​нужному/​файлу
  
-Если нужно отменить все изменения в текущем каталоге и рекурсивно во +Если нужно отменить все изменения в текущем каталоге и рекурсивно во всех 
-всех его подкаталогах,​ достаточно запустить:​+его подкаталогах,​ достаточно запустить:​
  
   $ git checkout .   $ git checkout .
Line 248: Line 295:
  
 ==== ... исправить/​отредактировать изменения,​ внесённые последний раз? ==== ==== ... исправить/​отредактировать изменения,​ внесённые последний раз? ====
 +
   $ ... изменение каких-то файлов ...   $ ... изменение каких-то файлов ...
   $ 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 321:
 Чтобы опубликовать эту ветку в центральном репозитории (требуется доступ в Чтобы опубликовать эту ветку в центральном репозитории (требуется доступ в
 него на запись):​ него на запись):​
 +
    $ 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 344:
 //​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 361:
     $ 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 377:
   $ 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 387:
 Во-вторых,​ команда,​ которая в самом деле спасёт вашу шкуру --- это Во-вторых,​ команда,​ которая в самом деле спасёт вашу шкуру --- это
 **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 395:
    $ 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.txt · Last modified: 2014/04/24 16:02 by vzh