mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-09-01 08:17:16 +02:00
Russian translation
Conflicts: src/js/dialogs/confirmShowSolution.js src/js/dialogs/levelBuilder.js src/js/intl/index.js src/js/intl/strings.js src/levels/mixed/describe.js src/levels/mixed/tags.js
This commit is contained in:
commit
a653ef7fb6
25 changed files with 1379 additions and 150 deletions
|
@ -723,6 +723,84 @@ exports.level = {
|
|||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Ветвление в Git",
|
||||
"",
|
||||
"Ветки в Git как и коммиты невероятно легковесны. Это просто ссылки на определённый коммит -- ничего более. Вот почему многие фанаты Git повторяют мантру",
|
||||
"",
|
||||
"```",
|
||||
"делай ветки сразу, делай ветки часто",
|
||||
"```",
|
||||
"",
|
||||
"Так как создание множества веток никак не отражается на памяти или жестком диске, удобнее и проще разбивать свою работу на много маленьких веток, чем хранить все изменения в одной огромной ветке.",
|
||||
"",
|
||||
"Чуть позже мы попробуем использовать ветки и коммиты и вы увидите как две эти возможности сочетаются. Можно сказать, что создание ветка хранит изменения текущих коммитов и всех его родителей."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Посмотрим что такое ветки на практике",
|
||||
"",
|
||||
"Создадим здесь новую ветку с именем newImage"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Вот и всё, ребята! Ветка newImage теперь указывает на коммит C1"
|
||||
],
|
||||
"command": "git branch newImage",
|
||||
"beforeCommand": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Теперь попробуем сделать некоторые изменения в этой ветке. Для этого нажми кнопку ниже."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"О-оу! Ветка master сдвинулся тогда как ветка newImage - нет! Всё из-за того, что мы не перешли на новую ветку, на что указывает звёздочка около ветки master"
|
||||
],
|
||||
"command": "git commit",
|
||||
"beforeCommand": "git branch newImage"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Сообщим Git, что хотим выбрать ветку",
|
||||
"",
|
||||
"```",
|
||||
"git checkout [name]",
|
||||
"```",
|
||||
"",
|
||||
"Эта команда перенесёт нас на новую ветку, в момент, когда мы ещё не коммитили изменения"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Вот так! Наши изменения записаны уже в новую ветку"
|
||||
],
|
||||
"command": "git checkout newImage; git commit",
|
||||
"beforeCommand": "git branch newImage"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Ну что ж, теперь вы готовы к работе с ветками. Как только это окно закроется,",
|
||||
"создай ветку с именем bugFix и переключись на неё"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -8,7 +8,8 @@ exports.level = {
|
|||
"ja": "Gitのコミット",
|
||||
'ko': 'Git 커밋 소개',
|
||||
'zh_CN': 'Git Commits简介',
|
||||
'zh_TW': '介紹 git commit '
|
||||
'zh_TW': '介紹 git commit ',
|
||||
'ru_RU': 'Знакомство с Git Commit '
|
||||
},
|
||||
"goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C3\",\"id\":\"master\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
|
||||
"solutionCommand": "git commit;git commit",
|
||||
|
@ -22,7 +23,8 @@ exports.level = {
|
|||
"zh_CN": "敲两次 'git commit' 就好啦!",
|
||||
"zh_TW": "輸入兩次 'git commit' 就可以完成!",
|
||||
"ja": "'git commit'コマンドを2回打てば完成!",
|
||||
"ko": "'git commit'이라고 두 번 치세요!"
|
||||
"ko": "'git commit'이라고 두 번 치세요!",
|
||||
"ru_RU": "Попробуй дважды выполнить команду 'git commit' ;)"
|
||||
},
|
||||
"disabledMap": {
|
||||
"git revert": true
|
||||
|
@ -417,6 +419,48 @@ exports.level = {
|
|||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Коммиты в GIT",
|
||||
"Коммит в git репозитории хранит снимок всех файлов в директории. Почти как огромная копия, только лучше",
|
||||
"",
|
||||
"Git пытается быть лёгким и быстрым насколько это только возможно, так что он не просто слепо копирует всю директорию какждый раз, а ужимает (когда это возможно) коммит в набор изменений или \"дельту\" между текущей версией и предыдущей.",
|
||||
"",
|
||||
"Также Git хранит всю историю о том, когда какой коммит был сделан. Вот почему большинство коммитов имеют предков -- мы указываем на предков стрелками при визуализации. Поддержка истории коммитов более чем важна для всех, кто работает на проектом!",
|
||||
"",
|
||||
"Можно ещё долго рассказывать о коммитах, но для простоты будем считать их полными снимками проекта. Коммиты очень легки, так что переключение между ними происходит предельно быстро!"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Посмотрим, как это выглядит на практике. Справа расположена визуализация небольшого git репозитория. Сейчас в нём два коммита -- первый, исходны коммит, С0 и один коммит после него С1, содержащий изменения. ",
|
||||
"",
|
||||
"Нажми на кнопку, чтобы совершить коммит"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Отлично. Мы только что внесли изменения в репозиторий и сохранили их как коммит. У коммит, который мы только что сделали, есть родитель, С1, который указывает на предыдущий коммит."
|
||||
],
|
||||
"command": "git commit",
|
||||
"beforeCommand": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Пора попробовать! После того, как это окно закроется, сделай два коммита, чтобы пройти этот уровень."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -10,7 +10,8 @@ exports.level = {
|
|||
"ko": "Git에서 브랜치 합치기(Merge)",
|
||||
"ja": "ブランチとマージ",
|
||||
"zh_CN": "分支与合并",
|
||||
"zh_TW": "git 中的 merge"
|
||||
"zh_TW": "git 中的 merge",
|
||||
"ru_RU": "Слияния веток в Git"
|
||||
},
|
||||
"hint": {
|
||||
"en_US": "Remember to commit in the order specified (bugFix before master)",
|
||||
|
@ -21,7 +22,8 @@ exports.level = {
|
|||
"fr_FR": "Pensez à faire des commits dans l'ordre indiqué (bugFix avant master)",
|
||||
"zh_CN": "记住按指定的顺序提交(bugFix先于master)",
|
||||
"zh_TW": "記住按指定的順序 commit(bugFix 比 master 優先)",
|
||||
"ko": "말씀드린 순서대로 커밋해주세요 (bugFix에 먼저 커밋하고 master에 커밋)"
|
||||
"ko": "말씀드린 순서대로 커밋해주세요 (bugFix에 먼저 커밋하고 master에 커밋)",
|
||||
"ru_RU": "Не забудь делать коммиты в правильном порядке (сначала bugFix, потом master)"
|
||||
},
|
||||
"disabledMap": {
|
||||
"git revert": true
|
||||
|
@ -647,6 +649,76 @@ exports.level = {
|
|||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Branches and Merging",
|
||||
"## Ветки и слияния",
|
||||
"",
|
||||
"Ок! Теперь мы знаем как создавать ветки и коммитить наши изменения. Теперь надо понять как объединять изменения из двух разных ветко. Очень удобно создать ветку, сделать свою часть работы в ней и потом объединить изменения из своей ветки с общими.",
|
||||
"",
|
||||
"Первый способ объединения изменений, который мы рассмотрим - это `git merge` - слияние или просто мердж. Слияния в Git создают особый вид коммита, который имеет сразу двух родителей. Коммит с двумя родителями обычно означает, что мы хотим объединить изменения из одного коммита, с другим коммитом и всеми их родителскими коммитами.",
|
||||
"",
|
||||
"Слишком запутанно =) На схеме всё проще и понятнее."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Вот у нас две ветки, каждая содержит по одному уникальному коммиту. Это означает, что ни одна из веток не содержит полный набор \"работ\", выполненных в этом репозитории. Можно исправить эту ситуацию, выполнив слияние.",
|
||||
"",
|
||||
"Мы сделаем `merge` ветки `bugFix` в ветку `master`"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Что мы видим? Во-первых, ветка master теперь указывает на коммит, у которого два родителя. Если проследовать по стрелкам от этого коммита, вы пройдёте через каждый коммит в дереве прямиком к началу. Это означает, что теперь в ветке `master` содержатся все изменения репозитория.",
|
||||
"",
|
||||
"Во-вторых, обрати внимание как изменились цвета коммитов. Мы ввели цветовую дифференциацию, чтобы помочь помниманию. Каждая ветка своего цвета. Каждый коммит становится того цвета, какого его ветка. Если в нём изменения сразу двух веток - он становится цветом, смешанным из цветов родительских веток.",
|
||||
"",
|
||||
"И вот мы видим, что цвет ветки `master` подмешан к каждому коммиту, а ветки `bugFix` - нет. Это можно попроавить."
|
||||
],
|
||||
"command": "git merge bugFix",
|
||||
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Смерджим ветку `master` в ветку `bugFix`"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Так как ветка `bugFix` была предшественницей `master`, Git не делал ничего, только сдвинул `bugFix` на тот же коммит, где находится `master`",
|
||||
"",
|
||||
"Теперь все коммиты одного цвета, что означает, что каждая ветка содержит все изменения репозитория! Поздравляем!"
|
||||
],
|
||||
"command": "git checkout bugFix; git merge master",
|
||||
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit; git merge bugFix"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Чтобы пройти этот уровень сделай следующее:",
|
||||
"",
|
||||
"* Создай новыю ветку под названием `bugFix`",
|
||||
"* Переключись на новую ветку `bugFix` командой `git checkout bugFix`",
|
||||
"* Сделай один коммит",
|
||||
"* Вернись на ветку `master` при помощи `git checkout`",
|
||||
"* Сделай ещё один коммит",
|
||||
"* Слей ветку `bugFix` с веткой `master` при помощи `git merge`",
|
||||
"",
|
||||
"* Если что-то пошло не так - можешь подглядеть в жту шпаргалку командой \"objective\"!*"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -10,7 +10,8 @@ exports.level = {
|
|||
"fr_FR": "Introduction à rebase",
|
||||
"ko": "리베이스(rebase)의 기본",
|
||||
"zh_CN": "介绍 rebase",
|
||||
"zh_TW": "介紹 rebase"
|
||||
"zh_TW": "介紹 rebase",
|
||||
"ru_RU": "Введение в rebase"
|
||||
},
|
||||
"hint": {
|
||||
"en_US": "Make sure you commit from bugFix first",
|
||||
|
@ -21,7 +22,8 @@ exports.level = {
|
|||
"pt_BR": "O bugFix precisa ser commitado primeiro",
|
||||
"ko": "bugFix 브랜치에서 먼저 커밋하세요",
|
||||
"zh_CN": "确保你先在 bugFix 分支进行提交",
|
||||
"zh_TW": "你要先在 bugFix branch 進行 commit"
|
||||
"zh_TW": "你要先在 bugFix branch 進行 commit",
|
||||
"ru_RU": "Убедись, что сделал коммит в ветке bugFix"
|
||||
},
|
||||
"disabledMap": {
|
||||
"git revert": true
|
||||
|
@ -627,6 +629,73 @@ exports.level = {
|
|||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Git Rebase",
|
||||
"",
|
||||
"Второй способ объединения изменений в ветках - это *rebasing.* При ребэйзе Git по сути копирует набор коммитов и переносит их в другое место.",
|
||||
"",
|
||||
"Несмотря на то, что это звучит достаточно непонятно, преимущество rebase в том, что при его помощи можно делать чистые и красивые линейные последовательности коммитов. История коммитов будет чище, если вы применяете rebase.",
|
||||
"",
|
||||
"ПОсмотрим, как это работает..."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"У нас тут снова две ветки. Обрати внимание, что выбрана ветка bugFix (отмечена звёздочкой)",
|
||||
"",
|
||||
"Хочется сдвинуть наши изменения из bugFix прямо на вершину ветки master. Таким образом всё будет выглядеть, как будто эти изменения делались последовательно, хотя на самом деле - параллельно.",
|
||||
"",
|
||||
"Применим `git rebase`"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Супер! Теперь изменения из bugFix находятся в конце ветки master и являют собой линейную последовательность коммитов.",
|
||||
"",
|
||||
"Обрати внимание, что коммит С3 до сих пор существует где-то, а С3' - это его \"копия\" в ветке master",
|
||||
"",
|
||||
"Единственная проблема - ветка master не обновлена до последних изнменений. Это легко исправить."
|
||||
],
|
||||
"command": "git rebase master",
|
||||
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Вот мы выбрали ветку `master`. Вперёд - сделаем rebase на `bugFix`"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Вуаля! Так как `master` был предком `bugFix`, git просто сдвинул ссылку на `master` вперёд."
|
||||
],
|
||||
"command": "git rebase bugFix",
|
||||
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Чтобы пройти этот уровен, сделай следующее:",
|
||||
"",
|
||||
"* Переключись на ветку `bugFix`",
|
||||
"* Сделай коммит",
|
||||
"* Вернись на `master` и сделай коммит ещё раз",
|
||||
"* Переключись на bugFix и сделай rebase на master",
|
||||
"",
|
||||
"Удачи!"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue