Ukrainian translation for the push&pull section

This commit is contained in:
vitalii 2015-11-10 22:04:03 +02:00
parent 7d719f4cff
commit aaef1069ce
7 changed files with 518 additions and 14 deletions

View file

@ -11,7 +11,8 @@ exports.level = {
"zh_CN": "介绍 Clone", "zh_CN": "介绍 Clone",
"zh_TW": "介紹 clone", "zh_TW": "介紹 clone",
"ru_RU": "Введение в клонирование", "ru_RU": "Введение в клонирование",
"ko" : "Clone 소개" "ko" : "Clone 소개",
"uk" : "Знайомство з clone"
}, },
"hint": { "hint": {
"en_US": "Just git clone!", "en_US": "Just git clone!",
@ -23,7 +24,8 @@ exports.level = {
"pt_BR": "Basta fazer um git clone!", "pt_BR": "Basta fazer um git clone!",
"zh_TW": "只要 git clone 就好了", "zh_TW": "只要 git clone 就好了",
"ru_RU": "Простой git clone!", "ru_RU": "Простой git clone!",
"ko" : "그냥 git clone 하세요!" "ko" : "그냥 git clone 하세요!",
"uk" : "Просто git clone!"
}, },
"startDialog": { "startDialog": {
"en_US": { "en_US": {
@ -594,6 +596,63 @@ exports.level = {
} }
} }
] ]
},
"uk": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Віддалені репозиторії",
"",
"Віддалені репозиторії не є дуже складними. В сучасному світі де на кожному кроці можна зустріти \"хмарні обчислення\" може видатися що концепція віддалених репозиторіїв є дуже складною, але насправді вони просто звичайні копії твого репозиторію на віддаленому комп’ютері. Зазвичай з цим віддаленим комп’ютером можна зв’язатися через інтернет, що дозволяє обмінюватись комітами.",
"",
"Приймаючи до уваги все вищесказане, віддалені репозиторії мають купу гарних властивостей:",
"",
"- В першу чергу віддалені сервери це завжди чудова резевна копія (бекап)! Локальний репозиторій дає чудову можливість відкотитися до попереднього стану, але вся інформація зберігається локально. Маючи копії твого репозиторію на віддалених машинах, ти можеш пережити втрату жорсткого диску чи пошкодження данних і продовжити працювати з того місця на якому закінчив",
"",
"- Що не менш важливо, віддалені репозиториї роблять кодинг соціальним! Коли копія твого проекту розміщена в мережі, твої друзі мають змогу допомогти твому проекту (чи зпулити останні зміни) без зайвих зусиль.",
"",
"Стало дуже популярним користуватися веб сайтами що візуалізують активність на віддалених репозиторіях. (наприклад [Github](https://github.com/) чи [Phabricator](http://phabricator.org/)), але віддалені репозиториї _завжди_ слугують як основа цих сервісів. Тому важливо розуміти їх!"
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Команда що створює віддалені репозиториї",
"",
"До цього моменту, Вчимо Git Гілкування концентрувало увагу на основах роботи з _локальним_ репозиторієм (гілкування, злиття гілок, ребейс, тощо). Однак тепер коли ми вчимо віддалені репозиторії, нам потрібно налаштувати середовище для подальших уроків. `git clone` впорається з цим завданням",
"",
"В принципі, `git clone` в справжньому гіт це команда для створення _локальної_ копії віддаленого репозиторію (наприклад з github). Але в Вчимо Git Гілкування ми використовуватимо цю команду по іншому -- `git clone` буде створювати віддалений репозиторій з локального. Я згодний шо це трохи навпаки, але це допоможе створити зв’язок в голові між клонуванням та роботою з віддаленми репо, тому поки що будемо використовувати її таким чином.",
""
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Низький старт - просто подивимось як віддалений репозиторій виглядає (в нашій візуалізації).",
""
],
"afterMarkdowns": [
"Ось і все! Тепер ми маємо віддалений репозиторій нашого проекту. Він виглядає досить схоже, хіба що деякі візуальні елементи інші щоб краще показати різницю -- в наступних рівнях ти навчишся як ділитися роботою між цими репозиторіями."
],
"command": "git clone",
"beforeCommand": ""
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Щоб пройти цей рівень, просто зроби `git clone` свого поточного репозиторію. Справжні знання ти отримаєш в подальших рівнях."
]
}
}
]
} }
} }
}; };

View file

@ -11,7 +11,8 @@ exports.level = {
"pt_BR": "Simulando trabalho em equipe", "pt_BR": "Simulando trabalho em equipe",
"zh_CN": "模拟团队合作", "zh_CN": "模拟团队合作",
"zh_TW": "模擬團隊合作", "zh_TW": "模擬團隊合作",
"ru_RU": "Коллективная работа" "ru_RU": "Коллективная работа",
"uk" : "Симуляція колективної роботи"
}, },
"hint": { "hint": {
"en_US": "remember you can specify the number of commits to fake", "en_US": "remember you can specify the number of commits to fake",
@ -22,7 +23,8 @@ exports.level = {
"pt_BR": "Lembre-se que você pode especificar quantos commits quer simular", "pt_BR": "Lembre-se que você pode especificar quantos commits quer simular",
"zh_CN": "记住为fake中的commit指定数量", "zh_CN": "记住为fake中的commit指定数量",
"zh_TW": "你要記得指定要送多少個 commit 出去", "zh_TW": "你要記得指定要送多少個 commit 出去",
"ru_RU": "помните, Вы можете указать количество фейковых коммитов" "ru_RU": "помните, Вы можете указать количество фейковых коммитов",
"uk" : "пам’ятай що ти можеш вказати кількість фейкових комітів"
}, },
"startDialog": { "startDialog": {
"en_US": { "en_US": {
@ -512,6 +514,60 @@ exports.level = {
} }
} }
] ]
},
"uk": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Симулюємо коллаборацію",
"",
"Зараз ми знаходимось в незручному становищі -- в деяких з наступних уроків, нам потрібно пояснити як витягнути зміни з віддаленого репозиторія що були туди додані іншим учасником.",
"",
"Це означає, що нам треба \"вдавати\" що віддалений репозиторій був модифікований твоїм колегою / друзями / небайдужими, іноді на специфічній гілці чи коміті.",
"",
"Щоб зробити це, ми додали влучно названу команду `git fakeTeamwork` (симуляціяКолективноїРоботи)! Насправді з симуляцією колективної роботи стикався майбуть кожен хто працював в колективі, тому перейдемо до прикладів..."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"По замовчуванню `fakeTeamwork` просто додасть коміт в мастер"
],
"afterMarkdowns": [
"Зробили -- до віддаленого репозиторію додався ще один коміт, проте ми ще його не завантажили, так як не виконали `git fetch`."
],
"command": "git fakeTeamwork",
"beforeCommand": "git clone"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Ти також можеш вказати кількість комітів чи гілку куди потрібно додати коміти."
],
"afterMarkdowns": [
"Виконавши одну команду ми симулювали колегу що запушив три коміти в гілку `foo` на віддаленому репозиторії"
],
"command": "git fakeTeamwork foo 3",
"beforeCommand": "git branch foo; git clone"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Наступні рівні мають бути досить складними, тому щоб підготуватись, на цьому рівні теж доведеться не солодко.",
"",
"Зроби віддалений репозиторій (за допомогою `git clone`), зроби кілька фіктивних змін, зроби кілька комітів локально, й підвантаж віддалені зміни. Це як кілька уроків в одному!"
]
}
}
]
} }
} }
}; };

View file

@ -11,7 +11,8 @@ exports.level = {
"pt_BR": "Git Fetch", "pt_BR": "Git Fetch",
"zh_CN": "Git Fetch", "zh_CN": "Git Fetch",
"zh_TW": "git fetch", "zh_TW": "git fetch",
"ru_RU": "Git fetch" "ru_RU": "Git fetch",
"uk" : "Git fetch"
}, },
"hint": { "hint": {
"en_US": "just run git fetch!", "en_US": "just run git fetch!",
@ -22,7 +23,8 @@ exports.level = {
"pt_BR": "Simplesmente chame git fetch!", "pt_BR": "Simplesmente chame git fetch!",
"zh_CN": "只要运行 git fetch 命令!", "zh_CN": "只要运行 git fetch 命令!",
"zh_TW": "只要下 git fetch 指令", "zh_TW": "只要下 git fetch 指令",
"ru_RU": "Просто выполните git fetch!" "ru_RU": "Просто выполните git fetch!",
"uk" : "Просто виконай git fetch!"
}, },
"startDialog": { "startDialog": {
"en_US": { "en_US": {
@ -679,6 +681,79 @@ exports.level = {
} }
} }
] ]
},
"uk": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Git Fetch",
"",
"Робота з віддаленими гіт репозиторіями зводиться до передачі данних _до_ й _з_ інших репозиторіїв. Змога передавати коміти автоматично дає нам можливість передавати будь-яку інформацію що відслідковується гіт. (а отже виконану роботу, нові файли, ідеї, листи, тощо).",
"",
"На цьому уроці ми навчимося витягати данні _з_ віддаленого репозиторію -- команда що відповідає за це зручно називається `git fetch` (fetch англ. витягнути чи дістати - примітка перекл.).",
"",
"Зауваж, що коли ми оновлюємо наш віддалений репозиторій, наші _віддалені_ гілки теж оновляться. Про це ми говорили в попередньому уроці."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Перед тим як почати розбиратися з `git fetch`, давай спробуємо його в дії! Тут ми маємо віддалений репозиторій який містить два коміти яких не має в нашому локальному сховищі."
],
"afterMarkdowns": [
"Ось, маєш! Коміти `C2` та `C3` було завантажено до нашого локального сховища, й наша віддалена гілка `o/master` була відповідно оновлена."
],
"command": "git fetch",
"beforeCommand": "git clone; git fakeTeamwork 2"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"### Що робить fetch",
"",
"`git fetch` виконує дві основні дії, й тільки дві дії.Він:",
"",
"* завантажує коміти які містить віддалене сховище але яких немає в локальному сховищі, та...",
"* оновлює посилання віддаленого бранчу (наприклад, `o/master`)",
"",
"Якщо коротко `git fetch` приводить репрезентацію віддаленого репозиторію в локальному сховищі до _актуального_ стану справжнього віддаленого репозиторію.",
"",
"Якщо ти пам’ятаєш з попереднього уроку, ми тоді зауважили що віддалені гілки відображають стан віддаленого репозиторію _від_ останнього разу коли ми синхронізувались з віддаленим репозиторієм. `git fetch` якраз і відповідає за синхронізацію з віддаленим сховищем! Сподіваюсь, що зв’язок між віддаленими гілками `git fetch` зараз є очевидним.",
"",
"Як правило `git fetch` працює з віддаленими сховищами через інтернет. (через протоколи `http://` чи `git://`).",
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"### Що не робить fetch",
"",
"Тим не менш `git fetch` нічого не змінює в _твоєму_ локальному стані. Він не оновить твою гілку`master` й не змінить те як наразі виглядає локальна файлова система.",
"",
"Це важливо зрозуміти, тому що багато розробників думають що `git fetch` оновить їхні локальні данні до стану віддаленого репозиторію. Він дійсно завантажить всі потрібні данні, щоб це зробити, але він автоматично _не_ змінить ніяких локальних файлів. Ми вивчимо команди що це роблять в наступних уроках :D",
"",
"Отже в кінці кінців, ти можеш вважати що `git fetch` просто завантажує нову інформацію з віддаленого сховища."
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Щоб пройти цей рівень просто виконай `git fetch` й завантаж всі коміти!"
]
}
}
]
} }
} }
}; };

View file

@ -11,7 +11,8 @@ exports.level = {
"de_DE": "Abweichende History", "de_DE": "Abweichende History",
"fr_FR": "Historique divergent", "fr_FR": "Historique divergent",
"ja" : "履歴の分岐", "ja" : "履歴の分岐",
"ru_RU": "Расхождение в истории" "ru_RU": "Расхождение в истории",
"uk" : "Розходження в історії"
}, },
"hint": { "hint": {
"en_US": "check out the ordering from the goal visualization", "en_US": "check out the ordering from the goal visualization",
@ -22,7 +23,8 @@ exports.level = {
"de_DE": "Beachte die Reihenfolge in der Zieldarstellung", "de_DE": "Beachte die Reihenfolge in der Zieldarstellung",
"ja" : "ゴールのツリーの順番を参考にすること", "ja" : "ゴールのツリーの順番を参考にすること",
"fr_FR": "regardez l'ordre dans la fenêtre de visualisation d'objectif", "fr_FR": "regardez l'ordre dans la fenêtre de visualisation d'objectif",
"ru_RU": "проверьте сортировку в визуализации цели" "ru_RU": "проверьте сортировку в визуализации цели",
"uk" : "перевірте порядок в візуалізації цілі"
}, },
"startDialog": { "startDialog": {
"en_US": { "en_US": {
@ -1311,6 +1313,149 @@ exports.level = {
} }
} }
] ]
},
"uk": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Diverged Work",
"",
"Ми розглянули як `витягувати` коміти інших та як `завантажувати` свої власні коміти. Це виявилось не надто складно, як же так що в людей дуже часто виникають з цим труднощі?",
"",
"Основна складність полягає в тому що історія різних репозиториїв *розбігається* (diverges). Перед тим як вдатися в деталі, давайте подивимось як це виглядає на прикладі...",
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Уяви що ти склонував репозиторій в Понеділок й почав напрацьовувати на якусь фічу. В пятницю фіча готова й ти хочеш повернути її назад (в апстрім) -- але що це? Твої колеги, грець їм, вже встигли вкомітити купу коду що робить твою фічу застарілою (і не дуже доречною). Вони вже запушили ці коміти в публічний репозиторій, й тепер *твоя* робота базується на *старій* версії продукту що вже не актуальна.",
"",
"В цьому випадку команда `git push` неоднозначна. Коли ти виконаєш `git push`, гіт повинен змінити віддалений репозиторій до того стану, на якому він знаходився в Понеділок? Чи він має додати твій код й залишити код твоїх колег? Чи він має повністю проігнорувати твої зміни, так як вони застаріли?",
"",
"Через такі неоднозначності в цій ситуації (коли історія розійшлася), git не дозволить тобі запушити твої зміни. Він фактично змушує тебе інтегрувати останні зміни з віддаленого репозиторію перед тим як ти зможеш завантажити на нього свої напрацювання."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Але, забагато розмов! Подивимось на ділі!"
],
"afterMarkdowns": [
"Бачиш? Нічого не сталося тому що остання команда не виконалася. `git push` не спрацював тому що твій недавній коміт `C3` базується на коміті `C1`. Але віддалений репо вже прейшов на`C2`, тому git відхилив твій push"
],
"command": "git push",
"beforeCommand": "git clone; git fakeTeamwork; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Як вийти з цієї ситуації? Це просто, все що треба, це оновити свої напрацювання так щоб вони базувалися на останніх змінах з віддаленої гілки.",
"",
"Є кілька шляхів як цього досягнути, але найпростіший це перемістити твою роботу 'вперед' за допомогою rebase. Давай спробуємо, й подивимось як це виглядає"
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Тепер якщо виконати rebase перед push..."
],
"afterMarkdowns": [
"Ка-бум! Ми оновили наш локальний образ віддаленого репозиторію за допомогою `git fetch`, заребейсили наші напрацювання згідно змін в віддаленому репо, й завантажили їх за допомогою `git push`"
],
"command": "git fetch; git rebase o/master; git push",
"beforeCommand": "git clone; git fakeTeamwork; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Чи є якийсь інший спосіб оновити свої напрацювання коли віддалений репозиторії пішов вперед? Звісно! Спробуємо зробити те ж саме, але натомість за допомогою `merge` (злиття).",
"",
"Хоча `git merge` й не переміщує твою роботу (а просто створює натомість коміт злиття чи merge commit), це ще один спосіб сказати гіт що ти інтегрував останній стан віддаленого репозиторію в свої зміни. Це працює тому що тепер віддалена гілка є *предком* твоєї гілки, а отже твої останні коміти інтегрують в собі всі коміти з віддаленої гілки.",
"",
"Невелика демонстрація (шини не потрібні)..."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Тепер ми зробимо merge заміть rebase..."
],
"afterMarkdowns": [
"Ка-бум! Ми оновили наш локальний образ віддаленої гілки за допомогою `git fetch`, *змерджили* нові напрацювання з власними напрацюваннями (щоб відобразити останні змінни в віддаленій гілці), й відіслали їх за допомогою `git push`"
],
"command": "git fetch; git merge o/master; git push",
"beforeCommand": "git clone; git fakeTeamwork; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Чудово! Чи я можу це зробити використовуючи меншу кількість команд?",
"",
"Звісно -- ти ж знаєш що `git pull` це просто коротша форма для git fetch а потім git merge. Достатньо зручно, `git pull --rebase` це коротка форма для git fetch а потім git rebase!",
"",
"Давайте спробуємо використати ці коротші команди."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Спочатку з `--rebase`..."
],
"afterMarkdowns": [
"Теж саме що й раніше! Просто трохи коротше."
],
"command": "git pull --rebase; git push",
"beforeCommand": "git clone; git fakeTeamwork; git commit"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Й тепер просто з `pull`"
],
"afterMarkdowns": [
"Знову, так як і було!"
],
"command": "git pull; git push",
"beforeCommand": "git clone; git fakeTeamwork; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Робочий процес що складається з fetch, rebase/merge, й push є дуже широковживаним. В наступних уроках ми розглянемо складніші версії цього процесу, а наразі спробуємо його виконати.",
"",
"Щоб пройти цей рівень виконай наступні кроки:",
"",
"* Зклонуй свій репозиторій",
"* Зроби симуляцію командної роботи (1 коміт)",
"* Зроби власний коміт (1 коміт)",
"* Опублікуй свої напрацювання за допомогою *rebasе*"
]
}
}
]
} }
} }
}; };

View file

@ -11,7 +11,8 @@ exports.level = {
"de_DE": "Git Pull", "de_DE": "Git Pull",
"ja" : "Git Pull", "ja" : "Git Pull",
"fr_FR": "Git pull", "fr_FR": "Git pull",
"ru_RU": "Git pull" "ru_RU": "Git pull",
"uk" : "Git pull"
}, },
"hint": { "hint": {
"en_US": "Just run git pull!", "en_US": "Just run git pull!",
@ -22,7 +23,8 @@ exports.level = {
"de_DE": "Führe einfach git pull aus.", "de_DE": "Führe einfach git pull aus.",
"ja" : "単にgit pullを実行", "ja" : "単にgit pullを実行",
"fr_FR": "Utilisez facilement git pull !", "fr_FR": "Utilisez facilement git pull !",
"ru_RU": "Запустите комманду git pull !" "ru_RU": "Запустите комманду git pull !",
"uk" : "Просто виконай git pull !"
}, },
"startDialog": { "startDialog": {
"en_US": { "en_US": {
@ -556,5 +558,64 @@ exports.level = {
} }
] ]
}, },
"uk": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Git Pull",
"",
"Тепер, коли ми знаємо як витягувати данні з віддаленого репозиторію за допомогою `git fetch`, давай спробуємо оновити нашу робочу копію відповідно до цих данних!",
"",
"Насправді є кілька шляхів як це досягнути -- як тільки нові коміти з’явилися локально, ти можеш додавати їх в бранчі так само як звичайні коміти. Це означає що ти можеш виконувати команди:",
"",
"* `git cherry-pick o/master`",
"* `git rebase o/master`",
"* `git merge o/master`",
"* і так далі, й тому подібне.",
"",
"Насправді, процес *витягування* віддалених змін й подальший *мерджинг* їх є настільки популярним, що гіт пропонує спеціяльну команду що виконує ці дві дії за один раз! Ця команда називається `git pull`."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Давай спочатку виконаємо по черзі `fetch` а потім `merge`"
],
"afterMarkdowns": [
"Ка-бум -- ми завантажили `C3` за допомогою `fetch` й потім змерджили їх з `git merge o/master`. Тепер наша гілка `master` відповідає гілці з віддаленого сховища (в цьому випадку, з назвою `origin`)"
],
"command": "git fetch; git merge o/master",
"beforeCommand": "git clone; git commit; git fakeTeamwork"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Що трапится якщо натомість використати `git pull` ?"
],
"afterMarkdowns": [
"Те ж саме! Тепер очевидно що `git pull` це просто швидкий спосіб зробити `git fetch` а потім змерджити завантажену гілку."
],
"command": "git pull",
"beforeCommand": "git clone; git commit; git fakeTeamwork"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Ми розглянемо `git pull` більш детально пізніше (включаючи різні опції та аргументи), наразі просто спробуємо цю команду.",
"",
"Не забувай -- щоб пройти цей рівень достатньо використати `fetch` а потім `merge`, але це буде тобі коштувати одну зайву команду :P"
]
}
}
]
}
} }
}; };

View file

@ -11,7 +11,8 @@ exports.level = {
"de_DE": "Git Push", "de_DE": "Git Push",
"ja" : "Git Push", "ja" : "Git Push",
"fr_FR": "Git push", "fr_FR": "Git push",
"ru_RU": "Git push" "ru_RU": "Git push",
"uk" : "Git push"
}, },
"hint": { "hint": {
"en_US": "Remember you have to clone before you can push!", "en_US": "Remember you have to clone before you can push!",
@ -22,7 +23,8 @@ exports.level = {
"de_DE": "Denk dran, dass du einen Clone brauchst bevor du Pushen kannst!", "de_DE": "Denk dran, dass du einen Clone brauchst bevor du Pushen kannst!",
"ja" : "Pushができるようになるには、まずリポジトリをcloneする必要があるのをお忘れなく", "ja" : "Pushができるようになるには、まずリポジトリをcloneする必要があるのをお忘れなく",
"fr_FR": "Rappelez-vous que vous devez cloner avant de pouvoir faire un push !", "fr_FR": "Rappelez-vous que vous devez cloner avant de pouvoir faire un push !",
"ru_RU": "Помните, что прежде чем push-ить вам нужно склонировать репозиторий!" "ru_RU": "Помните, что прежде чем push-ить вам нужно склонировать репозиторий!",
"uk" : "Пам’ятай, що перед тим як щось push-нуть потрібно склонувати репозиторій!"
}, },
"startDialog": { "startDialog": {
"en_US": { "en_US": {
@ -403,6 +405,49 @@ exports.level = {
} }
} }
] ]
},
"uk": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Git Push",
"",
"OK, я витягнув останні зміни й інтегрував їх в свої локальні напрацювання. Все добре... але як мені поділится _своїми_ змінами з рештою учасників?",
"",
"Отже, надсилання данних є по суті протилежне завантажуванню данних. Й який є антонім до `git pull` (притягнути)? `git push` (відштовхнути)!",
"",
"`git push` використовується для надсилання _локальних_ змін на вказаний віддалений репозиторій й оновлює цей репозиторій, інтегруючи нові коміти. Після виконання `git push` всі твої друзі зможуть завантажити твої напрацювання з віддаленого сховища.",
"",
"Ти можеш вважати що `git push` \"публікує\" твої напрацювання. В цій команді є кілька тонких моментів, які ми скоро розглянемо, але давайте почнемо з початку...",
"",
"*зауваження -- поведінка `git push` без параметрів різниться в залежності від налаштування git з назвою `push.default`. Значення по замовчуванню цього налаштування залежить від версії твого git, але в наших уроках ми будемо вважати що воно рівне `upstream`. Це не вкрай важливо, але буде корисно перевірити це налаштування перед тим як пушити свій проект.*"
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Ось ми маємо деякі зміни яких нема в віддаленому сховищі. Давайте надішлемо їх!"
],
"afterMarkdowns": [
"Ось, маєш -- віддалене сховище отримало `C2`, гілка`master` на ньому була оновлена й посилається на `C2`, й наше *власне* відображення віддаленого репо (`o/master`) було також оновлена. Все синхронізовано!"
],
"command": "git push",
"beforeCommand": "git clone; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Щоб пройти цей рівень, просто надішли два коміти у віддалений репозиторій. Але пристібнись, скоро наші уроки стануть набагато важчі!"
]
}
}
]
} }
} }
}; };

View file

@ -12,7 +12,8 @@ exports.level = {
"ja" : "リモートのブランチ", "ja" : "リモートのブランチ",
"fr_FR": "Les branches distantes", "fr_FR": "Les branches distantes",
"ru_RU": "Удалённые ветки", "ru_RU": "Удалённые ветки",
"ko" : "원격 브랜치(remote branch)" "ko" : "원격 브랜치(remote branch)",
"uk" : "Віддалені гілки"
}, },
"hint": { "hint": {
"en_US": "Pay attention to the ordering -- commit on master first!", "en_US": "Pay attention to the ordering -- commit on master first!",
@ -24,7 +25,8 @@ exports.level = {
"ja" : "順番に注意 -- まずmasterに対してcommitしましょう", "ja" : "順番に注意 -- まずmasterに対してcommitしましょう",
"fr_FR": "Prêtez attention à l'ordre -- les commits sur master d'abord !", "fr_FR": "Prêtez attention à l'ordre -- les commits sur master d'abord !",
"ru_RU": "Уделяйте внимание очерёдности -- сперва commit на master", "ru_RU": "Уделяйте внимание очерёдности -- сперва commit на master",
"ko" : "순서에 주의하세요 -- master에서 먼저 커밋하세요!" "ko" : "순서에 주의하세요 -- master에서 먼저 커밋하세요!",
"uk" : "Звертайте увагу на послідовність -- спочатку коміт в мастер!"
}, },
"startDialog": { "startDialog": {
"en_US": { "en_US": {
@ -636,6 +638,67 @@ exports.level = {
} }
} }
] ]
},
"uk": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Віддалені гілки",
"",
"Тепер, коли ти познайомився з `git clone` в дії, давайте розглянемо деталі, й подивимось, що дійсно змінилось.",
"",
"Перше що ти міг помітити, це те що з’явився новий бранч з назвою `o/master`. Такі гілки називаються _віддаленими_ (remote); віддалені гілки в гіт відіграють в певному сенсі унікальну роль, тому в них є деякі спеціяльні властивості, непритаманні іншим гілкам.",
"",
"Віддалені гілки відображають _стан_ віддалених репозиториїв (точніше стан віддаленого репо на момент останньої синхронізації). Вони дозволяють відрізняти та відслідковувати локальні зміни та зміни інших учасників -- що є дуже важливим для успішної синхронізації роботи між різними репозиторіями.",
"",
"Важливою властивістю віддалених гілок є те що коли перейти на них ти перейдеш в стан detached `HEAD`. Git робить це спеціяльно, так як неможливо працювати з ними напряму; ти маєш працювати в локальній гілці й по необхідності синхронізуватися з віддаленим репозиторієм (після чого віддалену гілку буде оновлено)."
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"### Що за `o/`? Або Римський салют",
"",
"Ти можливо здогадуєшся для чого потрібен префікс `o/` на віддалених гілках. Так, є (примусове) правило іменування віддалених гілок -- вони відображаються в форматі:",
"",
"* `<ім’я віддаленого репо>/<ім’я гілки>`",
"",
"Отже, якщо розглянути гілку з назвою `o/master`, то ім’я гілки це `master` а ім’я віддаленого репозиторію це `o`.",
"",
"Більшість розробників насправді називають ім’я головного віддаленого репозиторію `origin` (початок), not `o`. Це настільки поширена практика, що гіт автоматично називає віддалений репозиторій `origin` коли ти його клонуєш.",
"",
"На жаль повністю ім’я `origin` не влізає в наш UI, натомість ми будемо використовувати коротше `o` :( Просто не забудь, коли будеш використовувати звичайний гіт, що твій віддалений репо скоріш за все називається `origin`!",
"",
"Це багато інформації, подивимось як це працює на прикладі."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Давайте зробимо checkout віддаленої гілки й подивимось що буде"
],
"afterMarkdowns": [
"Як бачиш, git перейшов в стан detached `HEAD` й не оновив `o/master` коли ми зробили новий коміт. Це тому, що `o/master` буде оновлено лише тоді коли буде оновлено віддалений репозиторій."
],
"command": "git checkout o/master; git commit",
"beforeCommand": "git clone"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Щоб пройти цей рівень, зроби один коміт в `master` а потім переключись в `o/master` й закомітся ще раз. Це наглядно продемонструє поведінку віддалених гілок, а також покаже як зміни впливають на стан віддаленого репозиторію."
]
}
}
]
} }
} }
}; };