•  
  • 4
  •  
2

GIT для новичков: практическое использование

Рано или поздно разработчики приходят к тому, что появляется необходимость в использовании систем контроля версий. Как правило, на начальном этапе не все понимают принципы, по которым работают системы контроля версий, и у всех возникают однотипные вопросы.

Примечание: Ниже представлен список наиболее часто возникающих вопросов. Вы выбираете вопрос, ответ на который знаете, и пишете ответ. Не пишите ответ на несколько вопросов. Один вопрос — один ответ. Не копируйте ответы с других сайтов, если не позволяет лицензия. Проанализируйте и напишите ответ своими словами. Если вы видите неточность в ответе, напишите об этом в комментариях или исправьте сами, если позволяет репутация.

Установка и настройка

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

  • Что такое локальный и удалённый репозитории?
  • Что такое коммит?
  • Как клонировать репозиторий с сервера?
  • Как сделать коммит?
  • Как синхронизировать изменения с сервером?
  • Как добавить файлы в систему контроля версий?
  • Как отменить нежелательный коммит?
  • Как просмотреть сделанные изменения?
  • Как сравнить две версии одного файла или текущего состояния с предыдущей версией?
  • Как посмотреть историю изменения файла или файлов?
  • Как обрабатываются бинарные файлы?
  • Как вы объединяете несколько изменений, сделанных с одним файлом, в одно время разными программистами?

Теги, ветки и релизы?

  • Что такое теги и релизы?
  • Как отметить ревизию тегои или релизом?
  • Как произвести перемещение релиза?
  • Как создать ветку?
  • Как объединять ветки?
  • Как объединять часть изменений одной ветки в другую ветку?
  • Как заменить последовательность коммитов на другую?

Другое

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

Если кто-то ответит на вопрос, то вопрос и ответ будут связаны ссылкой. Если ответа пока нет, то вопрос будет написан простым текстом.

Время от времени ссылки на ответы в данном вопросе будут обновляться, чтобы поддерживать информацию в актуальном состоянии. Поехали.

git, tutorials, version-control, cvs.
спросил 920 дней назад Аватор пользователя Alexandr Alexandr
313 15
изменил 890 дней назад Аватор пользователя tc tc
718 15
300

5 ответов:

    •  
    • 1
    •  

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

    GIT репозиторий из себя директорию в которой находятся субдиректория .git, в которой и хранится вся служебная информация.

    Такая концепция и отличает распределённые системы контроля версий от централизованных (subversion), где репозиторий находится на удалённом сервере. Поэтому приходится делать svn checkout в директорию с рабочей копией из удалённого репозитория. В gitT же, ваша рабочая копия и является самим репозиторием.

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

    Например:

    cd ~/github/cool_project/

    git init

    В директории cool_project создастся скрытая субдиректория .git

    Чтобы создать новый проект, достаточно создать новую директорию и произвести инициализацию git репозитория.

    Например:

    cd ~/github/

    mkdir my_second_project && cd my_second_project

    git init

    Для проверки созданного git репозитория нужно выполнить команду git status. Если репозиторий не был создан, то в ответ вы получите fatal: Not a git repository

    Если вы захотите , чтобы проект больше не отслеживался системой контроля версий, то достаточно удалить .git директорию:

    cd ~/github/my_second_project/

    rm -r .git/

    Внимание! Так вы удалите все теги, ветки, всю историю изменения файлов, все служебные файлы git, но останутся все файлы в последних редакциях!

    Вики-ответ
    изменил 904 дня назад Аватор пользователя Alexandr Alexandr
    313 15
    •  
    • 0
    •  

    Могу посоветовать хорошие ссылки:

    Вот http://leonid.shevtsov.me/22-07-2009/perenos-svn-repozitariya-v-git/ и вот http://habrahabr.ru/blogs/development_tools/62557/

    Вторая ссылка мне показалась более объёмной. И безумно полезной :)

    ответил 903 дня назад Аватор пользователя ukko ukko
    50 3
    •  
    • 0
    •  

    Как настроить git для игнорирования файлов, которые не должны отслеживаться?

    Существует несколько способов сделать так, чтобы git не отслеживал определённые файлы.

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

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

      Отредактируйте файл .gitignore, добавив расширения для файлов, которые вы бы не хотели отслеживать.

      Добавьте .gitignore в индекс для отслеживания и сделайте коммит.

      git add .

      git commit

    2. Игнорирование файлов только в вашей копии репозитория

      Добавьте или отредактируйте файл $GIT_DIR/info/excludeв своей рабочей копии, добавив или изменив шаблоны для игнорирования, и сохраните изменения. Например:

      vim ~/github/cool_project/.git/info/exclude

    3. Глобальное игнорирование во всех репозиториях в вашей системе.

      Для этого вам необходимо создать файл с паттернами для игнорирования в своей домашней директории. Например: ~/.gitignore

      Далее необходимо указать в своём ~/.gitconfig путь к созданному файлу.

      core.excludesfile = ~/.gitignore
      Готово!
    Паттерны (шаблоны) для игнорирования

    Файлы шаблонов для игнорирования юмеют очень простой синтаксис:

    
    # Строки, начинающиеся с '#' считаются комментарием.
    # Игнорировать любой файл с именем foo.txt.
    foo.txt
    # Игнорировать html файлы,
    *.html *. html
    # Кроме foo.html который включается в индекс вручную.
    !foo.html ! foo.html
    # Игнорировать файлы с расширением *.a и *.o
    *.[oa] 
    
    
    ответил 890 дней назад Аватор пользователя tc tc
    718 15
    изменил 890 дней назад Аватор пользователя tc tc
    718 15
    •  
    • 0
    •  

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

    
    git branch local_branch_name origin/remote_branch_name
    git checkout local_branch_name
    

    После такой не хитрой операции ваша локальная ветка loca_branch_name будет синхронизирована с удалённой веткой remote_branch_name.

    ответил 851 день назад Аватор пользователя tc tc
    718 15
    •  
    • 0
    •  

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

    Опубликовать или удалить локальную ветку в удалённом репозитории очень просто с помощью команды push, которая имеет в общем виде такой синтаксис:

    git push нуд нлв:нув 

    • нуд — название удалённого репозитория
    • нлв — название локальной ветки
    • нув — название удалённой ветки

    Пример:

    git push origin master:master — в удаленную ветку master репозитария origin ветки локальной ветки master.
    
    

    Удаление удалённой ветки:

    git push origin :experimental — в удаленном репозитарии origin удалить ветку experimental.
    
    
    ответил 851 день назад Аватор пользователя tc tc
    718 15
    изменил 851 день назад Аватор пользователя tc tc
    718 15
Чтобы написать ответ, вы должны авторизироваться.