Git для начинающих: окончательное практическое руководство - программирование

Git для начинающих: окончательное практическое руководство

Хорошо, увидев этот пост от PJ Hyett, я решил пропустить до конца и пойти с Git.

Итак, мне нужен практический практический для начинающих Git. "Новичок" определяется как кто-то, кто знает, как обрабатывать свой компилятор, понимает на каком-то уровне, что Makefile, и коснулся контроля источника без понимая это очень хорошо.

"Практический" определяется как этот человек не хочет подробно разбираться в том, что делает Git в фоновом режиме, и даже не заботится (или не знает), что он распространяется. Ваши ответы могут намекать на возможности, но старайтесь стремиться к новичкам, которые хотят сохранить "основной" репозиторий на "сервере", который подкреплен и защищен, и обрабатывать их локальный репозиторий как просто "клиентский" ресурс.

Итак:

Установка/Настройка

Работа с кодом

Маркировка, ветвление, выпуски, базовые линии

Другие

  • Опишите и ссылку на хороший графический интерфейс, плагин IDE и т.д., который делает Git ресурс без командной строки, но, пожалуйста, перечислите его ограничения, а также его хорошее.
    • msysgit - Перекрестная платформа, включенная в Git
    • gitk - просмотрщик истории кроссплатформенности, включенный в Git
    • gitnub - Mac OS X
    • gitx - просмотрщик Mac OS X
    • smartgit - кроссплатформенная, коммерческая, бета-версия
    • tig - консольный графический интерфейс для Linux
    • qgit - графический интерфейс для Windows, Linux
    • Git Расширения - пакет для Windows, включает дружественный графический интерфейс
  • Любые другие общие задачи, которые должен знать новичок?
  • Как эффективно работать с репозиторием subversion, установленным в качестве источника исходного источника?

Другие Git ссылки для начинающих

Включение в Git

Я буду периодически перебирать записи и "аккуратно" их, чтобы они имели последовательный внешний вид и легко сканировать список - не стесняйтесь следовать простому "заголовку" - краткое объяснение - список инструкций - getchas и дополнительная информация ". Я также свяжусь с записями из списка маркеров выше, чтобы их было легче найти позже.

4b9b3361

Ответ 1

Как вы создаете новый проект/репозиторий?

A git репозиторий - это просто каталог, содержащий специальный каталог .git.

Это отличается от "централизованных" систем управления версиями (например, subversion), где "репозиторий" размещен на удаленном сервере, который вы checkout в каталоге "рабочая копия". С git ваша рабочая копия - это репозиторий.

Просто запустите git init в каталоге, который содержит файлы, которые вы хотите отслеживать.

Например,

cd ~/code/project001/
git init

Это создает папку .git (скрытую) в текущем каталоге.

Чтобы создать новый проект, запустите git init с дополнительным аргументом (имя создаваемого каталога):

git init project002

(This is equivalent to: mkdir project002 && cd project002 && git init)

Чтобы проверить, находится ли текущий текущий путь в репозитории git, просто запустите git status - если это не репозиторий, он сообщит "фатальный: не репозиторий git"

Вы также можете указать каталог .git и проверить, содержит ли он файлы/каталоги, похожие на следующие:

$ ls .git
HEAD         config       hooks/       objects/
branches/    description  info/        refs/

Если по какой-либо причине вы хотите "удалить" git "репозиторий (вы хотите прекратить использование git для отслеживания этого проекта). Просто удалите каталог .git на базовом уровне репозитория.

cd ~/code/project001/
rm -rf .git/

Предостережение:. Это уничтожит всю историю изменений, все ваши теги, все, что было сделано git. Он не будет касаться "текущих" файлов (файлы, которые вы видите в данный момент), но предыдущие изменения, удаленные файлы и т.д. Будут невосстановимы!

Ответ 2

GUI для git


Git GUI

Входит в комплект git — Запустите git gui из командной строки, а установщик Windows msysgit добавит его в меню "Пуск".

Git GUI может сделать большинство того, что вам нужно сделать с git. Включая изменения сцены, настройте git и репозитории, нажмите изменения, создайте/просмотрите/удалите ветки, слейте и многое другое.

Одна из моих любимых функций - ярлыки "сценарий" и "сценарий" в меню правой кнопки мыши, что позволяет фиксировать определенные части файла. Вы можете достичь того же через git add -i, но мне легче его использовать.

Это не самое приятное приложение, но оно работает практически на всех платформах (основано на Tcl/Tk)

Screenshots | скринкаст


GitK

Также включен в git. Это средство просмотра истории git и позволяет визуализировать историю репозитория (включая ветки, когда они созданы и объединены). Вы можете просматривать и выполнять поиск.

Хорошо сочетается с git -gui.


Gitnub

Приложение Mac OS X. В основном эквивалент git log, но имеет некоторую интеграцию с github (например, "Сетевой вид" ).

Выглядит красиво и подходит для Mac OS X. Вы можете искать репозитории. Самая большая критика Gitnub заключается в том, что он показывает историю линейным образом (по одной ветки за раз) - она ​​не визуализирует ветвление и слияние, что может быть важно с git, хотя это плановое улучшение.

Загрузка ссылок, изменение журнала и скриншоты | Git репозиторий


GitX

Предназначен для "клонирования gitk для OS X".

Он может визуализировать нелинейную историю ветвления, выполнять коммиты, просматривать и выполнять поиск, а также имеет некоторые другие приятные функции, такие как возможность "Quicklook" любого файла в любой редакции (нажмите пробел в представлении списка файлов) экспортировать любой файл (с помощью перетаскивания).

Он намного лучше интегрирован в OS X, чем git-gui/gitk, и является быстрым и стабильным даже при исключительно больших репозиториях.

Оригинальный репозиторий git pieter не обновлялся недавно (более года на момент написания). Более активно поддерживаемая ветвь доступна в brotherbard/gitx - она ​​добавляет "боковую панель, выборку, вытягивание, толчок, добавление удаленного, слияния, выбирать, переустанавливать, клонировать, клонировать до"

Загрузить | Скриншоты | Git репозиторий | вилка для брата | laullon fork


SmartGit

На главной странице:

SmartGit - это интерфейс для распределенная система управления версиями Gitи работает на Windows, Mac OS X и Linux. SmartGit предназначен для разработчики, предпочитающие графического пользователя интерфейс через клиент командной строки, быть еще более продуктивным с помощью git - самый мощный DVCS сегодня.

Вы можете загрузить его из их веб-сайт.

Загрузить


TortoiseGit

Версия TortoiseSVN git для пользователей Windows.

Он переносит TortoiseSVN на TortoiseGit. Последняя версия 1.2.1.0. Эта версия может выполнять обычную задачу, такую ​​фиксацию, журнал показа, разницу двух версий, создавать ветку и тег, создавать патч и т.д. Подробнее см. ReleaseNotes. Добро пожаловать, чтобы внести свой вклад в этот проект.

Download


QGit

QGit - это средство просмотра git GUI, построенное на Qt/С++.

С помощью qgit вы сможете просматривать история изменений, просмотр содержимого патча и измененные файлы, графически после различной разработки ветки.

Download


gitg

gitg - просмотрщик репозитория gitориентация gtk +/GNOME. Один из основных задача состоит в том, чтобы обеспечить более унифицированный пользовательский интерфейс для Gitинтерфейсы на нескольких рабочих столах. Это это не означает кросс-платформенное приложение, но тесное сотрудничество с аналогичными клиенты для других операционных систем (например, GitX для OS X).

Особенности

  • Просмотр истории изменений.
  • Обрабатывать большие репозитории (загружает репозиторий linux, 17000+ ревизий, менее 1 секунды).
  • Зафиксировать изменения.
  • Ступени/неустановленные отдельные куски.
  • Отменить изменения.
  • Показать расцветку изменений изменений в версиях.
  • Просмотр дерева для данной версии.
  • Экспортировать части дерева данной версии.
  • Поставьте любой refspec, который команда, например "git log", может понять, чтобы построить историю.
  • Показывать и переключаться между ветвями в виде истории.

Загрузить: releases или source


Gitbox

Gitbox - графический Mac OS X интерфейс для управления версиями gitсистема. В одном окне вы видите веток, истории и работы статус каталога.

Ежедневные операции легки: этап и нестационарные изменения с помощью флажка. Зафиксировать, вытащить, слить и нажать с помощью один клик. Дважды щелкните изменение на показать diff с FileMerge.app.

Загрузить


Gity

На веб-сайте Gity не так много информации, но на скриншотах там есть полнофункциональный открытый OS X git gui с открытым исходным кодом.

Download или источник


Meld

Meld - инструмент визуального разграничения и слияния. Вы можете сравнить два или три файла и редактировать их на месте (diffs update динамически). Вы можете сравнить два или три папки и файл запуска сравнения. Вы можете просматривать и просматривать рабочая копия из популярной версии такие системы управления, как CVS, Subversion, Bazaar-ng и Mercurial [и Git].

Загрузка


Katana

A git GUI для OSX от Steve Dekorte.

Взгляните, какие удаленные ветки имеют изменения в pull и локальные репозитории имеют изменения в push. Операции gitдобавить, зафиксировать, нажать, потянуть, пометить и resetподдерживаются, а также визуальные различия и визуальный просмотр иерархии проекта который выделяет локальные изменения и дополнения.

Бесплатно для 1 репозитория, $25 для более.

Загрузить


Sprout (ранее GitMac)

Ориентация на создание git проста в использовании. Имеет собственный пользовательский интерфейс Cocoa (mac-like), быстрый просмотр репозитория, клонирование, push/pull, разветвление/слияние, визуальный diff, удаленные ветки, легкий доступ к терминалу и т.д.

Используя наиболее часто используемые действия git, интуитивно понятные и легко выполняемые, Sprout (ранее GitMac) делает git удобным для пользователя. Совместимость с большинством рабочих процессов git, Sprout отлично подходит для разработчиков и разработчиков, коллективной работы и продвинутых и начинающих пользователей.

Загрузить | Веб-сайт


Tower

Богатый графический интерфейс git для Mac OSX. 30-дневная бесплатная пробная версия, $59USD для однопользовательской лицензии.

Download | Веб-сайт


EGit

EGit является поставщиком Eclipse Team для системы управления версиями git. git является распределенным SCM, что означает, что каждый разработчик имеет полную копию всей истории каждого пересмотра кода, делая запросы против история очень быстрая и универсальная.

В проекте EGit реализована инструментальная среда Eclipse поверх JGit Реализация Java git.

Download | Веб-сайт


Git Расширения

Open Source для Windows - устанавливает все необходимое для работы с git в одном пакете, прост в использовании.

Git Расширения - это инструментарий, позволяющий работать с git в Windows более интуитивно понятным. Расширение оболочки будет взаимодействовать в проводнике Windows и представляет контекстное меню для файлов и каталогов. Существует также плагин Visual Studio для использования git из Visual Studio.

Download

Большое спасибо dbr за разработку материалов gui git.


SourceTree

SourceTree - бесплатный клиент Mac для git, Mercurial и SVN. Построенный Atlassian, людьми, стоящими за BitBucket, он работает одинаково хорошо с любой системой VC, которая позволяет вам овладеть одним инструментом для использования со всеми вашими проектами, однако они контролируются версиями. Функционально и БЕСПЛАТНО.

Expert-Ready и Feature-pack для начинающих и продвинутых пользователей:

Просмотрите исходящие и входящие изменения. Вишневый забор между ветвями. Обработка патчей, переустановка, прикрытие/полка и многое другое.

Download | Веб-сайт



Ответ 3

Хорошо, несмотря на то, что вы просили не "просто" ссылаться на другие ресурсы, это довольно глупо, когда уже существует сообщество, растущее (и растущее) ресурс, который действительно неплохой: Git Community Book. Серьезно, эти 20 вопросов в вопросе будут ничего, кроме кратких и последовательных. Git Community Book доступен как HTML и PDF, так и ответы на многие ваши вопросы с четкими, хорошо отформатированными и одноранговыми ответами и в формате, который позволяет вам сразу перейти к вашей проблеме.

Увы, если мое сообщение действительно расстраивает вас, я удалю его. Просто скажите это.

Ответ 4

Как настроить его для игнорирования файлов:

Возможность иметь git игнорировать файлы, которые вы не хотите отслеживать, очень полезна.

Чтобы игнорировать файл или набор файлов, вы указываете шаблон. Синтаксис шаблона для git довольно прост, но мощный. Он применим ко всем трем различным файлам, которые я расскажу ниже.

  • Пустая строка игнорирует файлы, обычно используется как разделитель.
  • В качестве комментариев выступают строки с #.
  • Префикс ! не является обязательным и будет отменять шаблон. Любой отрицательный шаблон, который соответствует, будет переопределять шаблоны с более низким приоритетом.
  • Поддерживает расширенные выражения и wild cards
    • Пример: шаблон: *. [oa] будет игнорировать все файлы в репозитории, заканчивающиеся на .o или .a(объектные и архивные файлы).
  • Если шаблон имеет каталог, заканчивающийся косой чертой git, будет соответствовать только этот каталог и пути под ним. Это исключает регулярные файлы и символические ссылки из матча.
  • Ведущая косая черта будет соответствовать всем файлам в этом имени пути.
    • Пример: шаблон /*. c будет соответствовать файлу foo.c, но не bar/awesome.c

Отличный пример из gitignore (5) man page:

$ git status
[...]
# Untracked files:
[...]
#       Documentation/foo.html
#       Documentation/gitignore.html
#       file.o
#       lib.a
#       src/internal.o
[...]
$ cat .git/info/exclude
  # ignore objects and archives, anywhere in the tree.
  *.[oa]
$ cat Documentation/.gitignore
# ignore generated html files,
*.html
# except foo.html which is maintained by hand
!foo.html
$ git status
[...]
# Untracked files:
[...]
#       Documentation/foo.html
[...]

Как правило, существует три разных способа игнорировать невоспроизводимые файлы.

1) Игнорировать для всех пользователей репозитория:

Добавьте файл с именем .gitignore в корень вашей рабочей копии.

Изменить .gitignore, чтобы соответствовать вашим предпочтениям, для которых файлы должны/не должны игнорироваться.

git add .gitignore 

и зафиксировать, когда закончите.

2) Игнорируйте только свою копию репозитория:

Добавить/отредактировать файл $GIT_DIR/info/exclude в вашей рабочей копии с вашими предпочтительными шаблонами.

Ex: Моя рабочая копия ~/src/project1, поэтому я бы отредактировал ~/src/project1/.git/info/exclude

Вы закончили!

3) Игнорируйте во всех ситуациях в вашей системе:

Глобальные шаблоны игнорирования для вашей системы могут входить в файл с именем, который вы когда-либо пожелаете.

Моя лично называется ~/.gitglobalignore

Затем я могу сообщить git об этом файле, отредактировав файл ~/.gitconfig со следующей строкой:

core.excludesfile = ~/.gitglobalignore

Вы закончили!

Я нахожу gitignore man-страницу лучшим ресурсом для получения дополнительной информации.

Ответ 5

Как вы "помечаете" определенный набор ревизий

Как вы отмечаете "тег" или "выпускаете" определенный набор ревизий для определенного набора файлов, чтобы вы могли всегда вытащить его позже?

Использование команды git tag.

Чтобы просто "пометить" текущую ревизию, вы просто запустите.

git tag -a thetagname
git tag -a 0.1
git tag -a 2.6.1-rc1 -m 'Released on 01/02/03'

Чтобы перечислить текущие теги, просто запустите git tag без аргументов или -l (нижний регистр L):

$ git tag -a thetagname # and enter a message, or use -m 'My tag annotation'
$ git tag -l
thetagname

Чтобы удалить тег, вы используете флаг -d:

$ git tag -d thetagname 
Deleted tag 'thetagname'
$ git tag
[no output]

Чтобы пометить конкретный (предыдущий) фиксатор, просто выполните.

git tag [tag name] [revision SHA1 hash]

Например:

git tag 1.1.1 81b15a68c6c3e71f72e766931df4e6499990385b

Примечание: по умолчанию git создает "легкий" тег (в основном ссылку на конкретную ревизию). "Правильный" способ - использовать флаг -a. Это запустит ваш редактор с просьбой о сообщении тега (идентично запросу для сообщения фиксации, вы также можете использовать флаг -m для подачи сообщения тега в командной строке). Использование аннотированного тега создает объект со своим идентификатором, датой, теггером (автором) и опционально подписями GPG (с использованием тега -s). Для получения дополнительной информации об этом см. этот пост

git tag mytagwithmsg -a -m 'This is a tag, with message'

И чтобы перечислить теги с аннотациями, используйте флаг -n1, чтобы показать 1 строку каждого сообщения тега (-n245, чтобы показать первые 245 строк каждой аннотации и т.д.):

$ git tag -l -n1
mytagwithmsg    This is a tag, with message

Для получения дополнительной информации см. git -tag (1) Страница руководства

Ответ 6

Пример рабочего процесса с GIT.

Git является чрезвычайно гибким и адаптируется к любому рабочему процессу, но не для принудительного выполнения определенного рабочего процесса может иметь негативный эффект, затрудняющий понимание того, что вы можете сделать с помощью git за пределами линейного "резервного" рабочего процесса и как полезное разветвление может быть, например.

Это сообщение в блоге объясняет очень простой, но эффективный рабочий процесс, который очень легко настроить с помощью GIT.

цитата из сообщения в блоге: Мы считаем, что origin/master является основной ветвью, где исходный код HEAD всегда отражает состояние готовности к производству:

Рабочий процесс стал достаточно популярным, чтобы создать проект, который реализует этот рабочий процесс: git -flow

Хорошая иллюстрация простого рабочего процесса, в котором вы делаете все свои изменения в разработке, и только нажимаете, чтобы управлять, когда код находится в рабочем состоянии:

simple workflow

Теперь скажем, вы хотите работать над новой функцией или рефакторингом модуля. Вы могли бы создать новую ветку, что мы могли бы назвать ветвью "feature", что займет некоторое время и может сломать некоторый код. Как только ваша функция "достаточно стабильна" и вы хотите переместить ее "ближе" к производству, вы объедините свою ветку функций в разработку. Когда все ошибки будут отсортированы после слияния, а ваш код пройдет, все тесты будут твердыми, вы вносите изменения в мастер.

Во время всего этого процесса вы обнаружите ужасную ошибку безопасности, которая должна быть исправлена ​​сразу. У вас может быть ветвь с исправлениями, которая вносит изменения, которые быстрее возвращаются в производство, чем нормальная ветвь "развить".

Здесь вы можете увидеть, как может выглядеть этот процесс/исправление/разработка/производственный процесс (хорошо объясняется в сообщении в блоге, и повторяю, сообщение в блоге объясняет весь процесс намного подробнее и намного лучше чем я.

Git workflow example

Ответ 7

Здесь копия сообщения PJ Hyett, поскольку она больше не доступна:

Git Не является жестким

23 ноября 2008 г.

Когда мы говорим людям, почему они должны используйте Git над Subversion, переход к строка ", Git делает Subversion лучше чем Subversion, но он много делает более того."

"Много больше" состоит из группы что делает Git действительно сияющим, но это может быть довольно подавляющим те, которые поступают от других SCM, таких как Subversion.

Тем не менее, ничего не остановить вы используете Git так же, как и используете Подрывная деятельность, в то время как вы делаете Переход.

Предполагая, что вы установили необходимое программное обеспечение и иметь удаленный где-то в хранилище, вот как вы будет захватывать код и изменяется с помощью Subversion:

$ svn checkout svn://foo.googlecode.com/svn/trunk foo
# make your changes
$ svn commit -m "my first commit"

И как бы вы это сделали в Git:

$ git clone [email protected]:pjhyett/foo.git
# make your changes
$ git commit -a -m "my first commit"
$ git push

Еще одна команда, чтобы это произошло в Git. Эта дополнительная команда имеет большие последствия, но для целей этот пост, вот и все говорили о, одна дополнительная команда.

Смотрите, это действительно не так сложно.

Обновление:. Идентификатор не должен упоминать, что эквивалент обновление локальной копии в Subversion по сравнению с Git составляет svn update и git pull, соответственно. Единственный команда в обоих случаях.

Ответ 8

Как установить Git

В Windows:

Установите msysgit

Есть несколько загрузок:

  • Git: Используйте это, если вам не нужен один из других вариантов ниже.
  • PortableGit: Используйте это, если вы хотите запустить Git на ПК без установки на этом ПК (например, запустите Git с USB-накопителя).
  • msysGit: Используйте это, если вы хотите разработать Git. Если вы просто хотите использовать Git для своего исходного кода, но не хотите редактировать исходный код Git, вам это не нужно.

Это также устанавливает оболочку Cygwin bash, поэтому вы можете использовать git в более удобной оболочке (чем cmd.exe), а также включает git -gui (доступный с помощью команды git gui или Start > All Programs > Git)

Mac OS X

Используйте git-osx-installer, или вы также можете установить из источника

Через диспетчер пакетов

Установите git с помощью собственного диспетчера пакетов. Например, в Debian (или Ubuntu):

apt-get install git-core

Или в Mac OS X через MacPorts:

sudo port install git-core+bash_completion+doc

... или fink:

fink install git

... или Homebrew:

brew install git

В дистрибутивах на основе Red Hat, таких как Fedora:

yum install git

В Cygwin пакет Git можно найти в разделе "devel"

Из источника (Mac OS X/Linux/BSD/etc.)

В Mac OS X, если у вас установлены инструменты разработчика, вы легко можете скомпилировать Git из исходного кода. Загрузите последнюю версию Git как .tar.bz или .tar.gz из http://git-scm.com/ и извлеките ее (дважды щелкните в Finder )

В Linux/BSD/etc. это должно быть почти то же самое. Например, в Debian (и Ubuntu) вам необходимо установить пакет build-essential через apt.

Затем в терминале cd туда, где вы извлекли файлы (Running cd ~/Downloads/git*/ должен работать), а затем запустите.

./configure && make && sudo make install

Это установит Git в место по умолчанию (/usr/local - так git будет в /usr/local/bin/git)

Он предложит вам ввести свой пароль (для sudo), поэтому он может писать в каталог /usr/local/, доступ к которому может получить только пользователь root, поэтому требуется sudo!

Если вы хотите установить его где-то отдельно (поэтому Git файлы не смешиваются с другими инструментами), используйте --prefix с помощью команды configure:

./configure --prefix=/usr/local/gitpath
make
sudo make install

Это установит двоичный файл git в /usr/local/bin/gitpath/bin/git - поэтому вам не нужно вводить его каждый раз, когда вы добавляете в свой $PATH, добавив следующую строку в свой ~/.profile:

export PATH="${PATH}:/usr/local/bin/gitpath/bin/"

Если у вас нет доступа к sudo, вы можете использовать --prefix=/Users/myusername/bin и установить его в свой домашний каталог. Не забудьте добавить ~/bin/ в $PATH

script x- git -update-to-last-version автоматизирует много этого:

Этот script обновляет локальный клон репозитория Git (localy at ~/work/track/git), а затем настраивает, устанавливает (в /usr/local/git - git describe) и обновляет символическую ссылку /usr/local/git.

Таким образом, я могу иметь /usr/local/git/bin в моем PATH, и я всегда использую последнюю версию.

В последней версии этого script также устанавливаются справочные страницы. Вам нужно настроить ваш MANPATH, чтобы включить каталог /usr/local/git/share/man.

Ответ 9

Git Reset

Скажите, что вы делаете тягу, сливаете ее в свой код и решаете, что вам это не нравится. Используйте git -log или tig и найдите хеш, где бы вы ни захотели вернуться (возможно, ваш последний коммит до вытягивания/слияния), скопируйте хеш и выполните:

# Revert to a previous commit by hash:
git-reset --hard <hash>

Вместо хэша вы можете использовать HEAD ^ как ярлык для предыдущего коммита.

# Revert to previous commit:
git-reset --hard HEAD^

Ответ 10

Как создать общий репозиторий коллективной группы?

Как настроить нормальный репозиторий описывается здесь - но как вы создаете репозиторий команд, который каждый может тянуть и нажимать с и на?

Использование общей файловой системы NFS

Предполагая, что ваша команда уже имеет, например, совместное членство в группе, которое может быть использовано.

mkdir /your/share/folder/project.git
cd /your/share/folder/project.git
newgrp yourteamgroup # if necessary
git init --bare --shared

Чтобы начать использовать этот репозиторий, проще всего начать с локального репозитория, который вы уже использовали:

cd your/local/workspace/project
git remote add origin /your/share/folder/project.git
git push origin master

Другие теперь могут клонировать это и начать работу:

cd your/local/workspace
git clone /your/share/folder/project.git

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

Настройте учетную запись пользователя на целевом сервере. Независимо от того, используете ли вы учетную запись без пароля, учетную запись с паролем или используете authorized_keys, действительно зависит от вашего требуемого уровня безопасности. Посмотрите Конфигурирование Git через SSH для получения дополнительной информации.

Если все разработчики используют одну и ту же учетную запись для доступа к этому совместному репозиторию, вам не нужно использовать параметр --shared, как указано выше.

После инициализации репозитория таким же образом, как и выше, вы выполните начальный щелчок следующим образом:

cd your/local/workspace/project
git remote add origin [email protected]:/path/to/project.git
git push origin master

См. сходство с вышесказанным? Единственное, что может случиться в дополнение, - это SSH, запрашивающий пароль, если у учетной записи есть пароль. Если вы получите это приглашение в учетной записи без пароля, SSH-сервер, возможно, отключил PermitEmptyPasswords.

Теперь клонирование выглядит следующим образом:

cd your/local/workspace
git clone [email protected]:/path/to/project.git

Ответ 11

git status - ваш друг, используйте его часто. Хорошо для ответа на такие вопросы, как:

  • Что сделала эта команда?
  • На какой ветке я нахожусь?
  • Какие изменения я должен совершить, и что-то я забыл?
  • Был ли я посреди чего-то в последний раз, когда я работал над этим проектом (дни, недели или, возможно, несколько месяцев назад)?

В отличие от, скажем svn status, git status работает почти мгновенно даже в больших проектах. Я часто находил это обнадеживающим, изучая git, чтобы использовать его часто, чтобы убедиться, что моя ментальная модель того, что происходит, была точной. Теперь я в основном просто использую его, чтобы напомнить себе, что я изменил с момента последнего коммита.

Очевидно, что это гораздо полезнее, если ваш .gitignore настроен на благо.

Ответ 12

Зафиксировать изменения

После того как вы отредактировали файл, вам необходимо внести изменения в git. Когда вы выполните эту команду, он попросит сообщение о фиксации - это всего лишь простой бит текста, который сообщает всем, что вы изменили.

$ git commit source/main.c

Скопирует файл main.c в каталог. /source/

$ git commit -a # the -a flag pulls in all modified files

передаст все измененные файлы (но не новые файлы, их нужно добавить в индекс с помощью git -add). Если вы хотите зафиксировать только определенные файлы, вам необходимо сначала сгенерировать их с помощью git -add, а затем зафиксировать без флага -a.

Commating только изменяет ваш локальный репозиторий, но не удаленные репозитории. Если вы хотите отправить коммиты в удаленный репозиторий, вам нужно сделать push.

$ git push <remote> <branch> # push new commits to the <branch> on the <remote> repository

Для кого-то из CVS или SVN это изменение, так как фиксация в центральном репозитории теперь требует двух шагов.

Ответ 13

Как вы введете?

Разница по умолчанию в репозитории git называется master.

Чтобы создать новую ветку, используйте

git branch <branch-name>

Чтобы просмотреть список всех ветвей в текущем типе репозитория

git branch

Если вы хотите переключиться на другую ветку, вы можете использовать

git checkout <branch-name>

Чтобы создать новую ветку и переключиться на нее за один шаг

git checkout -b <branch-name>

Чтобы удалить ветвь, используйте

git branch -d <branch-name>

Чтобы создать ветвь с изменениями из текущей ветки, выполните

git stash
git stash branch <branch-name>

Ответ 14

Получение последнего кода

$ git pull <remote> <branch> # fetches the code and merges it into 
                             # your working directory
$ git fetch <remote> <branch> # fetches the code but does not merge
                              # it into your working directory

$ git pull --tag <remote> <branch> # same as above but fetch tags as well
$ git fetch --tag <remote> <branch> # you get the idea

Это в значительной степени охватывает все случаи получения последней копии кода из удаленного репозитория.

Ответ 15

Pro Git бесплатная книга, безусловно, моя любимая, особенно для новичков.

Ответ 16

Git Магия - это все, что вам когда-либо понадобится. Гарантированные или ваши деньги обратно!

Ответ 17

Как вы объединяете ветки?

Если вы хотите объединить ветку (например, master - release), убедитесь, что ваша ветка является дочерней ветвью, к которой вы хотите объединиться (используйте git branch или git status, чтобы увидеть текущую ветку филиал).

Затем используйте

git merge master

(где master - имя ветки, которую вы хотите объединить с текущей ветвью).

Если есть какие-либо конфликты, вы можете использовать

git diff

чтобы увидеть ожидающие конфликты, которые вы должны решить.

Ответ 19

Как вы видите историю изменений в файле?

git log -- filename

Ответ 20

Как отслеживать удаленные ветки

Предполагая наличие удаленного репозитория, с которого вы клонировали ваш локальный репозиторий, а также предположив, что в этом удаленном репозитории есть ветвь с именем "some_branch", вот как ее отслеживать локально:

# list remote branches
git branch -r

# start tracking one remote branch
git branch --track some_branch origin/some_branch

# change to the branch locally
git checkout some_branch

# make changes and commit them locally
....

# push your changes to the remote repository:
git push

Ответ 21

Настоящая хорошая статья для понимания того, как работает Git Git Parable. Очень рекомендуется!

Ответ 22

Как вы сравниваете две версии файла или ваш текущий файл и предыдущую версию?

Сравнить команда git diff.

Чтобы сравнить 2 ревизии файла:

$ git diff <commit1> <commit2> <file_name>

Это отличает commit1 от commit2; если вы меняете заказ, тогда файлы различаются в обратном порядке, что может и не быть тем, что вы ожидаете...

Сравнение текущего поэтапного файла с репозиторием:

$ git diff --staged <file_name>

Чтобы сравнить текущий неустановленный файл с репозиторием:

$ git diff <file_name>

Ответ 23

Почему еще один способ? В сети действительно хорошие, например, git guide, который идеально подходит для начала. Он имеет хорошие ссылки, в том числе git book, на которые можно внести вклад (размещен на git), и который идеально подходит для этого коллективного задача.

В stackoverflow, я бы предпочел увидеть ваши любимые трюки!

Моя, которую я обнаружил только в последнее время, git stash, объяснил здесь, что позволяет вам сохранить текущую работу и перейти к другая ветка

EDIT: как предыдущий пост, если вы действительно предпочитаете формат stackoverlow с сообщениями в качестве вики, я удалю этот ответ

Ответ 24

Консоль UI - Tig

Установка:

apt-get install tig

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

Внутри репозитория git введите "tig", чтобы просмотреть интерактивный журнал, нажмите 'enter' в любом журнале, чтобы просмотреть дополнительную информацию об этом. h для справки, в которой перечислены основные функции.

Пустяки

"Tig" - "Git" назад.

Ответ 25

Я начал работу с официального Git учебника. Я думаю, что это достаточно практично для новичков (я был и до сих пор новичком по вашему определению! Я почти не понимаю make файлы, я только немного играл с Subversion Apache и т.д.).

Ответ 26

Как создать ветку в удаленном репозитории?

Предполагая, что вы клонировали ваш удаленный репозиторий из какого-то одного удаленного репозитория.

# create a new branch locally
git branch name_of_branch
git checkout name_of_branch
# edit/add/remove files    
# ... 
# Commit your changes locally
git add fileName
git commit -m Message
# push changes and new branch to remote repository:
git push origin name_of_branch:name_of_branch

Ответ 27

Как удалить ветку в удаленном репозитории?

Выполните push на вашем пульте с помощью : перед именем ветки

git push origin :mybranchname

origin имя вашего пульта и mybranchname имя ветки, подлежащей удалению

http://help.github.com/remotes/

Ответ 28

Нажмите и отпустите изменения

В упрощенном виде просто git push и git pull. Изменения объединяются, и если конфликт git сообщит вам об этом, и вы сможете его разрешить вручную.

Когда вы сначала нажимаете на удаленный репозиторий, вам нужно сделать git push origin master (master - ведущая ветвь). С этого момента вы просто делаете git push.

Нажмите теги git push --tags.

Ответ 29

Код проверки

Сначала перейдите в пустой каталог, используйте "git init", чтобы сделать его репозиторием, затем клонируйте удаленное репо в свой собственный.

git clone user[email protected]:/dir/to/repo

Везде, где вы первоначально клонировали, находится где "git pull" потянет по умолчанию.