Хорошо, увидев этот пост от PJ Hyett , я решил пропустить до конца и пойти с Git .
Так что мне нужно практическое руководство для начинающих по Git. «Новичок» определяется как тот, кто знает, как обращаться со своим компилятором, до некоторой степени понимает, что такое Makefile , и коснулся управления исходным кодом, не понимая его очень хорошо.
Термин «практический» определяется как этот человек, который не хочет вдаваться в подробности относительно того, что Git делает в фоновом режиме, и даже не заботится (или не знает), что он распространяется. Ваши ответы могут указывать на возможные варианты, но постарайтесь найти новичка, который хочет сохранить «основной» репозиторий на «сервере», резервное копирование и безопасность которого, и рассматривать свой локальный репозиторий как просто «клиентский» ресурс.
Так:
Установка / настройка
- Как установить Git
- Как вы настраиваете Git? Попробуйте охватить Linux, Windows, Mac, подумайте, что такое «клиент / сервер».
- Как вы создаете новый проект / репозиторий?
- Как настроить его так, чтобы он игнорировал файлы (.obj, .user и т. Д.), Которые на самом деле не являются частью кодовой базы?
Работа с кодом
- Как вы получаете последний код?
- Как вы проверяете код?
- Как вы делаете изменения?
- Как вы видите, что не передано, или статус вашей текущей кодовой базы?
- Как вы уничтожаете нежелательные коммиты?
- Как вы сравниваете две ревизии файла или ваш текущий файл и предыдущую ревизию?
- Как вы видите историю изменений в файле?
- Как вы обрабатываете двоичные файлы (например, Visio Docs или среды компилятора)?
- Как вы объединяете файлы, измененные в одно и то же время?
- Как отменить (отменить или сбросить) коммит?
Пометка, ветвление, релизы, базовые показатели
- Как вы «помечаете» «тег» или «выпускаете» определенный набор ревизий для определенного набора файлов, чтобы вы всегда могли получить его позже?
- Как вы тянете конкретный «релиз»?
- Как вы ветвитесь?
- Как вы сливаете ветви?
- Как вы решаете конфликты и завершаете слияние?
- Как объединить части одной ветви в другую?
- Что такое ребазинг?
- Как я могу отслеживать удаленные ветви?
- Как я могу создать ветку в удаленном хранилище?
- Как удалить ветку в удаленном репозитории?
- Примеры рабочих процессов Git
Другой
- Опишите и связывайтесь с хорошим графическим интерфейсом, плагином IDE и т. Д., Который делает Git ресурсом без командной строки, но, пожалуйста, перечислите его ограничения и преимущества.
- msysgit - кроссплатформенная, входит в Git
- gitk - кроссплатформенный просмотрщик истории, включенный в Git
- gitnub - Mac OS X
- gitx - просмотрщик истории Mac OS X
- smartgit - кроссплатформенный, коммерческий, бета
- tig - консольный графический интерфейс для Linux
- qgit - графический интерфейс для Windows, Linux
- Git Extensions - пакет для Windows, включает дружественный графический интерфейс
- Любые другие общие задачи, которые должен знать новичок?
- Как мне эффективно работать с репозиторием Subversion, установленным в качестве источника управления исходным кодом?
Другие ссылки для начинающих в Git
- Git Guide
- Git book
- Мерзавец магии
- gitcasts
- Руководства по GitHub
- Git учебник
- Progit - книга Скотта Чакона
- Git - Ускоренный курс SVN
- Мерзавец снизу вверх
- Готов
- gitref.org
- Git Visual Cheats
Копаться в Git
Я буду время от времени просматривать записи и «приводить их в порядок», чтобы они выглядели единообразно, чтобы было легко просматривать список - легко проследить за простым «заголовком» - кратким объяснением - списком инструкций - получил и дополнительная информация "шаблон. Я также сошлюсь на записи из списка выше, так что их легко найти позже.
источник
rm -rf .git
стереть базу данных git.git status
чтобы убедиться, что вы находитесь в репозитории: здесь есть одна ошибка: если в вашей текущей оболочке установлена переменная окружения $ GIT_DIR, git будет игнорировать ваше текущее местоположение и использовать репозиторий в $ GIT_DIR. Я должен знать, я потерял час на это вчера.GUI для git
Git GUI
В комплекте с git - Запуск
git gui
из командной строки, и установщик Windows msysgit добавляет его в меню «Пуск».Git GUI может делать большую часть того, что вам нужно делать с Git. Включая этапные изменения, настройку git и репозиториев, push-изменения, создание / извлечение / удаление веток, слияние и многое другое.
Одна из моих любимых функций - это ярлыки «stage line» и «stage hunk» в контекстном меню, которые позволяют фиксировать определенные части файла. Вы можете добиться того же с помощью
git add -i
, но мне проще в использовании.Это не самое красивое приложение, но оно работает практически на всех платформах (основываясь на Tcl / Tk)
Скриншоты | скринкаст
GitK
Также включен с мерзавцем. Это средство просмотра истории git, позволяющее визуализировать историю репозитория (включая ветви, когда они создаются и объединяются). Вы можете просматривать и искать коммиты.
Хорошо сочетается с Git-Gui.
Gitnub
Приложение Mac OS X. Преимущественно эквивалент
git log
, но имеет некоторую интеграцию с github (например, «Сетевое представление»).Выглядит красиво и подходит для Mac OS X. Вы можете искать репозитории. Самым большим критиком Gitnub является то, что он показывает историю линейно (по одной ветке за раз) - он не визуализирует ветвления и слияния, что может быть важно для git, хотя это запланированное улучшение.
Скачать ссылки, журнал изменений и скриншоты | Git репозиторий
GitX
Намеревается быть "клоном GITK для OS X".
Он может визуализировать историю нелинейного ветвления, выполнять коммиты, просматривать и искать коммиты, а также имеет некоторые другие полезные функции, такие как возможность «быстрого просмотра» любого файла в любой ревизии (нажмите пробел в представлении списка файлов), экспорт любого файла. (с помощью перетаскивания).
Он намного лучше интегрирован в OS X, чем
git-gui
/gitk
, и быстр и стабилен даже с исключительно большими репозиториями.Оригинальная версия git-репозитория недавно не обновлялась (более года на момент написания). Более активно поддерживаемая ветка доступна в brotherbard / gitx - она добавляет «боковую панель, извлечение, извлечение, толкание, добавление удаленного, объединение, выбор вишни, ребазирование, клонирование, клонирование в»
Скачать | Скриншоты | Git репозиторий | братбард вилка | Laullon Fork
SmartGit
С домашней страницы:
Вы можете скачать его с их сайта .
Скачать
TortoiseGit
TortoiseSVN Git версия для пользователей Windows.
Скачать
QGit
Скачать
gitg
особенности
Скачать: релизы или источник
Gitbox
Скачать
Gity
На веб-сайте Gity не так много информации, но на скриншотах он выглядит как многофункциональный OS X git gui с открытым исходным кодом.
Скачать или источник
Meld
Загрузки
Katana
Git GUI для OSX от Стива Декорте.
Бесплатно за 1 репозиторий, $ 25 за больше.
Скачать
Росток (ранее GitMac)
Ориентирован на то, чтобы сделать Git простым в использовании. Имеет встроенный пользовательский интерфейс Какао (Mac-like), быстрый просмотр репозитория, клонирование, push / pull, ветвление / слияние, визуальные различия, удаленные ветки, легкий доступ к терминалу и многое другое.
Делая наиболее часто используемые действия Git интуитивно понятными и простыми для выполнения, Sprout (ранее GitMac) делает Git удобным для пользователя. Совместимый с большинством рабочих процессов Git, Sprout отлично подходит для дизайнеров и разработчиков, для совместной работы в команде, а также для опытных и начинающих пользователей.
Скачать | Веб-сайт
башня
Многофункциональный графический интерфейс Git для Mac OSX. 30-дневная бесплатная пробная версия, 59 долларов США за однопользовательскую лицензию.
Скачать | Веб-сайт
EGit
Скачать | Веб-сайт
Git Extensions
Open Source для Windows - устанавливает все необходимое для работы с Git в одном пакете, прост в использовании.
Скачать
Большое спасибо dbr за то, что разработали git gui.
SourceTree
SourceTree - это бесплатный Mac-клиент для Git, Mercurial и SVN. Созданный Atlassian, разработчиками BitBucket, он одинаково хорошо работает с любой системой VC, которая позволяет вам освоить один инструмент для использования со всеми вашими проектами, однако они контролируются версиями. Функционально и БЕСПЛАТНО.
Скачать | Веб-сайт
источник
Что ж, несмотря на то, что вы просили, чтобы мы не «просто» ссылались на другие ресурсы, это довольно глупо, когда уже существует выросший (и растущий) ресурс сообщества, который действительно весьма хорош: Git Community Book . Серьезно, эти 20+ вопросов в вопросе будут совсем не краткими и непротиворечивыми. Книга сообщества Git доступна как в формате HTML, так и в формате PDF, и содержит ответы на многие ваши вопросы с четкими, хорошо отформатированными и рецензированными ответами, а также в формате, позволяющем сразу перейти к вашей проблеме.
Увы, если мой пост действительно расстроит вас, я его удалю. Просто скажи так.
источник
Как настроить его для игнорирования файлов:
Возможность заставить git игнорировать файлы, которые вы не хотите отслеживать, очень полезна.
Чтобы игнорировать файл или набор файлов, вы предоставляете шаблон. Синтаксис шаблона для git довольно простой, но мощный. Это применимо ко всем трем различным файлам, которые я упомяну ниже.
Отличный пример из справочной страницы gitignore (5) :
Как правило, есть три разных способа игнорировать неотслеживаемые файлы.
1) Игнорировать для всех пользователей репозитория:
Добавьте файл с именем .gitignore в корень вашей рабочей копии.
Отредактируйте .gitignore, чтобы он соответствовал вашим предпочтениям, для которых файлы следует / не следует игнорировать.
и совершить, когда вы закончите.
2) Игнорировать только вашу копию хранилища:
Добавьте / отредактируйте файл $ GIT_DIR / info / exclude в вашей рабочей копии с вашими предпочтительными шаблонами.
Пример: моя рабочая копия ~ / src / project1, поэтому я бы отредактировал ~ / src / project1 / .git / info / exclude
Вы сделали!
3) Игнорировать во всех ситуациях в вашей системе:
Глобальные шаблоны игнорирования для вашей системы могут находиться в файле с именем, которое вы когда-либо пожелаете.
Мой лично называется ~ / .gitglobalignore
Затем я могу сообщить git об этом файле, отредактировав мой файл ~ / .gitconfig следующей строкой:
Вы сделали!
Я считаю, что справочная страница gitignore является лучшим источником дополнительной информации.
источник
Как вы 'помечаете' определенный набор ревизий?
Как вы «помечаете» «тег» или «выпускаете» определенный набор ревизий для определенного набора файлов, чтобы вы всегда могли получить его позже?
Используя
git tag
команду.Чтобы просто «пометить» текущую ревизию, вы просто запустите ..
Чтобы отобразить текущие теги, просто запустите
git tag
без аргументов или-l
(в нижнем регистре L):Чтобы удалить тег, вы используете
-d
флаг:Чтобы пометить определенный (предыдущий) коммит, вы просто делаете ..
Например:
Примечание: по умолчанию git создает «легкий» тег (в основном ссылка на конкретную ревизию). «Правильный» способ - использовать
-a
флаг. Это запустит ваш редактор, запрашивающий сообщение тега (идентично запросу сообщения фиксации, вы также можете использовать-m
флаг для предоставления сообщения тега в командной строке). Использование аннотированного тега создает объект со своим собственным идентификатором, датой, тегом (автор) и, необязательно, подписью GPG (используя-s
тег). Для получения дополнительной информации об этом, см. Этот постА для вывода списка тегов с аннотациями используйте
-n1
флаг, чтобы показать 1 строку каждого сообщения тега (-n245
чтобы показать первые 245 строк каждой аннотации и т. Д.):Для получения дополнительной информации см. Страницу руководства git-tag (1)
источник
git tag tagname revision_SHA1
Пример рабочего процесса с GIT.
Git чрезвычайно гибок и хорошо приспосабливается к любому рабочему процессу, но отсутствие принудительного применения определенного рабочего процесса может иметь отрицательный эффект, затрудняя понимание того, что вы можете сделать с помощью git, помимо линейного рабочего процесса «резервного копирования», и насколько полезным может быть, например, ветвление ,
Этот пост в блоге объясняет очень простой, но эффективный рабочий процесс, который действительно легко настроить с помощью git.
цитата из поста блога: мы считаем origin / master основной ветвью, где исходный код HEAD всегда отражает состояние готовности к работе:
Рабочий процесс стал достаточно популярным, чтобы создать проект, который реализует этот рабочий процесс: git-flow
Хорошая иллюстрация простого рабочего процесса, в котором вы вносите все свои изменения в разработку и нажимаете только на освоение, когда код находится в рабочем состоянии:
Теперь предположим, что вы хотите работать над новой функцией или над рефакторингом модуля. Вы можете создать новую ветвь, которую мы могли бы назвать «функциональной» веткой, что займет некоторое время и может привести к поломке кода. Как только ваша функция станет «достаточно стабильной» и вы захотите «приблизить» ее к производству, вы включите свою ветку в разработку. Когда после слияния все ошибки разбираются, а ваш код успешно проходит все тесты, вы вносите свои изменения в master.
Во время всего этого процесса вы обнаружите ужасную ошибку безопасности, которая должна быть исправлена немедленно. У вас может быть ветвь под названием «Исправления», которая вносит изменения, которые быстрее возвращаются в производственную среду, чем обычная ветвь «разработки».
Здесь у вас есть иллюстрация того, как может выглядеть этот рабочий процесс / исправление / разработка / производство (хорошо объяснено в сообщении в блоге, и я повторяю, сообщение в блоге объясняет весь процесс гораздо более подробно и намного лучше, чем я) ,
источник
Вот копия поста PJ Hyett, так как он больше не доступен:
источник
./foo
но путь для клона get не указан, куда вы обращаетесь?Как установить Git
В Windows:
Установить msysgit
Есть несколько загрузок:
Это также устанавливает оболочку Cygwin bash, так что вы можете использовать
git
более приятную оболочку (чем cmd.exe), а также включать git-gui (доступный черезgit gui
команду или черезStart > All Programs > Git
меню)Mac OS X
Используйте git-osx-installer , или вы также можете установить из исходного кода
Через менеджер пакетов
Установите
git
с помощью вашего собственного менеджера пакетов. Например, в Debian (или Ubuntu):Или в Mac OS X через MacPorts :
... или финк:
... или доморощенный :
В дистрибутивах на основе Red Hat, таких как Fedora:
В Cygwin пакет Git находится в разделе «devel»
Из источника (Mac OS X / Linux / BSD / и т. Д.)
В Mac OS X, если у вас установлены Developer Tools, вы можете очень легко скомпилировать Git из исходного кода. Загрузите последнюю версию Git в виде
.tar.bz
или.tar.gz
с http://git-scm.com/ и распакуйте ее (дважды щелкните в Finder)На Linux / BSD / и т. Д. это должно быть примерно так же. Например, в Debian (и Ubuntu) вам нужно установить
build-essential
пакет черезapt
.Затем в Терминале,
cd
куда вы извлекли файлы (Запускcd ~/Downloads/git*/
должен работать), а затем запустите ..Это установит Git в место по умолчанию (
/usr/local
- такgit
будет в/usr/local/bin/git
)Вам будет предложено ввести пароль (для
sudo
), чтобы он мог писать в/usr/local/
каталог, доступ к которому имеет только «root» пользователь, поэтому sudo требуется!Если вы хотите установить его где-то отдельно (чтобы файлы Git не смешивались с другими инструментами), используйте
--prefix
команду configure:Это установит
git
двоичный файл в/usr/local/bin/gitpath/bin/git
- так что вам не нужно вводить его каждый раз, вы должны добавить в свой$PATH
, добавив следующую строку в ваш~/.profile
:Если у вас нет доступа к sudo, вы можете использовать его
--prefix=/Users/myusername/bin
и установить в свой домашний каталог. Не забудьте добавить~/bin/
в$PATH
Сценарий x-git-update-to-latest-version автоматизирует многое из этого:
источник
yum install git
. Для графического интерфейса запускаyum install git-gui
.sudo port install git-core+bash_completion+doc
fink self-update
должен помочьGit Reset
Скажем, вы делаете тягу, объединяете ее с вашим кодом и решаете, что вам это не нравится. Используйте git-log или tig и найдите хеш, куда вы хотите вернуться (вероятно, ваш последний коммит перед извлечением / объединением), скопируйте хеш и выполните:
Вместо хеша вы можете использовать HEAD ^ в качестве ярлыка для предыдущего коммита.
источник
git reset
добрая случайнаяgit add
Как настроить общий командный репозиторий?
Как настроить нормальный репозиторий описано здесь - но как настроить командный репозиторий, который каждый может тянуть и толкать от и до?
Использование общей файловой системы NFS
Предполагая, что ваша команда уже имеет, например, членство в общей группе, которое можно использовать.
Чтобы начать использовать этот репозиторий, проще всего начать с локального репозитория, который вы уже использовали:
Другие могут теперь клонировать это и начать работать:
Использование SSH
Настройте учетную запись пользователя на целевом сервере. Используете ли вы учетную запись без пароля, учетную запись с паролем, или использование
authorized_keys
действительно зависит от вашего требуемого уровня безопасности. Посмотрите на Конфигурирование Git по SSH для получения дополнительной информации.Если все разработчики используют одну и ту же учетную запись для доступа к этому общему репозиторию, вам не нужно использовать
--shared
опцию, описанную выше.После запуска хранилища таким же образом, как описано выше, вы выполняете начальную загрузку следующим образом:
Видите сходство с вышесказанным? Кроме того, может произойти только то, что SSH запрашивает пароль, если у учетной записи есть пароль. Если вы получаете это приглашение для учетной записи без пароля, сервер SSH, вероятно, отключен
PermitEmptyPasswords
.Клонирование теперь выглядит так:
источник
git status
твой друг, используй его часто. Хорошо для ответов на такие вопросы, как:В отличие, скажем
svn status
,git status
работает практически мгновенно даже на крупных проектах. Я часто находил это обнадеживающим, когда учил git использовать его часто, чтобы убедиться, что моя ментальная модель происходящего была точной. Сейчас я в основном использую его, чтобы напомнить себе, что я изменил со времени моего последнего коммита.Очевидно, это гораздо полезнее, если ваш .gitignore разумно настроен.
источник
Зафиксировать изменения
После того, как вы отредактировали файл, вам нужно зафиксировать свои изменения в git. Когда вы выполняете эту команду, она запрашивает сообщение о коммите - просто текст, который сообщает всем, что вы изменили.
Зафиксирует файл main.c в каталоге ./source/
сохранит все измененные файлы (но не новые, они должны быть добавлены в индекс с помощью git-add). Если вы хотите зафиксировать только определенные файлы, вам нужно сначала поставить их с помощью git-add, а затем зафиксировать без флага -a.
Фиксация изменяет только ваш локальный репозиторий, но не удаленные репозитории. Если вы хотите отправить коммиты в удаленный репозиторий, вам нужно сделать push.
Для кого-то из CVS или SVN это изменение, поскольку фиксация в центральном репозитории теперь требует двух шагов.
источник
Как вы ветвитесь?
Ветвь по умолчанию в git-репозитории называется
master
.Для создания новой ветки используйте
Чтобы увидеть список всех веток в текущем репозитории, введите
Если вы хотите переключиться на другую ветку, вы можете использовать
Создать новую ветку и перейти на нее за один шаг
Чтобы удалить ветку, используйте
Чтобы создать ветку с изменениями из текущей ветки, выполните
источник
Получение последней версии кода
Это в значительной степени охватывает все случаи получения последней копии кода из удаленного хранилища.
источник
Книга Pro Git , безусловно, моя любимая, особенно для начинающих.
источник
Git Magic - это все, что вам когда-либо понадобится. Гарантировано или ваши деньги обратно!
источник
Как вы сливаете ветви?
Если вы хотите объединить ветку (например,
master
сrelease
), убедитесь, что ваша текущая ветвь является целевой ветвью, в которую вы хотите слиться (используйтеgit branch
или,git status
чтобы увидеть текущую ветку).Тогда используйте
(где
master
имя ветви, которую вы хотите объединить с текущей веткой).Если есть какие-либо конфликты, вы можете использовать
чтобы увидеть ожидающие конфликты, вы должны разрешить.
источник
Я также нашел Git Internals очень полезным. Он написан Скоттом Чаконом (автором Pro Git и сопровождающим Git Community Book). Что мне нравится в Git Internals, так это то , что он сначала фокусируется на концепциях, а затем на командах , и, поскольку он составляет ~ 100 маленьких страниц, он быстро усваивается.
источник
Как вы видите историю изменений в файле?
источник
Как отследить удаленные ветки
Предполагая, что существует удаленный репозиторий, из которого вы клонировали свой локальный репозиторий, а также предполагая, что в этом удаленном репозитории есть ветвь с именем 'some_branch', вот как это отследить локально:
источник
git remote show REMOTENAME
Хорошей статьей для понимания того, как работает Git, является «Притча о Git» . Очень рекомендуется!
источник
Как вы сравниваете две ревизии файла или ваш текущий файл и предыдущую ревизию?
Команда сравнения есть
git diff
.Для сравнения 2 ревизий файла:
Различает commit1 против commit2; если вы измените порядок, то файлы будут отображаться наоборот, что может не соответствовать вашим ожиданиям ...
Чтобы сравнить текущий промежуточный файл с хранилищем:
Чтобы сравнить текущий неподготовленный файл с хранилищем:
источник
Почему еще один Howto? В сети есть действительно хорошие, например, руководство по git, которое идеально подходит для начала. У него есть хорошие ссылки, включая Git Book в которую можно внести свой вклад (размещенный на git hub) и который идеально подходит для этой коллективной задачи.
На stackoverflow я бы очень хотел увидеть ваши любимые трюки!
Здесь
git stash
объясняется мой, который я обнаружил только недавно, который позволяет сохранить текущую работу и перейти в другую ветку.РЕДАКТИРОВАТЬ: как и в предыдущем посте, если вы действительно предпочитаете формат stackoverlow с постами в вики, я удалю этот ответ
источник
Консольный интерфейс - Tig
Установка:
Применение
Находясь в репозитории git, введите «tig», чтобы просмотреть интерактивный журнал, нажмите «enter» в любом журнале, чтобы увидеть больше информации о нем. час для справки, в которой перечислены основные функции.
пустяки
«Tig» - это «Git» задом наперед.
источник
Как я могу создать ветку в удаленном хранилище?
Предполагая, что вы клонировали свой удаленный репозиторий из какого-то одного удаленного репозитория.
источник
git push origin name_of_branch
и ветка уже будет создана на вашем пультеname_of_branch
- это локальное имя, второе - (желаемое) имя удаленной ветви, так что это может быть,local_name_of_branch:remote_name_of_branch
если вы хотите, чтобы имена отличались. Если вы хотите, чтобы они были такими же, вы все равно должны указать это так: b / c git не предполагает, что вы хотите, чтобы имя было таким же, если только вы не скажете это (есть и другие способы сделать это, однако)Я начал с официального урока Git . Я думаю, что это достаточно практично для начинающих (я был и все еще являюсь новичком, по вашему определению! Я с трудом разбираюсь в make-файлах, я только немного играл с Apache Subversion и т. Д.).
источник
Как удалить ветку в удаленном репозитории?
Выполните push в вашем пульте, используя
:
перед именем ветвибыть
origin
именем вашего пульта иmybranchname
название филиала собирается быть удаленыhttp://help.github.com/remotes/
источник
Нажмите и потяните изменения
Упрощенно, просто делай
git push
иgit pull
. Изменения объединяются, и если есть конфликт, git сообщит вам, и вы можете разрешить его вручную.Когда вы впервые отправляете в удаленный репозиторий, вам нужно выполнить
git push origin master
команду (master - главная ветвь). С тех пор вы просто делаетеgit push
.Нажмите теги с
git push --tags
.источник
Проверка кода
Сначала перейдите в пустой каталог, используйте «git init», чтобы сделать его хранилищем, а затем клонируйте удаленный репозиторий в свой.
Откуда вы изначально клонировали, откуда по умолчанию будет тянуть git pull.
источник
Gity: http://macendeavor.com/gity
источник