Что такое stage git

Что означает «этап» в git?

Мне трудно понять мерзавца, так как я не мог найти значение слов, используемых для действий. Я проверил в словаре значение «stage», и ни одно из значений не было связано с концепциями управления исходным кодом.

Что означает «этап» в контексте git?

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Поскольку до сих пор все отвечали на это «формальным» способом, позвольте мне сделать это с помощью альтернатив, чтобы улучшить обучение силой метафор.

Таким образом, область подготовки выглядит так:

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

Время сломанной метафоры:

С технической точки зрения, подготовка также поддерживает транзакции, разделяя все операции на то, что может дать сбой (подготовка), а что не может (принятие):

Фиксация в git осуществляется транзакционно, после того, как подготовка прошла успешно. Несколько этапов подготовки могут завершиться неудачно (например, вам нужно выполнить фиксацию, но ваш жесткий диск заполнен на 99,9999%, а у git нет места для выполнения фиксации). Это не удастся подготовить (ваш репозиторий не будет поврежден при частичной фиксации), и процесс подготовки не повлияет на вашу историю фиксации (он не повредит ваше хранилище в случае ошибки).

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

Чтобы добавить к другим отличным ответам, вот откуда происходит название «этап»:

Я проверил словарь на предмет значения стадии, и ни одно из значений не было связано с концепциями контроля источников.

На английском языке «на сцену» может означать

организовать и принять участие (публичное мероприятие): сторонники ОДС провели демонстрацию в Софии

Источник

What does ‘stage’ mean in git?

I find git hard to understand as I could not find the meaning of the words used for the actions. I have checked the dictionary for the meaning of ‘stage’ and none of the meanings were related to source control concepts.

What does ‘stage’ mean in the context of git?

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

8 Answers 8

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Since everyone so far has answered it the «formal» way, let me do this with alternatives to enhance learning with the power of metaphors.

So the staging area is like:

It’s magical!

Staging is a step before the commit process in git. That is, a commit in git is performed in two steps: staging and actual commit.

As long as a changeset is in the staging area, git allows you to edit it as you like (replace staged files with other versions of staged files, remove changes from staging, etc.).

Broken metaphor time:

From a technical point of view, staging also supports transactional commits, by splitting all operations into what can fail (staging) and what cannot fail (commit):

The commit in git is implemented transactionally, after the staging is sucessfull. Several steps in the staging can fail (for example, you need to commit, but your HDD is 99.9999% full, and git has no space to perform a commit). This will fail in staging (your repository will not be corrupted by a partial commit) and the staging process doesn’t affect your commit history (it doesn’t corrupt your repository in case of an error).

Источник

Запись изменений в репозиторий

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

Запомните, каждый файл в вашем рабочем каталоге может находиться в одном из двух состояний: под версионным контролем (отслеживаемые) и нет (неотслеживаемые). Отслеживаемые файлы — это те файлы, которые были в последнем снимке состояния проекта; они могут быть неизменёнными, изменёнными или подготовленными к коммиту. Если кратко, то отслеживаемые файлы — это те файлы, о которых знает Git.

Неотслеживаемые файлы — это всё остальное, любые файлы в вашем рабочем каталоге, которые не входили в ваш последний снимок состояния и не подготовлены к коммиту. Когда вы впервые клонируете репозиторий, все файлы будут отслеживаемыми и неизменёнными, потому что Git только что их извлек и вы ничего пока не редактировали.

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

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Определение состояния файлов

Отслеживание новых файлов

Индексация изменённых файлов

Теперь оба файла проиндексированы и войдут в следующий коммит. В этот момент вы, предположим, вспомнили одно небольшое изменение, которое вы хотите сделать в CONTRIBUTING.md до коммита. Вы открываете файл, вносите и сохраняете необходимые изменения и вроде бы готовы к коммиту. Но давайте-ка ещё раз выполним git status :

Сокращенный вывод статуса

Игнорирование файлов

Первая строка предписывает Git игнорировать любые файлы заканчивающиеся на «.o» или «.a» — объектные и архивные файлы, которые могут появиться во время сборки кода. Вторая строка предписывает игнорировать все файлы заканчивающиеся на тильду (

Стандартные шаблоны являются глобальными и применяются рекурсивно для всего дерева каталогов.

Чтобы избежать рекурсии используйте символ слеш (/) в начале шаблона.

Чтобы исключить каталог добавьте слеш (/) в конец шаблона.

Можно инвертировать шаблон, использовав восклицательный знак (!) в качестве первого символа.

Просмотр индексированных и неиндексированных изменений

Чтобы увидеть, что же вы изменили, но пока не проиндексировали, наберите git diff без аргументов:

Эта команда сравнивает содержимое вашего рабочего каталога с содержимым индекса. Результат показывает ещё не проиндексированные изменения.

Важно отметить, что git diff сама по себе не показывает все изменения сделанные с последнего коммита — только те, что ещё не проиндексированы. Такое поведение может сбивать с толку, так как если вы проиндексируете все свои изменения, то git diff ничего не вернёт.

Другой пример: вы проиндексировали файл CONTRIBUTING.md и затем изменили его, вы можете использовать git diff для просмотра как проиндексированных изменений в этом файле, так и тех, что пока не проиндексированы. Если наше окружение выглядит вот так:

Используйте git diff для просмотра непроиндексированных изменений

Коммит изменений

Эта команда откроет выбранный вами текстовый редактор.

В редакторе будет отображён следующий текст (это пример окна Vim):

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

Итак, вы создали свой первый коммит! Вы можете видеть, что коммит вывел вам немного информации о себе: на какую ветку вы выполнили коммит ( master ), какая контрольная сумма SHA-1 у этого коммита ( 463dc4f ), сколько файлов было изменено, а также статистику по добавленным/удалённым строкам в этом коммите.

Запомните, что коммит сохраняет снимок состояния вашего индекса. Всё, что вы не проиндексировали, так и висит в рабочем каталоге как изменённое; вы можете сделать ещё один коммит, чтобы добавить эти изменения в репозиторий. Каждый раз, когда вы делаете коммит, вы сохраняете снимок состояния вашего проекта, который позже вы можете восстановить или с которым можно сравнить текущее состояние.

Игнорирование индексации

Удаление файлов

Если вы просто удалите файл из своего рабочего каталога, он будет показан в секции «Changes not staged for commit» (измененные, но не проиндексированные) вывода команды git status :

В команду git rm можно передавать файлы, каталоги или шаблоны. Это означает, что вы можете сделать что-то вроде:

Эта команда удаляет все файлы, имена которых заканчиваются на

Перемещение файлов

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

Таким образом, наличие в Git команды mv выглядит несколько странным. Если вам хочется переименовать файл в Git, вы можете сделать что-то вроде:

и это отлично сработает. На самом деле, если вы выполните что-то вроде этого и посмотрите на статус, вы увидите, что Git считает, что произошло переименование файла:

Однако, это эквивалентно выполнению следующих команд:

Источник

Зачем нужна stage area в Git?

Оценить 1 комментарий

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Думаю, ответ немного банален — чтобы можно было выбирать, какие файлы включать в коммит.

Тем не менее, если действительно относиться к каждому коммиту, как к стабильной версии для продакшна, то может понадобиться именно такой подход. В этом случае как раз таки staging area и играет роль черновика, из которого можно включить те или иные файлы.

Опять таки, из практики — порой удобно бывает закоммитить определенный файл в случае с хотфиксами.

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Не просто какие файлы включить в коммит — а какие изменения включить в коммит.

Например можно из 100 измененных строк в файле выборочно закомитить 10 и еще и отредактировать их в процессе. Использую очень часто.

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Ни разу не пользовался. Интересно, как именно происходит работа с таким подходом — какая команда, как используются бранчи, по какому принципу происходит деплой (если речь о вебе, конечно же).

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Интересно, как именно происходит работа с таким подходом

Источник

IntelliJ IDEA Changelists и Git Staging

Прежде чем мы начнем, важно знать, что как списки изменений IntelliJ IDEA, так и Git staging позволяют закоммитить часть файла, целый файл или несколько файлов в Git. То, как они этого достигают, немного отличается, но конечный результат тот же. Список изменений IntelliJ IDEA работает с понятием диапазона в вашем контенте. Все изменения в этом диапазоне будут частью коммита. Git staging использует стандартное для git понятие staging области (также известное как «index»).

Оба варианта: IntelliJ IDEA Changelists и Git Staging доступны из Commit окна инструментов. Из IntelliJ IDEA 2020.1 вы можете переключиться на использование этого немодального окна Commit с помощью ⌘, в macOS или Ctrl + Alt + S в Windows / Linux, чтобы отобразить Preferences/Settings. Оттуда введите commit и установите флажок «Use non-model commit interface». Вы также можете использовать ⌘⇧A (macOS) или Ctrl + Shift + A (Windows / Linux) для поиска действий и ввести «Commit». Затем вы можете получить к нему доступ, нажав ⌘0 в macOS или Alt+ 0 в Windows и Linux.

Наконец, прежде чем мы начнем сравнение, вы не можете использовать списки изменений IntelliJ IDEA и промежуточную область Git одновременно. Вы можете переключаться между ними, но не можете использовать их одновременно. Начнем с Changelists IntelliJ IDEA.

Что такое «Список изменений IntelliJ IDEA»?

До выпуска 2020.3 списки изменений IntelliJ IDEA были единственным способом закоммитить изменения в вашем репозитории Git.

Списки изменений IntelliJ IDEA предназначены не только для Git, они для любой поддерживаемой системы VCS, но в этом блоге мы сосредоточимся на Git, чтобы мы могли сравнить их с новой функциональностью Git staging.

Коммит всего файла

IntelliJ IDEA всегда предоставляет вам список изменений по умолчанию, и при изменении файла файл будет отображаться в списке изменений по умолчанию с флажком, который не установлен:

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

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

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Коммит части файла

В качестве альтернативы, если вы хотите закоммитить часть файла, а не весь, вы можете дважды щелкнуть по имени файла в Default Changelist (списке изменений по умолчанию), чтобы открыть представление diff. Это представление показывает последнюю известную версию Git слева, а вашу локальную копию справа с выделенными синим цветом изменениями, которую вы можете редактировать. Вы можете установить флажки рядом с каждым изменением кода, которое вы внесли справа, чтобы сказать, что вы хотите закоммитить изменения только в этом диапазоне, а не во всем файле.

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

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

Совет: Вы также можете использовать ⌘D или Ctrl + D, чтобы открыть представление diff из окна инструмента commit.

Отмена изменений

В представлении diff вы также можете отменить изменения индивидуально, используя стрелку >> на файле слева, чтобы отменить изменения в вашем локальном файле. В этом случае правая часть обновится, чтобы отразить ваши изменения. Если вы допустили ошибку, вы можете отменить изменение или использовать локальную историю, чтобы вернуть свои изменения.

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Вы также можете откатить весь файл, щелкнув его правой кнопкой мыши и выбрав Rollback.

Несколько Changelists

Чтобы создать несколько списков изменений, вы можете щелкнуть правой кнопкой мыши на Default Changelist и выбрать «New Changelist»:

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Перемещение изменений между списками изменений

Вы также можете перемещать файлы между списками изменений (Changelists). Вы можете переместить весь файл в новый список изменений и создать этот новый список изменений, если он еще не существует в рамках этого действия. Для этого вы можете щелкнуть правой кнопкой мыши файл в списке изменений в окне Commit и выбрать «Move to Another Changelist». Вам будет предложено выбрать список изменений, если он существует, или создать список изменений, если его нет. Когда вы создаете новый список изменений, вы можете дополнительно установить для него значение «Active». Это означает, что все будущие изменения будут назначены этому Changelist.

В этом примере все будущие изменения будут теперь назначены нашему списку изменений DateFormat, потому что мы установили его как «Активный» при его создании.

В диалоговом окне «New Changelist» есть флажок, который называется «Track context». Если вы работаете с задачами и контекстами и подключили IntelliJ IDEA к соответствующему стороннему приложению, вы можете использовать этот флажок, чтобы заставить IntelliJ IDEA управлять контекстом задачи.

Помимо перемещения целых файлов между списками изменений, вы также можете перемещать отдельные изменения в файле между списками изменений. Это особенно полезно, если вы работаете над изменениями, которые влияют на один файл, но вы хотите разделить коммиты по причинам, о которых мы говорили ранее. Для того, чтобы присвоить некоторые, но не все изменения в файле на другую группу изменений, щелкните правой кнопкой мыши на изменение в представлении diff в Your version на правой стороне. Затем вы можете выбрать «Move to another changelist». Вы также можете использовать клавиши ⇧⌘M в macOS или Alt + Shift + M в Windows и Linux.

Вы также можете перемещать изменения между списками изменений, используя цветные полосы в gutter:

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Как сделать Changelist активным

Наконец, мы уже показали вам, как сделать новый список изменений активным, но стоит упомянуть, что IntelliJ IDEA необходимо знать, какой список изменений использовать для новых изменений; вам всегда нужен один активный список изменений. Вы можете выбрать, какой список изменений является активным, если у вас их несколько, щелкнув правой кнопкой мыши список изменений и выбрав «Set Active Changelist». Если вы не видите эту опцию, это потому, что выбранный вами Changelist уже является активным Changelist.

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Когда вы коммитите какие-либо новые изменения, они по умолчанию будут помещены в ваш активный список изменений IntelliJ IDEA Changelist.

Коммит ваших изменений в Git

Теперь, когда у вас есть списки изменений IntelliJ IDEA и ваши изменения разделены так, как вы хотите, вы готовы закоммитить их в Git. Вы можете увидеть, что будет закоммитено в Git, в окне «Commit».

Когда вас это устраивает, вы можете использовать ⌘K в macOS или Ctrl + K в Windows и Linux, чтобы открыть окно Commit. Перед тем, как нажать «Commit», вам необходимо ввести комментарий к коммиту. После того, как вы это сделаете и нажмете Commit, чтобы закоммитить их в истории Git локально, IntelliJ IDEA выполнит две команды git:
git add
git commit

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

Что такое Git Staging?

Затем вы можете включить его:

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Вы также можете включить Git staging из диалогового окна Settings/Preferences с помощью команд в macOS или Ctrl + Alt + S, а затем введя git staging.

Папки Staged и Unstaged

С Git Staging вы увидите две папки, а не одну как в IntelliJ IDEA Changelist в окне Commit. Каждое изменение, которое вы вносите в свой файл, представляет собой разницу между вашим локальным файлом и HEAD. Папка Unstaged, где все ваши изменения будут появляться на начальном этапе. Чтобы включить изменения в следующий коммит, вам необходимо переместить его из Unstaged папки в Staged папки. Это означает, что IntelliJ IDEA выполняет команду git add для всех изменений в файле.

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Git add изменяет содержимое файла в индексе (поэтапное содержимое). Если вы впоследствии измените контент внутри того же диапазона, он не будет закоммитен, пока не будет помещен в папку Staged. Вы можете использовать Staged область, чтобы изменить то, что будет закоммитено, независимо от любых изменений в локальных файлах. С помощью IntelliJ Changelists любое изменение внутри того же диапазона будет закоммитено.

Кроме того, вы можете добавить часть файла, дважды щелкнув файл в папке Unstaged и используя стрелки <> на Staged области слева:

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Вы также можете откатить весь файл, выбрав его в области Unstaged и выбрав «Rollback» (или «Revert» до версии 2021.1»). Это откат файла до состояния в индексе, а не в HEAD.

Давайте посмотрим на эту функциональность в Staged области. Изменения в Staged области означают, что IntelliJ IDEA выполнила операцию git add для изменения файла.

Вы можете передумать и решить, что хотите отменить изменения (Unstage) файла целиком. Как при выполнении Staging для файла, вы можете перетащить его из Staged папки в Unstaged папку, нажав значок * — ** в дереве, или правой кнопкой мыши и выбрав «Unstage»:

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Когда вы Unstage файл или часть файла, IntelliJ IDEA запускает команду git reset для изменения файла.

Вы также можете отменить изменение в файле, если вам нужно. Чтобы сделать это, вам нужно открыть в представлении diff файл, который содержит изменения, которые вы хотите убрать из папки Staged. Затем вы можете использовать стрелки >> в staged части слева, чтобы отменить изменение (Unstage). Это приведет к отмене этого конкретного изменения, и снова IntelliJ IDEA запустит команду Git, чтобы отразить изменение. Вы также можете ввести текст в редакторе, если хотите.

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Staging и Unstaging отдельных изменений с помощью значков в Gutter

Вы также можете использовать значки Gutter в IntelliJ IDEA для внесения отдельных изменений.

Когда вы кликните на сплошную цветную панель, вы можете выбрать внесение изменений (Staging), панель изменит вид после добавления изменений. Нажав на панель в gutter, вы сможете отменить эти изменения.

Что такое stage git. Смотреть фото Что такое stage git. Смотреть картинку Что такое stage git. Картинка про Что такое stage git. Фото Что такое stage git

Коммит изменений

Если Git Staging включен, ваша коммит будет состоять из изменений (различий), которые есть в вашей Staging папке. Если вас они устраивают, вы можете использовать команду ⌘K (macOS) или Ctrl + K (Windows / Linux) для открытия окна Commit. Затем вы можете ввести комментарий к коммиту и нажать Commit, чтобы закоммитить выбранные вами изменения в Git. Кроме того, вы можете использовать команду ⌘⏎ (macOS) или Ctrl + Enter (Windows / Linux), чтобы закоммитить изменения. После чего IntelliJ IDEA выполнит необходимые команды Git для выбранных вами изменений.

Затем вы можете продолжить и выполнить push изменений в удаленный репозиторий, если хотите.

Резюме

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

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

Git Staging фокусируется на создании коммита моментального снимка staging области. Staged контент эффективно блокируется. Вы можете приступить к редактированию файла, даже если он был помещен в папку Staged; Staged контент не изменится. Это позволяет вам готовить коммиты поэтапно.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *