Skip to content

Commit

Permalink
ru/grandmaster.txt editing: four chapters left
Browse files Browse the repository at this point in the history
  • Loading branch information
t-t committed Aug 2, 2010
1 parent ce51f26 commit fc510ed
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions ru/grandmaster.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@

$ git archive --format=tar --prefix=proj-1.2.3/ HEAD

=== Сохранение изменений ===
=== Коммит изменений ===

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

$ git add .
$ git add -u

Git просмотрит файлы в текущем каталоге и сам позаботится о деталях. Вместо второй команды add, выполните *git commit -a*, если вы собираетесь сразу сделать коммит. См. в *git help ignore*, чтобы узнать как указать файлы, которые должны игнорироваться.
Git просмотрит файлы в текущем каталоге и сам позаботится о деталях. Вместо второй команды add, выполните *git commit -a*, если вы собираетесь сразу сделать коммит. См. *git help ignore*, чтобы узнать как указать файлы, которые должны игнорироваться.

Вы можете выполнить все это одним махом:

Expand All @@ -31,23 +31,23 @@ Git просмотрит файлы в текущем каталоге и сам

$ git add -p

Для каждой вашей правки Git покажет измененный участок кода и спросит, должно ли это изменение попасть в следующий коммит. Отвечайте «y» или «n». У вас есть идругие варианты, например отложить выбор; введите "?" чтобы узнать больше.
Для каждой сделанной вами правки Git покажет измененный участок кода и спросит, должно ли это изменение попасть в следующий коммит. Отвечайте «y» (да) или «n» (нет). У вас есть и другие варианты, например отложить выбор; введите «?» чтобы узнать больше.

Когда закончите, выполните

$ git commit

для внесения именно тех правок, что вы выбрали («буферизованных» изменений). Убедитесь, что вы не указали опцию *-a*, иначе Git закоммитит все изменения.
для внесения именно тех правок, что вы выбрали («буферизованных» изменений). Убедитесь, что вы не указали опцию *-a*, иначе Git закоммитит все правки.

Что делать, если вы изменили множество файлов во многих местах? Проверка каждого отдельного изменения становится удручающей рутиной. В этом случае используйте *git add -i*. Ее интерфейс не так прост, но более гибок. В несколько нажатий кнопок можно добавить или убрать из буфера несколько файлов одновременно, либо просмотреть и выбрать изменения лишь в отдельных файлах. Как вариант, запустите *git commit \--interactive*, который автоматически сделает коммит когда вы закончите.
Что делать, если вы изменили множество файлов во многих местах? Проверка каждого отдельного изменения становится удручающей рутиной. В этом случае используйте *git add -i*. Ее интерфейс не так прост, но более гибок. В несколько нажатий кнопок можно добавить или убрать из буфера несколько файлов одновременно, либо просмотреть и выбрать изменения лишь в отдельных файлах. Как вариант, запустите *git commit \--interactive*, которая автоматически сделает коммит когда вы закончите.

=== Индекс — буферная зона Git ===

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

Например, *commit -a* на самом деле двухэтапный процесс. Сначала слепок текущего состояния каждого из отслеживаемых файлов помещается в индекс. Затем слепок, находящийся в индексе, записывается в историю. Коммит без опции *-a* выполняет только второй шаг, и имеет смысл только после выполнения команд, изменяющих индекс, таких как *git add*.

Обычно мы можем не обращать внимания на индекс и делать вид, что взаимодействуем напрямую с историей. Но в данном случае мы хотим более тонкого контроля, поэтому работаем с индексом. Мы помещаем слепок некоторых (но не всех) наших изменений в индекс, после чего окончательно записываем этот аккуратно сформированный слепок.
Обычно мы можем не обращать внимания на индекс и делать вид, что взаимодействуем напрямую с историей. Но в данном случае мы хотим более тонкого контроля, поэтому управляем индексом. Мы помещаем слепок некоторых (но не всех) наших изменений в индекс, после чего окончательно записываем этот аккуратно сформированный слепок.

=== Не теряй «головы» ===

Expand All @@ -59,11 +59,11 @@ Git просмотрит файлы в текущем каталоге и сам

Но как вернуться назад в будущее? Ведь предыдущие коммиты о нем ничего не знают.

Если у вас есть SHA1 предыдущей «головы», то:
Если у вас есть SHA1 изначальной «головы», то:

$ git reset 1b6d

Но допустим, вы никогда его не записывали. Не беспокойтесь: для комнад такого рода Git сохраняет оригинальный HEAD как тег под названием ORIG_HEAD, и вы можете вернуться надежно и безопасно:
Но допустим, вы его не записывали. Не беспокойтесь: для комнад такого рода Git сохраняет оригинальную «голову» как тег под названием ORIG_HEAD, и вы можете вернуться надежно и безопасно:

$ git reset ORIG_HEAD

Expand Down

0 comments on commit fc510ed

Please sign in to comment.