Browse files

перекладено повністю uk/history.txt

  • Loading branch information...
1 parent 8e3ab51 commit 465ddeaf97f2f8b0e4d346d455d11961ff058c01 @VBoden VBoden committed Sep 25, 2012
Showing with 50 additions and 49 deletions.
  1. +50 −49 uk/history.txt
View
99 uk/history.txt
@@ -40,68 +40,69 @@ Git враховує обидві думки. Переписування іст
* `squash` щоб злити комміт з попереднім;
* `fixup` щоб злити комміт з попереднім і відкинути його опис.
-Наприклад, ми могли б замінила другий `pick` з `squash`:
+Наприклад, ми могли б замінити другий `pick` з `squash`:
pick 5c6eb73 Додав посилання repo.or.cz
squash a311a64 Переставив аналогії в „Працюй як хочеш“
pick 100834f Додав ціль для push в Makefile
-After we save and quit, Git merges a311a64 into 5c6eb73. Thus *squash* merges
-into the next commit up: think ``squash up''.
+Після того, як ми збережемо і вийдемо, Git зіллє a311a64 у 5c6eb73. Так *squash* зливає
+у наступний комміт: think ``squash up''.
-Git then combines their log messages and presents them for editing. The
-command *fixup* skips this step; the squashed log message is simply discarded.
+Тоді Git then об’єднує повідомлення журналу і і подає їх для редагування. Команда
+*fixup* пропускає цей етап; злиті повідомлення журналу просто відкидаються.
-If you marked a commit with *edit*, Git returns you to the past, to the oldest
-such commit. You can amend the old commit as described in the previous section,
-and even create new commits that belong here. Once you're pleased with the
-``retcon'', go forward in time by running:
+Якщо ви позначили комміт командою *edit*, Git поверне вас в минуле, до найстарішого такого комміта.
+Ви можете відкоректувати старий комміт як описано в попередньому параграфі і, навіть, створити нові комміти, які знаходяться тут.
+Як тільки ви будете задоволені ``retcon'', йдіть вперед у часі, виконавши:
$ git rebase --continue
-Git replays commits until the next *edit*, or to the present if none remain.
+Git виводить комміти доти, поки буде наступний *edit* або не залишиться нічого.
-You can also abandon the rebase with:
+Ви також можете відмовитися від перебазування (rebase) з:
$ git rebase --abort
Одним словом, робіть комміти якомога раніше і якомога частіше - ви завжди зможете навести порядок за допомогою rebase.
-=== Локальные изменения сохраняются ===
+=== Локальні зміни зберігаються ===
-Предположим, вы работаете над активным проектом. За какое-то время вы делаете несколько коммитов, затем синхронизируетесь с официальным деревом через слияние. Цикл повторяется несколько раз, пока вы не будете готовы влить изменения в центральное дерево.
+Припустимо, ви працюєте над активним проектом. За якийсь час ви робите кілька коммітов, потім синхронізуєте з офіційним деревом через злиття. Цикл повторюється кілька разів, поки ви не будете готові влити зміни в центральне дерево.
-Однако теперь история изменений в локальном клоне Git представляет собой кашу из ваших и официальных изменений. Вам бы хотелось видеть все свои изменения непрерывной линией, а затем — все официальные изменения.
+Проте тепер історія змін в локальному клоні Git являє собою кашу з ваших та офіційних змін. Вам би хотілося бачити всі свої зміни неперервною лінією, а потім - всі офіційні зміни.
-Это работа для команды *git rebase*, описанной выше. Зачастую, имеет смысл использовать флаг *--onto* и убрать переплетения.
+Це робота для команди *git rebase*, як описано вище. Найчастіше, має сенс використовувати прапор *--onto*, щоб прибрати переплетення.
-Также смотрите *git help rebase* для получения подробных примеров использования этой замечательной команды. Вы можете расщеплять коммиты. Вы можете даже переупорядочивать ветки.
+Також дивіться *git help rebase* для отримання детальних прикладів використання цієї чудової команди. Ви можете розщеплювати комміти. Ви можете навіть змінювати порядок гілок у дереві.
-=== Переписывая историю ===
+Будьте обережні: rebase – це потужна команда. Для складних rebases, спочатку зробіть резервну копію за допомогою *git clone*.
-Время от времени вам может понадобиться в системе управления версиями аналог «замазывания» людей на официальных фотографиях, как бы стирающего их из истории в духе сталинизма. Например, предположим, что мы уже собираемся выпустить релиз проекта, но он содержит файл, который не должен стать достоянием общественности по каким-то причинам. Возможно, я сохранил номер своей кредитки в текстовый файл и случайно добавил его в проект. Удалить файл недостаточно: он может быть доступен из старых коммитов. Нам надо удалить файл из всех ревизий:
+=== Переписуючи історію ===
- $ git filter-branch --tree-filter 'rm совершенно/секретный/файл' HEAD
+Іноді вам може знадобитися в системі управління версіями аналог «замазування» людей на офіційних фотографіях, як би стираючого їх з історії в дусі сталінізму. Наприклад, припустимо, що ми вже збираємося випустити реліз проекту, але він містить файл, який не повинен стати надбанням громадськості з якихось причин. Можливо, я зберіг номер своєї кредитки в текстовий файл і випадково додав його в проект. Видалити файл недостатньо: він може бути доступний з старих коммітів. Нам треба видалити файл з усіх ревізій:
-Смотрите *git help filter-branch*, где обсуждается этот пример и предлагается более быстрый способ решения. Вообще, *filter-branch* позволяет изменять существенные части истории при помощи одной-единственной команды.
+ $ git filter-branch --tree-filter 'rm цілком/таємний/файл' HEAD
-После этой команды каталог +.git/refs/original+ будет описывать состояние, которое было до ее вызова. Убедитесь, что команда filter-branch сделала то, что вы хотели, и если хотите опять использовать эту команду, удалите этот каталог.
+Дивіться *git help filter-branch*, де обговорюється цей приклад і пропонується більш швидкий спосіб вирішення. Взагалі, *filter-branch* дозволяє змінювати істотні частини історії за допомогою однієї-єдиної команди.
-И, наконец, замените клоны вашего проекта исправленной версией, если собираетесь в дальнейшем с ними взаимодействовать.
+Після цієї команди каталог +.git/refs/original+ буде описувати стан, який був до її виклику. Переконайтеся, що команда filter-branch зробила те, що ви хотіли, і якщо хочете знову використовувати цю команду, видаліть цей каталог.
-=== Создавая Историю ===
+І, нарешті, замініть клони вашого проекту виправленої версією, якщо збираєтеся надалі з ними працювати.
+
+=== Створюючи Історію ===
[[makinghistory]]
-Хотите перевести проект под управление Git? Если сейчас он находится под управлением какой-либо из хорошо известных систем управления версиями, то вполне вероятно, что кто-нибудь уже написал необходимые скрипты для экспорта всей истории проекта в Git.
+Хочете перевести проект під управління Git? Якщо зараз він знаходиться під управлінням якоїсь із добре відомих систем керування версіями, то цілком імовірно, що хтось вже написав необхідні скрипти для експорту всієї історії проекту в Git.
-Если нет, то смотрите в сторону команды *git fast-import*, которая считывает текстовый ввод в специальном формате для создания истории Git с нуля. Обычно скрипт, использующий эту команду, бывает слеплен наспех для единичного запуска, переносящего весь проект за один раз.
+Якщо ні, то дивіться в сторону команди *git fast-import*, яка зчитує текст в спеціальному форматі для створення історії Git з нуля. Зазвичай скрипт, який використовує цю команду, буває зліплений похапцем для одиничного запуску, що переносить весь проект за один раз.
качестве примера вставьте такие строки во временный файл, вроде '/tmp/history':
якості прикладу вставте такі рядки в тимчасовий файл, на зразок `/tmp/history`:
----------------------------------
commit refs/heads/master
committer Alice <alice@example.com> Thu, 01 Jan 1970 00:00:00 +0000
data <<EOT
-Начальный коммит.
+Початковий комміт.
EOT
M 100644 inline hello.c
@@ -117,7 +118,7 @@ EOT
commit refs/heads/master
committer Bob <bob@example.com> Tue, 14 Mar 2000 01:59:26 -0800
data <<EOT
-Заменен printf() на write()
+Замінений printf() на write()
EOT
M 100644 inline hello.c
@@ -132,61 +133,61 @@ EOT
----------------------------------
-Затем создайте хранилище Git из этого временного файла при помощи команд:
+Потім створіть сховище Git з цього тимчасового файлу за допомогою команд:
$ mkdir project; cd project; git init
$ git fast-import --date-format=rfc2822 < /tmp/history
-Вы можете извлечь последнюю версию проекта с помощью
+Ви можете витягти останню версію проекту за допомогою
$ git checkout master .
-Команда *git fast-export* преобразует любое хранилище в формат, понятныый команде *git fast-import*. Ее вывод можно использовать как образец для написания скриптов преобразования, или для переноса хранилищ в понятном человеку формате. Конечно, с помощью этих команд можно пересылать хранилища текстовых файлов через каналы передачи текста.
+Команда *git fast-export* перетворює будь-яке сховище в формат, зрозумілий для команди *git fast-import*. Її результат можна використовувати як зразок для написання скриптів перетворення або для перенесення сховищ в зрозумілому для людини форматі. Звичайно, за допомогою цих команд можна пересилати сховища текстових файлів через канали передачі тексту.
-=== Когда же все пошло не так? ===
+=== Коли ж все пішло не так? ===
-Вы только что обнаружили, что кое-какой функционал вашей программы не работает, но вы совершенно отчетливо помните, что он работал всего несколько месяцев назад. Ох… Откуда же взялась ошибка? Вы же это проверяли сразу как разработали.
+Ви тільки що виявили, що деякий функціонал вашої програми не працює, але ви зовсім чітко пам'ятаєте, що він працював лише кілька місяців тому. Ох ... Звідки ж взялася помилка? Ви ж це перевіряли відразу як розробили.
-В любом случае, уже слишком поздно. Однако, если вы фиксировали свои изменения достаточно часто, то Git сможет точно указать проблему:
+У будь-якому випадку, вже надто пізно. Однак, якщо ви фіксували свої зміни досить часто, то Git зможе точно вказати проблему:
$ git bisect start
$ git bisect bad HEAD
$ git bisect good 1b6d
-Git извлечет состояние ровно посередине. Проверьте работает ли то, что сломалось, и если все еще нет,
+Git витягне стан рівно посередині. Перевірте чи працює те, що зламалося, і якщо все ще ні:
$ git bisect bad
-Если же работает, то замените «bad» на «good». Git снова переместит вас в состояние посередине между «хорошей» и «плохой» ревизиями, сужая круг поиска. После нескольких итераций, этот двоичный поиск приведет вас к тому коммиту, на котором возникла проблема. После окончания расследования, вернитесь в исходное состояние командой
+Якщо ж працює, то замініть "bad" на "good". Git знову перемістить вас в стан посередині між хорошою і поганою версіями, звужуючи коло пошуку. Після декількох ітерацій, цей двійковий пошук приведе вас до того комміту, на якому виникла проблема. Після закінчення розслідування, поверніться у початковий стан командою
$ git bisect reset
-Вместо ручного тестирования каждого изменения автоматизируйте поиск, запустив
+Замість ручного тестування кожної зміни автоматизуйте пошук, запустивши
$ git bisect run my_script
-По возвращаемому значению заданной команды, обычно одноразового скрипта, Git будет отличать хорошее состояние от плохого. Скрипт должен вернуть 0, если нынешний коммит хороший; 125, если его надо пропустить; и любое другое число от 1 до 127, если он плохой. Отрицательное возвращаемое значение прерывает команду bisect.
+За поверненим значенням заданої команди, зазвичай одноразового скрипта, Git буде відрізняти хороший стан від поганого. Скрипт повинен повернути 0, якщо теперішній комміт хороший; 125, якщо його треба пропустити, і будь-яке інше число від 1 до 127, якщо він поганий. Від'ємне значення перериває команду bisect.
-Вы можете сделать многим больше: страница помощи поясняет, как визуализировать bisect, проанализировать или воспроизвести ее журнал, или исключить заведомо хорошие изменения для ускорения поиска.
+Ви можете зробити багато більше: сторінка допомоги пояснює, як візуалізувати bisect, проаналізувати чи відтворити її журнал, або виключити наперед відомі хороші зміни для прискорення пошуку.
-=== Из-за кого все пошло не так? ===
+=== Через кого все пішло не так? ===
-Как и во многих других системах управления версиями, в Git есть команда blame (ответственность, прим. пер.):
+Як і в багатьох інших системах керування версіями, в Git є команда blame:
$ git blame bug.c
-Она снабжает каждую строку выбранного файла примечаниями, раскрывающими, кто и когда последним ее редактировал. В отличие же от многих других систем управления версиями, эта операция происходит без соединения с сетью, выбирая данные с локального диска.
+Вона забезпечує кожен рядок вибраного файлу примітками, що розкривають, хто і коли останнім її редагував. На відміну ж від багатьох інших систем управління версіями, ця операція відбувається без з'єднання з мережею, вибираючи дані з локального диску.
-=== Личный опыт ===
+=== Особистий досвід ===
-В централизованных системах управления версиями изменения истории — достаточно сложная операция, и доступна она лишь администраторам. Клонирование, ветвление и слияние невозможны без взаимодействия по сети. Так же обстоят дела и с базовыми операциями, такими как просмотр истории или фиксация изменений. В некоторых системах сетевое соединение требуется даже для просмотра собственных изменений, или открытия файла для редактирования.
+У централізованих системах керування версіями зміни історії - досить складна операція, і доступна вона лише адміністраторам. Клонування, розгалуження і злиття неможливі без взаємодії по мережі. Так само йдуть справи і з базовими операціями, такими як перегляд історії або фіксація змін. У деяких системах мережеве з'єднання потрібне навіть для перегляду власних змін, або відкриття файлу для редагування.
-Централизованные системы исключают возможность работы без сети и требуют более дорогой сетевой инфраструктуры, особенно с увеличением количества разработчиков. Что важнее, все операции происходят медленнее, обычно до такой степени, что пользователи избегают пользоваться «продвинутыми» командами без крайней необходимости. В радикальных случаях это касается даже большинства базовых команд. Когда пользователи вынуждены запускать медленные команды, производительность страдает из-за прерываний рабочего процесса.
+Централізовані системи виключають можливість роботи без мережі і вимагають більш дорогої мережевої інфраструктури, особливо із збільшенням кількості розробників. Що важливіше, всі операції відбуваються повільніше, зазвичай до такої міри, що користувачі уникають користування «просунутими» командами без крайньої необхідності. У радикальних випадках це стосується навіть більшості базових команд. Коли користувачі змушені запускати повільні команди, продуктивність страждає через переривання робочого процесу.
испытал этот феномен на себе. Git был моей первой системой управления версиями. Я быстро привык к нему и стал относится к его возможностям как к должному. Я предполагал, что и другие системы похожи на него: выбор системы управления версиями не должен отличаться от выбора текстового редактора или браузера.
відчув цей феномен на собі. Git був моєю першою системою керування версіями. Я швидко звик до нього і став відноситься до його можливостей як до належного. Я припускав, що й інші системи схожі на нього: вибір системи управління версіями не повинен відрізнятися від вибору текстового редактора або переглядача.
-Когда немного позже я был вынужден использовать централизованную систему управления версиями, я был шокирован. Ненадежное интернет-соединение не имеет большого значения при использовании Git, но делает разработку невыносимой, когда от него требуют надежности как у жесткого диска. Вдобавок я обнаружил, что стал избегать некоторых команд из-за задержек в их выполнении, что помешало мне следовать предпочтительному рабочему процессу.
+Коли трохи пізніше я був змушений використовувати централізовану систему управління версіями, я був шокований. Ненадійне інтернет-з'єднання не має великого значення при використанні Git, але робить розробку нестерпною, коли від нього вимагають надійності як у жорсткого диска. На додачу я виявив, що став уникати деяких команд через затримку у їх виконанні, що завадило мені дотримуватися кращого робочого процесу.
-Когда мне было нужно запустить медленную команду, нарушение хода моих мыслей оказывало несоизмеримый ущерб разработке. Ожидая окончания связи с сервером, я вынужден был заниматься чем-то другим, чтобы скоротать время; например, проверкой почты или написанием документации. К тому времени, как я возвращался к первоначальной задаче, выполнение команды было давно закончено, но мне приходилось тратить уйму времени, чтоб вспомнить, что именно я делал. Люди не очень приспособлены для переключения между задачами.
+Коли мені було потрібно запустити повільну команду, порушення ходу моїх думок надавало несумірний збиток розробці. Чекаючи закінчення зв'язку з сервером, я змушений був займатися чимось іншим, щоб згаяти час; наприклад, перевіркою пошти або написанням документації. До того часу, як я повертався до початкової задачі, виконання команди було давно закінчено, але мені доводилося витрачати багато часу, щоб згадати, що саме я робив. Люди не дуже пристосовані для перемикання між завданнями.
-Кроме того, есть интересный эффект «трагедии общественных ресурсов»: предвидя будущую перегруженность сети, некоторые люди в попытке предотвратить грядущие задержки начинают использовать более широкие каналы, чем им реально требуется для текущих задач. Суммарная активность увеличивает загрузку сети, поощряя людей задействовать всё более высокоскоростные каналы для предотвращения еще больших задержек.
+Крім того, є цікавий ефект «трагедії суспільних ресурсів»: передбачаючи майбутню перевантаженість мережі, деякі люди в спробі запобігти майбутнім затримкам починають використовувати більш широкі канали, ніж їм реально потрібно для поточних завдань. Сумарна активність збільшує завантаження мережі, заохочуючи людей задіяти все більш високошвидкісні канали для запобігання ще більшим затримкам.

0 comments on commit 465ddea

Please sign in to comment.