Вопрос

До сих пор с трудом осознаю концепцию постановки применительно к Git.

Можно ли провести какие-нибудь аналогии с SVN?Какова основная цель использования уровня стадии в Git?

Это было полезно?

Решение

<Сильные> Сходства:

Файлы, которые должны быть частью репозитория, должны быть добавлены для отслеживания. Обе инструменты используют команду add для выполнения этого. Добавление файлов означает приготовление фиксации.

<Сильные> Отличия:

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

<Сильная> Дополнительная информация:

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

Не ожидайте понимать философию Git в течение короткого периода времени. Мне потребовалось в год, чтобы попасть в него, и я все еще узнаю новые способы его использования. Я думаю, что это еще сложнее, если вы выросли с мышлением SVN. Там есть тонны материалов: статьи, видео, ... - Возьмите свое время и попробуйте некоторые из них. Вот выбор из списка, который я собрал.

Другие советы

Основное преимущество промежуточной области заключается в том, что вы можете легко зафиксировать только часть изменений в данном файле.(С использованием git add -p например.) Насколько я знаю, единственный способ выполнить «частичную» фиксацию в SVN — это на уровне каждого файла или вручную создать резервную копию файла, а затем временно отменить изменения, которые вы не хотите фиксировать. .

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

Невозможно проводить аналогии с SVN, поскольку SVN — это не Git и не имеет такой концепции.

Вот некоторые сценарии, которые показывают полезность постановки:

    .
  • Вы работаете на определенной части и сделали довольно много изменений в вашем проекте. Вы не хотите их совершать еще до тестирования полной вещи. Но эти изменения часто могут быть достаточно независимыми, чтобы сделать несколько логических коммит, чем один большой. Это когда вы ставите селективные части и сделаете несколько коммитов.

  • Постановка была особенно полезна во время отладки. Вы можете посыпать по буквам журнала для отслеживания источника ошибки. Затем вы делаете исправление и проверьте снова, используя эти операторы журнала. Но затем вы хотите получить исправление, прежде чем делать какие-либо изменения в коде для удаления этих операторов журнала.

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

Есть несколько других таких сценариев, и, вероятно, вы не сможете работать с тем, что не хватает этой концепции, как только вы получите это :).

PS: Я вообще не использовал SVN, поэтому не могу сделать сравнения между двумя.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top