От TFS до Git

14

Я разработчик .NET, и я много раз использовал TFS (сервер Team Foundation) в качестве программного обеспечения для управления исходным кодом. Хорошие возможности TFS:

  1. Хорошая интеграция с Visual Studio (поэтому я делаю практически все визуально; нет консольных команд)
  2. Легкая регистрация, процесс регистрации
  3. Простое объединение и разрешение конфликтов
  4. Простые автоматизированные сборки
  5. разветвление

Теперь я хочу использовать Git в качестве основы, репозитория и контроля исходного кода моих проектов с открытым исходным кодом. Мои проекты написаны на языке C #, JavaScript или PHP с базами данных MySQL или SQL Server в качестве механизма хранения.

Я просто использовал помощь github.com для этой цели, создал там профиль и загрузил графический интерфейс для Git. До этой части было так легко.

Но я почти застрял в том, чтобы идти дальше. Я просто хочу сделать несколько простых (действительно простых) операций, в том числе:

  1. Создание проекта на Git и сопоставление его с папкой на моем ноутбуке
  2. Извлечение / проверка файлов и папок
  3. Разрешение конфликтов

Это все, что мне нужно сделать сейчас. Но кажется, что графический интерфейс не такой удобный для пользователя. Я ожидаю, что GUI будет иметь Connect To...или что-то подобное, а затем я ожидаю, что список проектов будет показан, и когда я выберу один, я ожидаю увидеть список файлов и папок этого проекта, так же, как исследование вашего проекта TFS в Visual Studio. Затем я хочу иметь возможность щелкнуть правой кнопкой мыши файл и выбрать check-in...или check-outи все в таком духе.

Много ли я ожидаю? Что я должен сделать, чтобы легко использовать Git, как TFS? Что мне здесь не хватает?

Саид Нямати
источник
8
Я перешел с SVN на git год назад, и я очень рад этому. Я бы не рекомендовал SVN никому, кроме как жесткому ненавистнику командной строки. Как только вы изучите мерзавец, вы полюбите его.
Маартин
14
Почему пользователи Windows так одержимы графическими интерфейсами?
tdammers
8
@tdammers Потому что командная строка в Windows отстой, как ад? Я знаю, что есть PowerShell, но используют ли они его?
Маартин
3
@Seed, для начала вы ожидаете, что есть такая вещь, как проверка файлов в git. Ни один VCS не годился для использования в течение многих лет.
Даниэль Роузман
1
Рекомендуем прочитать: ericsink.com/entries/vcbe_print_edition_free.html В нем объясняются основы управления версиями и различия между централизованным и децентрализованным (который все еще может использовать центральный сервер, помните.)
Inca

Ответы:

19

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

Если вы собираетесь переключиться с чего-то другого на git, попробуйте запустить tabula-rasa (хотя это невозможно сделать на практике). Оценивайте это на основе того, что он делает и насколько хорошо это делает, а не на том, как он это делает, по сравнению с тем, как вы привыкли это делать. Дело не в том, что вы ожидаете слишком многого, а в том, что ваши ожидания ортогональны тому, что обеспечивает git. Если вы женаты на работе с графическим интерфейсом, вы будете разочарованы. У Git есть инструменты для графического интерфейса, но они мало что добавляют. Это не означает, что их не так много, поскольку графическое приложение не так много может добавить. GitK помогает не в повседневных операциях, а скорее в визуализации структуры ветвей и изучении или поиске истории.

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

kylben
источник
Упс, я забыл объяснить редактирование. Я только что добавил последний абзац после того, как встал, чтобы выпить еще кофе, и мне в голову пришла аналогия.
kylben
3
Любимая метафора в конце. +1
Ям Маркович
7

Вы рассматривали ртутный? Как и git, это DCVS и позволяет вам делать все аккуратные вещи, которые можно сделать с DCVS. Как и в git, есть довольно хороший поставщик облачных сервисов (bitbucket). Но, в отличие от Git, история Windows довольно приличная, вы не гражданин второго класса. У вас есть хорошие варианты инструментов (TortiseHG) и довольно приличная интеграция с Visual Studio (VisualHG).

Ничто не будет похоже на TFS в визуальной студии - мир просто так не устроен.

Уайетт Барнетт
источник
1
Согласен, несколько лет назад я перешел с VSS на Mercurial, и это было настоящее прозрение. Внезапно я смог сделать то, что никогда не думал, что это будет практично. Затем я перешел svnи пропустил много вещей, в которых было так просто hg. Теперь я двигаюсь gitи испытываю смешанные чувства. Я люблю возвращаться ко многим из тех средств, в которых я пропустил svn, но я все еще скучаю по простоте по hgсравнению с ненужной сложностью git. Даже просто установка TortoiseGit на Windows требует, чтобы вы перепрыгивали через обручи, которые просто не нужны с TortoiseHg .
Марк Бут
@Mark Booth: Я согласен, что git не очень удобен для пользователя, но что за ненужная сложность ? Проблемы с установкой не учитываются, их можно отнести к TortoiseGit (это другая программа) или к Windows.
Maaartinus
Это было бы лучше в чате, но я не вижу никакой необходимости для области index / cache / staging, ИМХО по умолчанию должно быть зафиксировать все с возможностью частичной фиксации, если требуется (лучше все же было бы отложить внесенные вами изменения не хотите сразу, перезапустите свои юнит-тесты, выполните коммит и затем откройте его). Я также ненавижу явно создавать новую ветку, когда я хочу ее. С помощью hg безымянная ветвь создается автоматически, когда вы фиксируете не заголовок. В git, если вы отойдете от головы, не разветвившись, вы можете ее потерять, а затем собрать мусор!
Марк Бут
6

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

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

Создание проекта на Git и сопоставление его с папкой на моем ноутбуке

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

Я всегда начинаю с создания пустой директории, а затем либо git initили git clone SOME-REMOTE-REPOSITORY. Эта ссылка может помочь вам.

Извлечение / проверка файлов и папок

Вы пропустили, чтобы написать, какой графический интерфейс вы используете. И то TortoiseGitи другое, git-guiбезусловно, может сделать это.

Разрешение конфликтов

Для этого я использую git-guiили мой любимый текстовый редактор.

Я ожидаю, что GUI будет иметь подключение к ... или что-то в этом роде

Подключиться к чему, когда может быть от 0 до N пультов? Git не остается подключенным к удаленному серверу, он создает соединение только временно и только для нескольких команд, работающих с удаленным репозиторием. Большая часть работы выполняется на месте.

тогда я ожидаю, что список проектов будет показан

Я предполагаю, что projectsвы имеете в виду repositories.

Боюсь, что такого нет. Git на удаленном сервере работает строго только с одним репозиторием. Перечисление всех репозиториев эквивалентно перечислению всех каталогов, содержащих подкаталог .git. Я уверен, что есть что-то вроде этого GitHub.

Я выбираю один, я ожидаю увидеть список файлов и папок этого проекта, так же, как исследование

Опять же, я боюсь, что такого нет, так как gitработает локально. И опять же, это было бы не очень полезно. Просто клонируйте репозиторий и изучите его на своем компьютере. Хотя клонирование огромных репозиториев занимает некоторое время, все последующие операции выполняются намного быстрее, и вы можете посмотреть любой коммит или ветку.

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

Опять же gitработает локально. Поэтому нет смысла регистрироваться или выезжать на удаленный репо. Работать таким образом - пустая трата времени даже в быстрой локальной сети. Загрузите репозиторий на свой компьютер, поработайте с ним и git pushвнесите изменения в пульт. Подумайте об этом, как о публикации ваших изменений, а также о создании резервной копии. Вы должны совершать локально очень часто .

Перед началом работы git fetchили git pullизменениями с пульта на случай, если кто-то еще мог с ним работать.

Много ли я ожидаю?

Да и нет. Вы ожидаете что-то отличное от того, что оно предлагает. Вы можете получить что-то намного лучше, gitон мощный, гибкий, безопасный, быстрый, как ад, и может делать все, что вам нужно, но он не может точно имитировать то, что делает централизованная VCS.

maaartinus
источник
5

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

Переход от VSS к TFS был приятным опытом. Переход от ТФС до SVN был приятным опытом. Переход от SVN к GIT был своего рода внутренней битвой.

Часто я чувствую себя достаточно консервативным и пытаюсь понять, что работает. Хороший графический интерфейс для меня предпочтительнее командной строки, и я нашел какой-то графический интерфейс, который позволил бы мне играть с классными детьми, с которыми я работаю. Все они использовали git исключительно с командной строкой.

Настал момент для меня, когда я прекратил поиски gui с серебряной пулей и начал пробовать git bash (я все еще учусь).

У меня установлены некоторые guis, и они дополняют git из командной строки. Расширения Git, поставщик управления исходным кодом Git для visual studio и черепаховый git. Но я говорю, познакомьтесь с git bash. Команды могут быть немного загадочными, но как только вы изучите их, они будут намного быстрее, чем графический интерфейс.

Разветвление с помощью git просто УДИВИТЕЛЬНО по сравнению с другими. Создание веток и переключение между ветвями это практически мгновенно. Вы можете делать то, что вам не нужно делать с svn, потому что svn в основном копирует вашу рабочую копию (по крайней мере, так, как я это сделал).

Я считаю, что у Git более крутая кривая обучения, чем у SVN. Но как только вы "получите" git, вы не захотите возвращаться.

Git полностью

tomasat
источник
5

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

Git не такой. Подумайте о git так: у вас есть локальный репозиторий. Git позволяет вам зафиксировать изменения, отменить фиксацию, легко и быстро выполнить ветвление и т. Д. Когда вы хотите сделать резервную копию своей истории управления исходным кодом, вы отправляете свои изменения в другой репозиторий, который «просто случайно» является сервером, таким как GitHub.com.

Процедура:

  1. Clone (Скачать) / Создать репозиторий
  2. Сделайте некоторые изменения. Продолжайте развитие, не заботясь о других.
  3. Нажмите на другой репозиторий (может быть сервер, как GitHub).
  4. Когда вы отправляете в хранилище, владелец этого другого хранилища уведомляется о ожидающем отправлении и должен решить, принимать ли эти коммиты, отклонять их или принимать только их подмножество.
  5. Цикл продолжается.

Это все.

Ям Маркович
источник
1

Что вы имеете в виду, "the" git gui? Их, если я правильно помню, есть миллиард, включая плагин для визуальной интеграции студии. Если один графический интерфейс не работает для вас, попробуйте еще, пока не найдете тот, который работает. Я лично использую разные графические интерфейсы для разных задач (и CLI для других).

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

Карл Билефельдт
источник
-2

Много ли я ожидаю?

да

Что я должен сделать, чтобы легко использовать Git, как TFS?

Ничего. Git ориентирован на CLI и не имеет хорошего интерфейса (я знаю о TortoiseGit, который не является ответом по сравнению с другими Tortoise *). Вы можете попробовать использовать SmartGit (остерегайтесь Java)

Ленивый Барсук
источник
1
-1: проверка входных / выходных файлов и разрешение конфликтов не «ожидают многого» от контроля версий.
Стивен Эверс
2
+1 Проверка их напрямую с удаленного сервера просто не имеет смысла. Это просто для замедления, даже по локальной сети. Для таких целей нужен FTP, а не VCS.
Мааартин
1
Проверка / возврат файлов не является основной операцией для VCS. Это особенность реализации, характерная для большинства VCS, которая имеет незначительные, но неприятные побочные эффекты.
kylben
2
@kylben: вход / выход - это один из способов взглянуть на контроль версий; редактирование и слияние это другой способ. Некоторые VCS используют прежний подход, предоставляя вам эксклюзивные блокировки и возможность проверять отдельные файлы; другие берут последнее, и с этим вы загружаете весь репозиторий, вносите свои локальные изменения, а затем отправляете их обратно на пульт; VCS заботится об управлении конфликтующими изменениями, запрашивая ваш вклад в случае сомнений. Ни один из подходов не является лучшим, но обычно вы не можете согнуть VCS в тот, для которого он не был создан.
tdammers
1
Под "проверкой входа / выхода" я на самом деле говорил о том, как VCS на основе блокировок реализует вещи, а не о том, как вы можете загружать исходные файлы для редактирования (что действительно должен делать каждый VCS). Тот факт, что многие VCS ссылаются на простой процесс загрузки файла как «извлечение», является немного неправильным IMO - ничего не проверяется, и хранилище не помнит, у кого есть файл.
tdammers