company_banner

Git и Visual Studio: как правильно приготовить

    Некоторое время назад мы анонсировали поддержку Git в Visual Studio и TFS. Для того, чтобы научиться правильно готовить все это, я сам прошел весь путь и хочу рассказать вам о нем. Ниже — о том, как использовать Git в VS.

    Что нужно:
    Зарегистрировать бесплатный аккаунт Visual Studio Online
    Скачать и установить Visual Studio 2012/2013
    На установленную студию поставить Visual Studio Tools for Git

    Git и TFS: история дружбы



    Git — распределенная система контроля версий, где каждый разработчик имеет копию всего репозитория, что означает отличную поддержку оффлайн-разработки. Еще у Git есть хорошая, понятная модель бранчинга, и разработчику не надо долго думать о том, как создавать локальные или приватные бранчи для удобства работы. В общем, с Git все хорошо, и на MSDN есть посвященный Git бранч.

    Проект Git в Team Foundation Service


    После регистрации в TFS на странице команд есть новая кнопка — New Team Project + Git. Пара кликов — и проект Git готов.





    Собственно, на этом все. :) Но это — верхушка айсберга, внутри интеграция гораздо сложнее. Дальше — про то, как из Visual Studio подключиться и поманипулировать нашим Git-проектом.

    Visual Studio и Git


    Делаю сразу оговорку — Visual Studio — не замена существующему UI Git. Visual Studio может быть заменой, но чаще используется в совокупности с другими средствами. Если Git был создан внутри TFS, то у разработчика появляются некоторые фичи, пришедшие из TFS, например, Work Items, но VS спокойно работает с любыми локальными репозиториями и заслуженными Git-деятелями в лице GitHub и BitBucket.

    Для подключения к Git-репозиторию достаточно нажать TEAM | Connect to Team Foundation Server.



    Откроется Team Explorer. Как видите, у меня уже есть склонированный (с GitHub) репозиторий, и тут же — репозиторий TFS. Для клонирования нового репозитория Git можно нажать Clone и ввести данные подключения.



    Для подключения аккаунта Visual Studio Online нажмем Select Team Projects, выберем аккаунт и установим, какой репозиторий надо подтянуть к нам в VS.



    После подключения проектов выберем нужный и нажмем в контекстном меню кнопку Clone.





    На этом процесс клонирования закончен — в бранче Local Git Repositories в Team Explorer появится склонированный репозиторий. Повторюсь — с помощью Clone можно клонировать любой Git-репозиторий.

    Еще одна интересная фича интеграции Visual Studio и Git — это возможность создать новый проект и сразу добавить его в локальную систему контроля версий. Для этого при создании нового проекта в VS достаточно отметить Add to source control.





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



    Полезные функции на этой странице есть еще внутри Repository Settings — можно настроить .gitIgnore и .gitattributes.
    Дальше можно коммитить.



    Pull


    Чтобы сделать Pull и получить последние апдейты от команды, нужно перейти на Commits и нажать Fetch для того, чтобы сначала посмотреть, что там вообще придет (и есть ли чему придти).



    Все хорошо — нажмем Pull и получим последний апдейт. Дополнительные сведения можно найти тут — Pull changes from the team.

    Push


    C Push все просто — в том же окне Commits нажмем Push. Получим сообщение о том, что все хорошо. Почитать подробнее про Push можно здесь — Push your changes.



    Использование бранчей


    Для использования бранчей в Team Explorer выделена специальная секци Branches.



    После подключения к репозиторию доступна только master.



    Создадим новый бранч, нажав New Branch.





    Поскольку бранчи Git локальны до момента Push, новый бранч будет размещен в Unpublished Branches. Поменять бранч для коммитов можно на уже упоминавшейся выше странице Commits.



    Замерджить контент можно, нажав Merge и выбрав бранчи. Подробнее про бранчи и мерджи — Git Branching.



    Если в процессе мерджа или пулла возникнут конфликты, они тут же могут быть разрезолвены (самые простые, конечно).



    Для просмотра истории достаточно нажать View History в контекстном меню бранча.



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



    Многое из этого также доступно на портале TFS. Для того, чтобы перейти туда из VS, нужно на странице проекта в Team Explorer нажать Web Portal.



    Уже на портале можно изучить общее состояние репозитория…



    … отдельные коммиты…



    … и подробную информацию об этих коммитах.





    Резюме


    Мы кратко посмотрели на то, как выглядит очень простой процесс взаимодействия Visual Studio и Git. Как говорилось в самом начале, плод интеграции Git в Visual Studio — это не намек на то, что Visual Studio полностью заменит рабочий процесс. Но то, что одна из самых популярных IDE стала отлично поддерживать одну из самых популярных систем контроля версий — это, на мой взгляд, замечательный факт, и обязательно понравится тем, кто использует и то и другое.
    Microsoft
    711.22
    Microsoft — мировой лидер в области ПО и ИТ-услуг
    Share post

    Similar posts

    Comments 50

      +7
      Вообще очень печально, что VS начала обращать внимание на другие VSC лишь после того как одна из них начала мелькать везде и повсюду.
        0
        Причины данного, я думаю, понятны, и с ними не поспоришь. Я сам увлекаюсь Git в свободное время, и доволен, что в конечном счете VS подружили с Git. :)
          +6
          А я использую Hg и мне очень долго ещё придется грустить.
            0
            А что такого необходимого требуется от студии?
            Встроенные diff/merge можно настроить извне, например для git описано здесь: www.codewrecks.com/blog/index.php/2013/03/19/how-to-configure-diff-and-merge-tool-in-visual-studio-git-tools/
            Для остального внешние инструменты кажутся более подходящими.
              0
              Я думаю, что имелось в виду про интеграцию VS с Mercurial. Официальных решений сейчас нет. Те что есть, на больших проектах сильно тормозят
                0
                Ну поддержка у MS не ограничивается исключительно плагином к студии. Например развернуть в WIndows Azure можно лишь из репозитория Git и TFS.
                  +1
                  И это тоже проблема. Сам сталкивался на предыдущей работе.
                  А мой ответ был господину mihasic
                    0
                    Я его ответ вообще не понял как относится ко мне :)))
                    Поэтому решил вам дописать, что имел в виду не только интеграцию VS с Hg
                  0
                  Боюсь, и не будет: Mercurial Support in TFS: Declined
                    0
                    Очень громко матерюсь про себя.
                    Ну как можно было лучшую на сегодняшний день VSC не поддерживать…
          0
          Если бы у tfs online были такие же цены как у git, то я бы остался на tfs, конечно. В git любое серьёзное телодвижение надо делать через консоль, что я просто не перевариваю. Ещё VS довольно плохо разруливает конфликты версий при работе с GIT, в tfs с этим никогда за 5 лет работы проблем не было.
            0
            "..VS довольно плохо разруливает конфликты.." — зачем VS разруливать конфликты? мержем должен заниматься специальный инстумент, а не VS, для которой перенос строки — конфликт.
              0
              IDE — и есть спец. инструмент для полного цикла разработки. А ставить рядом 100500 утилит для простых операций — ну нафик.
                +2
                Да ну ладно! IDE — инструмент для полного цикла разработки?
                  +3
                  Ну если ваша «IDE» sublime или nodepade++, но, конечно, нет
                    –4
                    Ээээ… а что, бывают другие IDE?!
              +1
              Насколько я понимаю, Вы говорите о проектах на 5+ разработчиков, т.к на команды до 5 человек standalone TFS, как и VS Online TFS — бесплатны.
              –4
              Что бы я использовал этот чудовищный интерфейс 'Pending changes' когда у меня есть гит? да ни за что. Уж тогда я Turtoise установлю. (Да, меня просто достал этот диалог 'Included changes' в котором нельзя сделать исключения по маске)
                +4
                На самом деле, лучше вообще из консоли без всех этих как-будто бы удобных обёрток с миллионом лишних кнопочек и ненужных галочек.
                  +2
                  чем лучше?
                    0
                    Тем, что не приходится блуждать в миллионе окошек и кнопочек. Ты просто знаешь, что тебе надо, сразу набираешь нужные команды и получаешь результат.
                      0
                      Давайте ко быстренько скажите как:
                      — посмотреть список всех удаленных тегов
                      — выписать себе лишь удаленную ветку где присутствует нужный тег
                      — удалить удаленную ветку
                        0
                        Это я к тому, что я быстро вот так вот команды эти не вспомню(за исключением последней)
                        И с помощью GUI всё получается заметно быстрее сделать(я не говорю конкретно про VS)
                  0
                  хотелось бы увидеть тут комментарий в защиту этого диалога. Мне вот несколько раз в день приходится Exclude selected локальные коннекшн стринги, для этого мне еще нужно найти их в этом дереве (3 штуки в разных местах).
                  +3
                  Пытался использовать гит в VS, но если честно интерфейс очень не интуитивен, не смотря на что на картинках он выглядит очень красивым и удобным. Хотя в остальном постоянно пользуюсь VS и вполне доволен.
                    +2
                    К сожалению должен заметить один умалчиваемый со стороны мс факт. Мы две недели назад перешли на git под tfs и обнаружили один неприятный сюрприз — out-of-the-box отсутствует поддержка pull --rebase, конечно можно обойтись сторонними средствами или консолью, но например у нас некоторые разработчики начали вякать что tfs vc был куда более удобнее. Как всегда мс выплюнула сырой продукт без поддержки элементарно-минимального функционала.
                      0
                      А кто-то смотрел VS2013 Update 1? Там вроде улучшения в работе с git обещали
                      +1
                      А почему не тестировали перед переходом?
                        0
                        Будучи пользователем git достаточно длительное время для меня rebase был defacto стандартом. Но как я убедился, то что является стандартом для остальных, для мс таковым не является. А с другой стороны так задолбала нативная тэфэсная система управления версиями что проверка делалась не совсем детально.
                          0
                          Так не важно же, поддерживает rebase или нет. Прежде чем внедрять новую VCS нужно кому то протестировать новый workflow.
                      0
                      Git это хорошо, но будет ли нативная поддержка Hg? Все дополнения очень кривые…
                        0
                        Я так понимаю, что по SSH студия клонить репозитории не умеет?
                          +1
                          Если у меня есть VIsual Studio и Git, то зачем мне Visual Studio Online учётная запись?
                            +2
                            Извините, но правильно готовить Git (можно и без VS) нужно хотя бы вот так — GitExtensions.

                            А то у вас от всех этих свистелок и перделок встроенных в студию Solution Explorer все еще тормозит в 2013 версии.
                            Кстати те кто у нас работают с Git\TFS через студию — чаще всех других забываю закоммитить все файлы и обычно ломают проекты. Любой завалящийся внешний клиент не в курсе про замудренные структуры solution, и честно показывает что изменилось в рабочей копии, а студия вечно пытается мухлевать.
                            Единственное что правильно сделали — gitignore который покрывает большинство ненужных в репозитории файлов — За это большое спасибо.
                              0
                              только что столкнулся с проблемой .gitignore в VS:
                              **/_NCrunch_*

                              свободно подхватывается в GitExtensions и самом Git, но никак не видится студией
                                0
                                Хмм, у нас не сильно отличается — */_NCrunch_* и все работает.
                                Студия вроде его тоже не подхватывает, коллега вроде не жалуется. А какая конкретно проблема — гит игнорирует а студия нет?
                                  0
                                  У меня студия не подхватывает и тормозит постоянно обновляя 'Untracked Files'.
                                  Возможно, это еще как-то связано с самим проектом, т.к. я часто вижу OutOfMemory при операциях с Git из студии. Так, у некоторых коллег история изменений в принципе не открывается.

                                  А еще студия ооочень плохо воспринимает 'symbolic link' (также, когда .gitignore не срабатывает) — только это уже точно экзотика текущего проекта, от которой попробуем уйти в следующих релизах.
                              0
                              Планируется ли возможность интеграции с функцией Track Changes, как в VisualSVN? Это когда в редакторе слева на полях показываются изменения в рамках текущей рабочей сессии.

                                –12
                                Visual Studio — ересь!
                                  +1
                                  Подмодули git работают? Если нет, то когда планируется поддержка?
                                    0
                                    У нас в компании с подмодулями неведомые проблемы как в студии, так и в других инструментах (GitExtensions, SourceTree). Правда не у всех, сам пока не вникал, т.к. не столкнулся, но коллеги что работают с таким решением жалуются сильно.

                                    Проявляются как: 2 подмодуля из 3-х работают нормально, хотя все они по своей сути одинаковые и представляют из себя различные конфигурации под клиентов поверх основного продукта.
                                    0
                                    Чего-то может не понял, но Visual Studio Tools For Git требует VS2012, а для 2013-ой нет версии?
                                      0
                                      в 2013 встроенная поддержка
                                      0
                                      Не знаю зачем такая длинная инструкция, как-то без нее разобрался. В студии удобно только пулл и пуш делать для всего остального — Git Extensions.
                                        0
                                        Везде примеры начинаются с «Клонируйте репозиторий». Есть у меня локальный проект, которого ещё нигде нет. Как его опубликовать на сервере — только с помощью командной строки? Мышетыкательного способа нет?
                                          +1
                                          Откройте для себя SourceTree
                                            0
                                            Для себя я открыл GitExtensions и закрыл SourceTree. В данный момент меня интересует что может MS предложить из коробки, ибо есть упирающиеся товарищи, которым «нужно в студии». Но судя по функционалу, пока что можно только закоммитить и запуллить.

                                        Only users with full accounts can post comments. Log in, please.