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 Extensions - пакет для Windows, включает дружественный графический интерфейс
  • Любые другие общие задачи, которые должен знать новичок?
  • Как эффективно работать с репозиторием Subversion, установленным в качестве источника управления исходным кодом?

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

Копаться в Git

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

24.11.2008 23:50:29
30 ОТВЕТОВ

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

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

59
25.11.2008 01:17:14
Если вы не используете git, потому что это DVCS, зачем вообще использовать git? Этот вопрос глуп и отвлекает ресурсы, которые могут быть потрачены на другие цели для достижения сомнительной цели.
Randal Schwartz 15.03.2010 04:20:51

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

На stackoverflow я бы очень хотел увидеть ваши любимые трюки!

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

РЕДАКТИРОВАТЬ: как и в предыдущем посте, если вы действительно предпочитаете формат stackoverlow с постами в вики, я удалю этот ответ

9
25.11.2008 00:52:48
Нет, не удаляйте. Ваш ответ совершенно верен - и указывать другим на хорошие ресурсы не так уж плохо. Я также хотел бы, чтобы самые распространенные операции были перечислены здесь, но это немного работы, и я не ожидаю, что другие сделают это. Я буду делать это со временем, пока я учусь, и это будет для меня ссылкой.
Adam Davis 25.11.2008 01:02:28

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

После того, как вы отредактировали файл, вам нужно зафиксировать свои изменения в 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.

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

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

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

27
29.08.2009 01:40:47

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

18
25.11.2008 01:02:49
Вздох, я хочу вернуть свои деньги. Глючное программное обеспечение (msysGit) с неполным руководством (GitMagic) == часов работы, которые вряд ли бесплатны
SamGoody 23.04.2009 14:30:13

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

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

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

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

Отличный пример из справочной страницы gitignore (5) :

$ 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 в вашей рабочей копии с вашими предпочтительными шаблонами.

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

Вы сделали!

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

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

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

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

core.excludesfile = ~/.gitglobalignore

Вы сделали!

Я считаю, что справочная страница gitignore является лучшим источником дополнительной информации.

56
25.11.2008 01:19:59
Может ли кто-нибудь добавить одну небольшую, но важную деталь в этот пост? Это работает только для файлов, которые не отслеживаются git. Чтобы «отследить» файл, но оставить его в файловой системе, вам нужно «git rm --cached filename». Спасибо!
Nikita Rybak 5.07.2010 22:20:06
Я просто хочу отметить, что добавление строки core.excludesfile у меня не сработало. Мне пришлось [git config --global core.excludesfile ~ / .gitglobalignore], чтобы это работало.
Coding District 23.08.2010 06:32:36
Сейчас на Github есть проект под названием gitignore, в котором есть файлы gitignore для различных языков и сред разработки: github.com/github/gitignore
Ryan Lundy 24.03.2011 19:18:01

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

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

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

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

28
17.02.2009 00:30:58

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

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- если это не репозиторий, он выдаст сообщение «fatal: Not the git repository»

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

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

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

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

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

118
19.03.2011 22:48:26
Git делает свои объекты доступными только для чтения, поэтому вы захотите rm -rf .gitстереть базу данных git.
Josh Lee 13.10.2009 01:16:43
Обычно файл .gitignore необходимо создавать во время обычного использования, чтобы указать файлы / деревья, которые следует игнорировать при управлении версиями, поэтому, чтобы завершить последнюю часть «de-gitting», помимо удаления .git, вам также необходимо удалить. Gitignore файл. :)
Monoman 22.07.2010 19:41:26
Как насчет голых репозиториев? Они как-то «централизованы», и я думаю, что они полезны для многих проектов, которые нуждаются в некоторой централизации (например, проекты, разработанные многими людьми)
peoro 18.01.2011 08:28:38
WRT работает, git statusчтобы убедиться, что вы находитесь в репозитории: здесь есть одна ошибка: если у вас установлена ​​переменная окружения $ GIT_DIR в вашей текущей оболочке, git проигнорирует ваше текущее местоположение и будет использовать репозиторий в $ GIT_DIR. Я должен знать, я потерял час на это вчера.
sanmiguel 1.03.2012 12:17:03

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

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

Используя 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)

47
6.04.2009 13:43:08
git tag не создает теги по умолчанию, только легкие ссылки. Вы должны использовать -a или -s для создания объекта тега (который будут использовать такие вещи, как description
Dustin 1.12.2008 08:48:06
Ах, интересно. Спасибо, я обновил ответ, чтобы отразить это
dbr 1.12.2008 13:00:02
А как пометить ранее зафиксированную ревизию? (извините, это слишком долго, поэтому я пролистал, я что-то пропустил?)
hasen 6.04.2009 04:03:33
hasen j: добавлена ​​информация для ответа, в основномgit tag tagname revision_SHA1
dbr 6.04.2009 13:44:05
Чтобы вставить теги в удаленное хранилище, добавьте --tags при использовании git push (информация из справочной области github).
Héctor Ramos 23.12.2009 12:07:46

Консольный интерфейс - Tig

Монтаж:

apt-get install tig

Применение

Находясь в репозитории git, введите «tig», чтобы просмотреть интерактивный журнал, нажмите «enter» в любом журнале, чтобы увидеть больше информации о нем. h для справки, в которой перечислены основные функции.

пустяки

«Tig» - это «Git» задом наперед.

9
27.11.2008 14:21:40
Разве это не должен быть «пользовательский интерфейс консоли», так как «консоль» и «графический» немного .. противоречивы?
dbr 27.11.2008 13:29:02
это намного более наглядно, чем git-log ... тем не менее, это намного более наглядно ...
Dean Rather 27.11.2008 14:21:08

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

С домашней страницы:

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

Вы можете скачать его с их сайта .

Скачать


TortoiseGit

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

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

Скачать


QGit

QGit - это средство просмотра графического интерфейса пользователя git, построенное на Qt / C ++.

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

Скачать


gitg

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

особенности

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

Скачать: релизы или источник


Gitbox

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

Повседневные операции просты: сценические и нестандартные изменения с флажком. Зафиксируйте, вытяните, объедините и нажмите одним щелчком мыши. Дважды щелкните изменение, чтобы отобразить разницу с FileMerge.app.

Скачать


Gity

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

Скачать или источник


Meld

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

Загрузки


Katana

Git GUI для OSX от Стива Декорте.

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

Бесплатно за 1 репозиторий, $ 25 за больше.

Скачать


Росток (ранее GitMac)

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

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

Скачать | Веб-сайт


башня

Многофункциональный графический интерфейс Git для Mac OSX. 30-дневная бесплатная пробная версия, 59 долларов США за однопользовательскую лицензию.

Скачать | Веб-сайт


EGit

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

Проект EGit реализует инструментарий Eclipse поверх реализации Git для JGit Java.

Скачать | Веб-сайт


Git Extensions

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

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

Скачать

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


SourceTree

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

Экспертно-готовый и функциональный пакет для начинающих и опытных пользователей:

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

Скачать | Веб-сайт


110
23.05.2017 11:33:26
У вас есть несколько хороших ответов (особенно gitcasts и push / pull answer), но могу ли я порекомендовать разбить его на отдельные ответы? Вопросник попросил вас «не пытаться объединить кучу информации в один ответ»!
dbr 27.11.2008 13:08:34
Может быть, вы должны добавить TortoiseGit code.google.com/p/tortoisegit в свой список, для Windows Gitters ...
kret 19.11.2009 10:33:36
Gity ( macendeavor.com/gity ) является опцией, но все еще находится в разработке (OS X)
Dave DeLong 27.01.2010 06:04:48
Tower («Самый мощный клиент Git для Mac») - прекрасный новый клиент для Git.
rubiii 14.02.2011 01:37:36
5
27.11.2008 13:21:59

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

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

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

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

7
27.11.2008 13:21:13

Как установить 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 install git

... или Homebrew :

brew install git

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

yum install git

В 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*/должен работать), а затем запустите ..

./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

Скрипт x-git-update-to-latest-version автоматизирует многое из этого:

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

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

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

33
24.03.2011 19:26:37
На Fedora: yum install git. Для графического интерфейса запуска yum install git-gui.
Cristian Ciupitu 12.09.2009 02:17:12
На Mac,sudo port install git-core+bash_completion+doc
Singletoned 9.10.2009 11:08:21
Я скачал fink для mac, но при запуске fink install git выдает ошибку: «Не удалось: пакет не найден для спецификации« git »!»
quano 17.12.2009 01:17:55
@quano Это должно быть там, pdb.finkproject.org/pdb/package.php/git - проверьте, что Fink правильно обновлен - я думаю, что запуск fink self-updateдолжен помочь
dbr 20.12.2009 17:35:21

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^
32
17.03.2010 07:22:49
Это аналог возврата в большинстве других централизованных систем контроля версий.
Jeremy Wall 29.08.2009 01:52:02
«$ git-reset --hard HEAD ^» должно быть сокращением для родителя заголовка (т. е. предыдущего состояния перед последней фиксацией).
Ben Page 16.12.2009 00:42:54
просто старая git resetдобрая должна быть ненадежной случайностьgit add
slf 26.03.2010 02:43:08

Проверка кода

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

git clone user@host.com:/dir/to/repo

Откуда вы изначально клонировали, откуда по умолчанию будет тянуть git pull.

7
27.11.2008 14:27:51
Я думаю, что клон делает шаг инициализации для вас, устраняя необходимость запуска инициализации в первую очередь. git init в основном предназначен для создания первого репозитория или для специальных конфигураций с несколькими удаленными устройствами, которые вы хотите настроить отличными от стандартного клона.
Jeremy Wall 29.08.2009 01:51:25

WRT хорошие графические интерфейсы / интерфейсы, вы также можете проверить qgit, который является кроссплатформенным (Linux / Win32) средством просмотра репозитория для Git и может также использоваться в качестве высокоуровневого интерфейса для наиболее распространенных операций Git, фактически это может быть легко улучшается с помощью так называемых «настраиваемых действий», так что пользователи могут предоставлять настраиваемые действия.

5
29.08.2010 00:16:29

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

8
29.08.2010 00:15:14

Как вы ветвитесь?

Ветвь по умолчанию в репозитории 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>
27
15.05.2010 09:49:49
вы должны упомянуть ярлык git checkout -b <имя-ветви>, который создает ветку и переключается на нее за один шаг. Вероятно, это наиболее распространенный вариант использования для начинающего и даже продвинутого пользователя git.
Jeremy Wall 29.08.2009 01:46:34

Как вы сливаете ветви?

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

Тогда используйте

git merge master

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

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

git diff

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

16
3.05.2009 09:08:01
Существует git mergetool, который выполняет трехстороннее сравнение с вашим любимым инструментом (gvimdiff, kdiff3 или еще чем-то)
Dave Vogt 26.10.2009 13:04:39

Я нашел этот пост очень полезным для начала. Мне все еще нужно прочитать книгу и другие ресурсы, но пост был полезен, как говорится в заголовке, «концептуальное понимание git». Я также рекомендую пройти курс Git & GitHub, предлагаемый на RubyLearning .

4
21.05.2009 00:50:09
Не совсем цель вопроса с постерами, поскольку он хочет, чтобы этот вопрос работал в качестве единого окна для новых пользователей git.
Jeremy Wall 29.08.2009 01:45:07

Получение последней версии кода

$ 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

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

21
29.08.2009 01:41:42

Серьезно добавьте ссылку, указанную в ответе Тима, в Git-сервере «Настройка переполнения стека» с Msysgit в Windows .

Он безупречно рассказал мне, как настроить Git на Windows с помощью msysgit , и это невероятно подробная статья.

5
23.05.2017 11:47:36

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

Предполагая, что существует удаленный репозиторий, из которого вы клонировали свой локальный репозиторий, а также предполагая, что в этом удаленном репозитории есть ветвь с именем '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
12
19.10.2009 20:02:18
Кажется, что в git 1.7 удаленные ветви автоматически отслеживаются, когда вы создаете из них локальную ветку. Я не знаю, с какой версии это поведение началось.
Doppelganger 29.07.2010 19:50:36
На самом деле, вы можете перечислить все удаленные ветви с помощьюgit remote show REMOTENAME
Felipe Sabino 13.05.2011 10:47:28

Как я могу создать ветку в удаленном хранилище?

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

# 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
8
19.10.2009 20:05:56
почему name_of_branch: name_of_branch?
Seun Osewa 15.03.2010 13:18:07
Да, почему? Насколько я знаю, вам нужно только, git push origin name_of_branchи ветка уже будет создана на вашем пульте
Felipe Sabino 13.05.2011 10:51:11
первое name_of_branch- это локальное имя, второе - (желаемое) имя удаленной ветви, так что это может быть, local_name_of_branch:remote_name_of_branchесли вы хотите, чтобы имена отличались. Если вы хотите, чтобы они были такими же, вы все равно должны указать это так: b / c git не делает предположения, что вы хотите, чтобы имя было таким же, если вы не скажете это так (есть и другие способы сделать это, однако)
johnny 18.08.2011 16:00:08

Я также нашел Git Internals очень полезным. Он написан Скоттом Чаконом (автором Pro Git и сопровождающим Git Community Book). Что мне нравится в Git Internals, так это то , что он сначала фокусируется на концепциях, а затем на командах , и, поскольку он составляет ~ 100 маленьких страниц, он быстро усваивается.

16
31.10.2009 17:21:09

Хорошей статьей для понимания того, как работает Git, является «Притча о Git» . Очень рекомендуется!

11
9.08.2010 14:10:44

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

Команда сравнения есть git diff.

Для сравнения 2 ревизий файла:

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

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

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

$ git diff --staged <file_name>

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

$ git diff <file_name>
10
19.11.2009 11:21:41

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

git log -- filename
13
22.01.2010 03:59:11
7
27.03.2010 23:18:01

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

Git не сложно

23 ноября 2008 г.

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

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

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

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

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

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

$ git clone git@github.com:pjhyett/foo.git
# make your changes
$ git commit -a -m "my first commit"
$ git push

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

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

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

39
20.04.2010 20:02:59
В первом примере я вижу, что вы выбираете относительный путь, ./fooно путь для клона get не указан, куда вы обращаетесь?
JD Isaacks 10.01.2011 16:54:00