Подтвердить что ты не робот

Что такое git постановка и почему Hg * якобы * не поддерживает его?

Hg docs заявляет, что hg не поддерживает эквивалент индекса git из коробки и предлагает использовать расширения ( запись или mq) для аналогичного поведения.

Во-первых, у меня очень мало опыта работы с git, поэтому позвольте мне изложить мое понимание концепции постановки в git:

  • Там рабочая копия, содержащая несколько измененных файлов, каждая из которых имеет несколько измененных фрагментов.
  • Затем пользователь (возможно, неоднократно) использует git add для выбора файлов, которые будут переданы.
  • В качестве альтернативы, используйте git add -p, чтобы выбрать только некоторые из фрагментов в файле, чтобы позже было зафиксировано.
  • Сделайте git commit, чтобы добавить ранее выбранные изменения в репозиторий.

Итак, для меня все staging area - это помпезное имя для выбора того, какие изменения в рабочей копии сделают его в следующей фиксации.

Если я не совсем так, то почему все, включая официальную документацию, заявляют, что Mercurial не поддерживает это?

Я спрашиваю, потому что точный рабочий процесс выше тривиально в TortoiseHg:

enter image description here

  • в левой панели - выберите все файлы для включения в commit
  • в правой нижней панели - выберите отдельные куски, чтобы включить
  • нажмите "Зафиксировать".

Я не знаю, что использует hg команды TortoiseHg, но опять же мне никогда не нужно было заботиться. (Он не использует никакого расширения для этого AFAICT)

Есть ли еще git концепция постановки, которой я не хватает?

4b9b3361

Ответ 1

Записи промежуточной области (индекс) меняют моментальные снимки, а не только выбор файлов. Например, вы можете изменить файл A, чтобы добавить foo, файл этапа A, а затем изменить файл A еще раз, чтобы добавить bar. Если вы не переустановите файл A, тогда, когда вы зафиксируете, будет зафиксировано только foo, потому что индекс имеет моментальный снимок A. Когда он был поставлен.

Вы также можете вернуть файл обратно в состояние последнего моментального снимка индекса (через git checkout). По сути, индекс действует как "временная фиксация", которую легко модифицировать, прежде чем на самом деле продвигается до полной фиксации.

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

Случайно удалите файл перед фиксацией? Если вы уже поставили его, не беспокойтесь - просто проверьте поэтапную версию.

Ответ 2

Git, предназначенный для поддержки определенного типа рабочего процесса во время разработки ядра Linux. Определенные люди для определенных людей.

Он не предназначен для простого использования обычным разработчиком (сравните с hg!), но приобретете большую популярность и культурный статус благодаря его стоимости, производительности, крупной поддержке и рекламной кампании (здесь GitHub).

Сегодня обычный разработчик взаимодействует с Git через графический интерфейс IDE и не нуждается в информации о области Index/Stage. Он просто использует флажки, например, в скриншоте-скриншоте (поэтому нет разницы между Git/Mercurial для обычного разработчика).

Для людей, работающих с синтаксисом командной строки командной строки с командной строкой Git и отображения ненужных данных формата хранилища, урок обучения больше времени, чтобы стать мастером Mercurial.

Вот красивые изображения, описывающие использование индекса:

Вы всегда можете эмулировать индекс (но почему?):

hg qinit
hg qadd
hg qrefesh
hg qfinish

кроме MQ вы можете иметь упорядоченный набор индексов, а не только один! И позвольте вам указать имя каждому "Индексу".

С расширением record у вас есть возможность выбрать патч-фрагменты в CLI, как вы устанавливаете флажки в графическом интерфейсе. Это расширение является прямым ответом на параметр Git -p.

Таким образом, стартер на самом деле прав в своем заполнении, что Индекс является ненужной функцией архитектуры DVCS и встроен в Git для поддержки желания некоторых разработчиков Git.

Удачи и счастливого взлома!

UPDATE Цитата из http://stevebennett.me/2012/02/24/10-things-i-hate-about-git/

Большая часть мощности Git направлена ​​непосредственно на поддерживающих кодов: люди, которые должны объединить вклады из большого числа различных источников или кто должен обеспечить ряд параллельных усилий в области развития приводят к единому, когерентному, стабильному выпуску. Это хорошо. Но большинство пользователей Git не в этой ситуации: они просто пишут код, часто на одной ветке в течение нескольких месяцев. Git - это 4 ручки, двойной кофемашина эспрессо - когда все, что им нужно, мгновенно.