mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-06-26 07:58:34 +02:00
Add zh-TW l10n
This commit is contained in:
parent
99525509c6
commit
3a10960941
21 changed files with 1003 additions and 25 deletions
|
@ -19,6 +19,16 @@ exports.dialog = {
|
|||
]
|
||||
}
|
||||
}],
|
||||
'zh_TW': [{
|
||||
type: 'ModalAlert',
|
||||
options: {
|
||||
markdowns: [
|
||||
'## 确定要看答案吗?',
|
||||
'',
|
||||
'哥相信你!你可以的'
|
||||
]
|
||||
}
|
||||
}],
|
||||
'fr_FR': [{
|
||||
type: 'ModalAlert',
|
||||
options: {
|
||||
|
|
|
@ -37,6 +37,25 @@ exports.dialog = {
|
|||
]
|
||||
}
|
||||
}],
|
||||
'zh_TW': [{
|
||||
type: 'ModalAlert',
|
||||
options: {
|
||||
markdowns: [
|
||||
'## 欢迎使用关卡生成器!',
|
||||
'',
|
||||
'主要步骤如下:',
|
||||
'',
|
||||
' * 使用 git 命令布置好初始环境',
|
||||
' * 使用 ```define start``` 命令定义起始树',
|
||||
' * 输入一系列 git 命令,编好答案',
|
||||
' * 使用 ```define goal``` 命令定义目标树。定义目标的同时定义答案',
|
||||
' * 还可以用 ```define hint``` 命令定义一个提示',
|
||||
' * 用 ```define name``` 修改名称',
|
||||
' * 还可以用 ```edit dialog``` 定义一个漂亮的开始对话框',
|
||||
' * 输入 ```finish``` 就可以输出你的关卡数据(JSON)了!'
|
||||
]
|
||||
}
|
||||
}],
|
||||
'fr_FR': [{
|
||||
type: 'ModalAlert',
|
||||
options: {
|
||||
|
|
|
@ -31,6 +31,16 @@ exports.dialog = {
|
|||
]
|
||||
}
|
||||
}],
|
||||
'zh_TW': [{
|
||||
type: 'ModalAlert',
|
||||
options: {
|
||||
markdowns: [
|
||||
'## 碉堡了!',
|
||||
'',
|
||||
'你用 *{numCommands}* 条命令搞定了这一关;我们的答案要用 {best}。'
|
||||
]
|
||||
}
|
||||
}],
|
||||
'fr_FR': [{
|
||||
type: 'ModalAlert',
|
||||
options: {
|
||||
|
|
|
@ -161,6 +161,58 @@ exports.dialog = {
|
|||
]
|
||||
}
|
||||
}],
|
||||
'zh_TW': [{
|
||||
type: 'ModalAlert',
|
||||
options: {
|
||||
markdowns: [
|
||||
'## 欢迎光临 LearnGitBranching!',
|
||||
'',
|
||||
'本应用旨在帮助初学者领会 git 分支背后的强大概念。',
|
||||
'希望你能喜欢这个应用,并学到知识!',
|
||||
'',
|
||||
'# 演示!',
|
||||
'',
|
||||
'如果你还没看过演示,请到此查看:',
|
||||
'',
|
||||
'[http://pcottle.github.io/learnGitBranching/?demo](http://pcottle.github.io/learnGitBranching/?demo)',
|
||||
'',
|
||||
'厌烦这个对话框? 在 URL 后头加上 `?NODEMO` 就看不到它了,也可以直接点下边这个链接:',
|
||||
'',
|
||||
'[http://pcottle.github.io/learnGitBranching/?NODEMO](http://pcottle.github.io/learnGitBranching/?NODEMO)'
|
||||
]
|
||||
}
|
||||
}, {
|
||||
type: 'ModalAlert',
|
||||
options: {
|
||||
markdowns: [
|
||||
'## Git 命令',
|
||||
'',
|
||||
'在沙盒模式里,你有好多命令可用。 包括:',
|
||||
'',
|
||||
' * commit',
|
||||
' * branch',
|
||||
' * checkout',
|
||||
' * cherry-pick',
|
||||
' * reset',
|
||||
' * revert',
|
||||
' * rebase',
|
||||
' * merge'
|
||||
]
|
||||
}
|
||||
}, {
|
||||
type: 'ModalAlert',
|
||||
options: {
|
||||
markdowns: [
|
||||
'## 分享即关怀',
|
||||
'',
|
||||
'使用 `export tree` 和 `import tree` 与朋友分享 Git 树',
|
||||
'',
|
||||
'有个好课程可以分享?试试用 `build level` 创建一个关卡,或者 `import level` 试试朋友的。',
|
||||
'',
|
||||
'言归正传,让我们先从 `levels` 开始……'
|
||||
]
|
||||
}
|
||||
}],
|
||||
'ko': [{
|
||||
type: 'ModalAlert',
|
||||
options: {
|
||||
|
|
|
@ -5,6 +5,7 @@ exports.strings = {
|
|||
'ja': '最後のレベルをクリアしました!すごい!!',
|
||||
'en_US': 'Wow! You finished the last level, great!',
|
||||
'zh_CN': '我的个天!你完成了最后一关,碉堡了!',
|
||||
'zh_TW': '我的个天!你完成了最后一关,碉堡了!',
|
||||
'fr_FR': 'Félicitations, vous avez réussi le dernier niveau !'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -13,6 +14,7 @@ exports.strings = {
|
|||
'en_US': 'Would you like to move on to *"{nextLevel}"*, the next level?',
|
||||
'ja': '次の章 *"{nextLevel}"* へ進みますか?',
|
||||
'zh_CN': '要不前进到下一关 *“{nextLevel}”*?',
|
||||
'zh_TW': '要不前进到下一关 *“{nextLevel}”*?',
|
||||
'fr_FR': 'Voulez-vous passer à *"{nextLevel}"*, le prochain niveau ?'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -21,6 +23,7 @@ exports.strings = {
|
|||
'en_US': 'Awesome! You matched or exceeded our solution.',
|
||||
'ja': '素晴らしい!このレベルをクリアしましたね。',
|
||||
'zh_CN': '牛鼻啊!你达到或者完爆了我们的答案。',
|
||||
'zh_TW': '牛鼻啊!你达到或者完爆了我们的答案。',
|
||||
'fr_FR': 'Fabuleux ! Votre solution a égalé ou surpassé notre solution.'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -29,6 +32,7 @@ exports.strings = {
|
|||
'en_US': 'See if you can whittle it down to {best} :D',
|
||||
'ja': '模範解答の回数={best}回でクリアする方法も考えてみましょう :D',
|
||||
'zh_CN': '试试看你能否在 {best} 之内搞定 :D',
|
||||
'zh_TW': '试试看你能否在 {best} 之内搞定 :D',
|
||||
'fr_FR': 'Voyons si vous pouvez descendre à {best} :D'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -61,6 +65,7 @@ exports.strings = {
|
|||
'__desc__': 'One of the lines for git status output',
|
||||
'en_US': 'Detached head!',
|
||||
'zh_CN': '脑袋搬家(Detached head)了!',
|
||||
'zh_TW': '脑袋搬家(Detached head)了!',
|
||||
'fr_FR': 'head détaché !'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -68,6 +73,7 @@ exports.strings = {
|
|||
'__desc__': 'One of the lines for git status output',
|
||||
'en_US': 'On branch {branch}',
|
||||
'zh_CN': '切换到分支 {branch}',
|
||||
'zh_TW': '切换到分支 {branch}',
|
||||
'fr_FR': 'Sur la branche {branch}'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -75,6 +81,7 @@ exports.strings = {
|
|||
'__desc__': 'One of the lines for git status output',
|
||||
'en_US': 'Ready to commit! (as always in this demo)',
|
||||
'zh_CN': '可以提交啦!(这演示里一直可以提交)',
|
||||
'zh_TW': '可以提交啦!(这演示里一直可以提交)',
|
||||
'fr_FR': 'Prêt à commit ! (comme toujours dans cette démo)'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -83,6 +90,7 @@ exports.strings = {
|
|||
'shoutout to your school / city / whatever!',
|
||||
'en_US': 'Quick commit. Go Bears!',
|
||||
'zh_CN': '快速提交。上啊月熊!',
|
||||
'zh_TW': '快速提交。上啊月熊!',
|
||||
'fr_FR': 'Commit rapide. NoMaN Sux!'
|
||||
},
|
||||
'git-error-origin-fetch-uptodate': {
|
||||
|
@ -121,6 +129,7 @@ exports.strings = {
|
|||
'en_US': 'You can\'t delete the master branch, the branch you are on, or things that ' +
|
||||
'aren\'t branches',
|
||||
'zh_CN': '你不能删除主分支(master),或者你当前所在的分支,或者其他不是分支也不知道能不能吃的东西。',
|
||||
'zh_TW': '你不能删除主分支(master),或者你当前所在的分支,或者其他不是分支也不知道能不能吃的东西。',
|
||||
'fr_FR': 'Vous ne pouvez supprimer la branche master, la branche sur laquelle vous êtes, ou ce qui n\'est pas une branche'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -128,6 +137,7 @@ exports.strings = {
|
|||
'__desc__': 'The commit message for a merge commit',
|
||||
'en_US': 'Merge {target} into {current}',
|
||||
'zh_CN': '合并 {target} 到 {current}',
|
||||
'zh_TW': '合并 {target} 到 {current}',
|
||||
'fr_FR': 'Merge de {target} dans {current}'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -135,6 +145,7 @@ exports.strings = {
|
|||
'__desc__': 'One of the error messages for git',
|
||||
'en_US': 'No commits to rebase! Everything is a merge commit or changes already applied',
|
||||
'zh_CN': '没有需要 rebase 的提交!都是个合并提交,或者已经 rebase 过了。',
|
||||
'zh_TW': '没有需要 rebase 的提交!都是个合并提交,或者已经 rebase 过了。',
|
||||
'fr_FR': 'Aucune commit à rebaser ! Tout est soit un commit de merge, soit des modifications déjà appliquées'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -142,6 +153,7 @@ exports.strings = {
|
|||
'__desc__': 'The message that explains the result of a git command',
|
||||
'en_US': 'Nothing to do...',
|
||||
'zh_CN': '没啥鸟事……',
|
||||
'zh_TW': '没啥鸟事……',
|
||||
'fr_FR': 'Rien à effectuer…'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -149,6 +161,7 @@ exports.strings = {
|
|||
'__desc__': 'The message that explains the result of a git command',
|
||||
'en_US': 'Fast forwarding...',
|
||||
'zh_CN': '快速前进……',
|
||||
'zh_TW': '快速前进……',
|
||||
'fr_FR': 'En avance rapide…'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -156,6 +169,7 @@ exports.strings = {
|
|||
'__desc__': 'The message that explains the result of a git command',
|
||||
'en_US': 'Branch already up-to-date',
|
||||
'zh_CN': '分支已经是最新啦',
|
||||
'zh_TW': '分支已经是最新啦',
|
||||
'fr_FR': 'Branche déjà à jour'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -163,6 +177,7 @@ exports.strings = {
|
|||
'__desc__': 'One of the error messages for git',
|
||||
'en_US': 'The ref {ref} does not exist or is unknown',
|
||||
'zh_CN': '索引 {ref} 不存在,或者找不到。',
|
||||
'zh_TW': '索引 {ref} 不存在,或者找不到。',
|
||||
'fr_FR': 'La référence {ref} n\'existe pas ou est inconnue'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -170,6 +185,7 @@ exports.strings = {
|
|||
'__desc__': 'One of the error messages for git',
|
||||
'en_US': 'Commit {commit} doesnot have a {match}',
|
||||
'zh_CN': '提交 {commit} 并没有 {match}',
|
||||
'zh_TW': '提交 {commit} 并没有 {match}',
|
||||
'fr_FR': 'Le commit {commit} n\'a pas de correspondance {match}'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -177,6 +193,7 @@ exports.strings = {
|
|||
'__desc__': 'One of the warning messages for git',
|
||||
'en_US': 'Warning!! Detached HEAD state',
|
||||
'zh_CN': '警告!脑袋搬家(Detached HEAD)状态',
|
||||
'zh_TW': '警告!脑袋搬家(Detached HEAD)状态',
|
||||
'fr_FR': 'Attention ! HEAD est détaché'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -184,6 +201,7 @@ exports.strings = {
|
|||
'__desc__': 'One of the warning messages for git',
|
||||
'en_US': 'No need to add files in this demo',
|
||||
'zh_CN': '此演示中不需要添加文件',
|
||||
'zh_TW': '此演示中不需要添加文件',
|
||||
'fr_FR': 'Aucun besoin d\'ajouter des fichiers dans cette démo'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -191,6 +209,7 @@ exports.strings = {
|
|||
'__desc__': 'One of the error messages for git',
|
||||
'en_US': 'Those options you specified are incompatible or incorrect',
|
||||
'zh_CN': '你所指定的参数不兼容或者不准确',
|
||||
'zh_TW': '你所指定的参数不兼容或者不准确',
|
||||
'fr_FR': 'Les options que vous avez spécifiées sont incompatibles ou incorrectes'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -198,6 +217,7 @@ exports.strings = {
|
|||
'__desc__': 'One of the error messages for git',
|
||||
'en_US': 'The commit {commit} already exists in your changes set, aborting!',
|
||||
'zh_CN': '提交 {commit} 已经存在于你的改动集里,正在中止!',
|
||||
'zh_TW': '提交 {commit} 已经存在于你的改动集里,正在中止!',
|
||||
'fr_FR': 'Le commit {commit} existe déjà dans votre ensemble de modifications, opération avortée !'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -205,6 +225,7 @@ exports.strings = {
|
|||
'__desc__': 'One of the error messages for git',
|
||||
'en_US': 'Can\'t reset in detached head! Use checkout if you want to move',
|
||||
'zh_CN': '不能在分离的 HEAD 里重置!用 checkout 吧',
|
||||
'zh_TW': '不能在分离的 HEAD 里重置!用 checkout 吧',
|
||||
'fr_FR': 'On ne peut pas effectuer un reset quand head est détaché. Utilisez checkout pour déplacer'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -212,6 +233,7 @@ exports.strings = {
|
|||
'__desc__': 'One of the warning messages for git',
|
||||
'en_US': 'The default behavior is a --hard reset, feel free to omit that option!',
|
||||
'zh_CN': '默认的行为是 --hard 硬重置,尽管省略掉那个选项吧!',
|
||||
'zh_TW': '默认的行为是 --hard 硬重置,尽管省略掉那个选项吧!',
|
||||
'fr_FR': 'Le comportement par défaut est un --hard reset, soyez libre d\'omettre cette option !'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -220,6 +242,7 @@ exports.strings = {
|
|||
'en_US': 'There is no concept of adding / staging files, so that option or ' +
|
||||
'command is invalid!',
|
||||
'zh_CN': '没有添加、缓存文件的必要,所以改选项或者命令是不合法的。',
|
||||
'zh_TW': '没有添加、缓存文件的必要,所以改选项或者命令是不合法的。',
|
||||
'fr_FR': 'Il n\'y a pas le concept d\'ajouter / mettre en staging, donc cette option ou commande est invalide'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -227,6 +250,7 @@ exports.strings = {
|
|||
'__desc__': 'Message for reverting git command',
|
||||
'en_US': 'Reverting {oldCommit}: {oldMsg}',
|
||||
'zh_CN': '撤销 {oldCommit}:{oldMsg}',
|
||||
'zh_TW': '撤销 {oldCommit}:{oldMsg}',
|
||||
'fr_FR': 'Revert {oldCommit}: {oldMsg}'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -234,6 +258,7 @@ exports.strings = {
|
|||
'__desc__': 'One of the error messages for git',
|
||||
'en_US': 'I expect at most {upper} argument(s) for {what}',
|
||||
'zh_CN': '{what} 期望最多 {upper} 个参数',
|
||||
'zh_TW': '{what} 期望最多 {upper} 个参数',
|
||||
'fr_FR': 'J\'attends au plus {upper} argument(s) pour {what}'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -241,6 +266,7 @@ exports.strings = {
|
|||
'__desc__': 'One of the error messages for git',
|
||||
'en_US': 'I expect at least {lower} argument(s) for {what}',
|
||||
'zh_CN': '{what} 期望最少 {lower} 个参数',
|
||||
'zh_TW': '{what} 期望最少 {lower} 个参数',
|
||||
'fr_FR': 'J\'attends au moins {upper} argument(s) pour {what}'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -248,6 +274,7 @@ exports.strings = {
|
|||
'__desc__': 'One of the error messages for git',
|
||||
'en_US': 'That command accepts no general arguments',
|
||||
'zh_CN': '该命令不接收参数',
|
||||
'zh_TW': '该命令不接收参数',
|
||||
'fr_FR': 'Cette commande n\'accepte aucun argument général'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -255,6 +282,7 @@ exports.strings = {
|
|||
'__desc__': 'The prompt to copy the tree when sharing',
|
||||
'en_US': 'Copy the tree string below',
|
||||
'zh_CN': '拷贝下面的树字符串',
|
||||
'zh_TW': '拷贝下面的树字符串',
|
||||
'fr_FR': 'Copiez la chaîne d\'arbre ci-dessous'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -264,6 +292,7 @@ exports.strings = {
|
|||
'ja': '日本語版リポジトリ',
|
||||
'ko': 'Git 브랜치 배우기',
|
||||
'zh_CN': '学习Git分支',
|
||||
'zh_TW': '学习Git分支',
|
||||
'fr_FR': 'Apprenez Git Branching'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -271,6 +300,7 @@ exports.strings = {
|
|||
'__desc__': 'The prompt to select a level on the drop down view',
|
||||
'en_US': 'Select a level',
|
||||
'zh_CN': '选择一关',
|
||||
'zh_TW': '选择一关',
|
||||
'fr_FR': 'Choisissez un niveau'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -278,6 +308,7 @@ exports.strings = {
|
|||
'__desc__': 'When branch names get too long, we need to truncate them. This is the warning for that',
|
||||
'en_US': 'Sorry, we need to keep branch names short for the visuals. Your branch name was truncated to 9 characters, resulting in "{branch}"',
|
||||
'zh_CN': '抱歉,为了显示的需要,我们需要一个短些的分支名称。您使用的将被截断到9个字符,即"{branch}"',
|
||||
'zh_TW': '抱歉,为了显示的需要,我们需要一个短些的分支名称。您使用的将被截断到9个字符,即"{branch}"',
|
||||
'fr_FR': 'Désolé, nous devons garder les noms de branches courts pour la visualisation. Votre nom de branche a été tronqué à 9 caractères, devenant "{branch}"'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -285,6 +316,7 @@ exports.strings = {
|
|||
'__desc__': 'When the user enters a branch name thats not ok',
|
||||
'en_US': 'That branch name "{branch}" is not allowed!',
|
||||
'zh_CN': '不能给分支起这个名字 "{branch}"',
|
||||
'zh_TW': '不能给分支起这个名字 "{branch}"',
|
||||
'fr_FR': 'Ce nom de branche "{branch}" n\'est pas autorisé'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -297,6 +329,7 @@ exports.strings = {
|
|||
'__desc__': 'When the user specifies an option that is not supported by our demo',
|
||||
'en_US': 'The option "{option}" is not supported!',
|
||||
'zh_CN': '不支持选项 "{option}"',
|
||||
'zh_TW': '不支持选项 "{option}"',
|
||||
'fr_FR': 'L\'option "{option}" n\'est pas supportée'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -304,6 +337,7 @@ exports.strings = {
|
|||
'__desc__': 'The line that shows how to format a git command',
|
||||
'en_US': 'git <command> [<args>]',
|
||||
'zh_CN': 'git <命令> [<参数>]',
|
||||
'zh_TW': 'git <命令> [<参数>]',
|
||||
'fr_FR': 'git <commande> [<arguments>]'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -311,6 +345,7 @@ exports.strings = {
|
|||
'__desc__': 'In the git help command, the header above the supported commands',
|
||||
'en_US': 'Supported commands:',
|
||||
'zh_CN': '支持的命令有:',
|
||||
'zh_TW': '支持的命令有:',
|
||||
'fr_FR': 'Commandes supportées'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -318,6 +353,7 @@ exports.strings = {
|
|||
'__desc__': 'In the dummy git output, the header before showing all the commands',
|
||||
'en_US': 'Usage:',
|
||||
'zh_CN': '使用:',
|
||||
'zh_TW': '使用:',
|
||||
'fr_FR': 'Utilisation :'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -325,6 +361,7 @@ exports.strings = {
|
|||
'__desc__': 'The git version dummy output, kind of silly. PCOTTLE is my unix name but feel free to put yours instead',
|
||||
'en_US': 'Git Version PCOTTLE.1.0',
|
||||
'zh_CN': 'Git 版本 PCOTTLE.1.0',
|
||||
'zh_TW': 'Git 版本 PCOTTLE.1.0',
|
||||
'fr_FR': 'Git version PCOTTLE.1.0'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -332,6 +369,7 @@ exports.strings = {
|
|||
'__desc__': 'when the tree is visually refreshed',
|
||||
'en_US': 'Refreshing tree...',
|
||||
'zh_CN': '正在刷新树结构...',
|
||||
'zh_TW': '正在刷新树结构...',
|
||||
'fr_FR': 'Actualisation de l\'arbre…'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -339,6 +377,7 @@ exports.strings = {
|
|||
'__desc__': 'when the locale is set to something',
|
||||
'en_US': 'Locale set to {locale}',
|
||||
'zh_CN': '语言更改为 {locale}',
|
||||
'zh_TW': '语言更改为 {locale}',
|
||||
'fr_FR': 'Langue changée à {locale}'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -346,6 +385,7 @@ exports.strings = {
|
|||
'__desc__': 'when the locale is reset',
|
||||
'en_US': 'Locale reset to default, which is {locale}',
|
||||
'zh_CN': '语言重置为默认的 {locale}',
|
||||
'zh_TW': '语言重置为默认的 {locale}',
|
||||
'fr_FR': 'Langue remise par défaut, qui est {locale}'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -365,6 +405,7 @@ exports.strings = {
|
|||
'__desc__': 'dummy command output for the command in the key',
|
||||
'en_US': 'Directory changed to "/directories/dont/matter/in/this/demo"',
|
||||
'zh_CN': '目录切换到 "/directories/dont/matter/in/this/demo"',
|
||||
'zh_TW': '目录切换到 "/directories/dont/matter/in/this/demo"',
|
||||
'fr_FR': 'Répertoire changé à "/directories/dont/matter/in/this/demo" (les répertoires ne servent à rien dans cette démo)'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -372,12 +413,14 @@ exports.strings = {
|
|||
'__desc__': 'Dummy command output for the command in the key',
|
||||
'en_US': 'DontWorryAboutFilesInThisDemo.txt',
|
||||
'zh_CN': 'DontWorryAboutFilesInThisDemo.txt (译: 在试验里不用担心文件.txt)',
|
||||
'zh_TW': 'DontWorryAboutFilesInThisDemo.txt (译: 在试验里不用担心文件.txt)',
|
||||
'fr_FR': 'DontWorryAboutFilesInThisDemo.txt (ne vous préoccupez pas des noms de fichier dans cette démo)'
|
||||
},
|
||||
'mobile-alert': {
|
||||
'__desc__': 'When someone comes to the site on a mobile device, they can not input commands so this is a nasty alert to tell them',
|
||||
'en_US': 'LGB can\'t receive input on mobile, visit on desktop! it\'s worth it :D',
|
||||
'zh_CN': '无法在移动设备/平板上调出键盘 :( 请试试桌面版 :D',
|
||||
'zh_TW': '无法在移动设备/平板上调出键盘 :( 请试试桌面版 :D',
|
||||
'fr_FR': 'Impossible de faire apparaître le clavier sur mobile / tablette :( Essayez de passer sur un ordinateur de bureau :D'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -385,6 +428,7 @@ exports.strings = {
|
|||
'__desc__': 'When you export a tree, we want you to share the tree with friends',
|
||||
'en_US': 'Share this tree with friends! They can load it with "import tree"',
|
||||
'zh_CN': '与你的好友分享提交树!他们可以用 "import tree" 加载它',
|
||||
'zh_TW': '与你的好友分享提交树!他们可以用 "import tree" 加载它',
|
||||
'fr_FR': 'Partagez cet arbre avec vos amis ! Ils peuvent le charger avec "import tree"'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -392,6 +436,7 @@ exports.strings = {
|
|||
'__desc__': 'When you are importing a level or tree',
|
||||
'en_US': 'Paste a JSON blob below!',
|
||||
'zh_CN': '在下边粘贴一个JSON串',
|
||||
'zh_TW': '在下边粘贴一个JSON串',
|
||||
'fr_FR': 'Collez un blob JSON ci-dessous !'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -399,6 +444,7 @@ exports.strings = {
|
|||
'__desc__': 'When you reset the solved map to clear your solved history, in case someone else wants to use your browser',
|
||||
'en_US': 'Solved map was reset, you are starting from a clean slate!',
|
||||
'zh_CN': '解决列表已重置,您现在从零开始了',
|
||||
'zh_TW': '解决列表已重置,您现在从零开始了',
|
||||
'fr_FR': 'La carte des niveaux résolus a été effacée, vous repartez de zéro !'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -406,6 +452,7 @@ exports.strings = {
|
|||
'__desc__': 'When the user tries to exit a level when they are not in one',
|
||||
'en_US': 'You are not in a level! You are in a sandbox, start a level with "levels"',
|
||||
'zh_CN': '您没在关卡中!您在沙盒中,要开始关卡请输入 "levels"',
|
||||
'zh_TW': '您没在关卡中!您在沙盒中,要开始关卡请输入 "levels"',
|
||||
'fr_FR': 'Vous n\'êtes pas dans un niveau ! Vous êtes dans le mode bac à sable, commencez un niveau avec "levels"'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -413,6 +460,7 @@ exports.strings = {
|
|||
'__desc__': 'When you say an id but that level doesnt exist',
|
||||
'en_US': 'A level for that id "{id}" was not found! Opening up a level selection view',
|
||||
'zh_CN': '没找到id为 "{id}" 的关卡!打开关卡选择框',
|
||||
'zh_TW': '没找到id为 "{id}" 的关卡!打开关卡选择框',
|
||||
'fr_FR': 'Le niveau dont l\'identifiant est {id} n\'a pas été trouvé ! Ouverture de la vue de sélection des niveaux'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -420,6 +468,7 @@ exports.strings = {
|
|||
'__desc__': 'The undo command can only undo back until the last time the level was reset or the beginning of the level',
|
||||
'en_US': 'The undo stack is empty!',
|
||||
'zh_CN': '还没有什么可以撤销',
|
||||
'zh_TW': '还没有什么可以撤销',
|
||||
'fr_FR': 'La pile d\'annulation est vide !'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -427,6 +476,7 @@ exports.strings = {
|
|||
'__desc__': 'When you play in a level that is already solved',
|
||||
'en_US': 'You have already solved this level, try other levels with "levels" or go back to sandbox with "sandbox"',
|
||||
'zh_CN': '你已经解决了本关,输入 "levels" 尝试其他关卡,或者输入 "sandbox" 回到沙盒中',
|
||||
'zh_TW': '你已经解决了本关,输入 "levels" 尝试其他关卡,或者输入 "sandbox" 回到沙盒中',
|
||||
'fr_FR': 'Vous avez déjà résolu ce niveau, essayez d\'autres niveaux avec "levels" ou revenez au bac à sable avec "sandbox"'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -434,6 +484,7 @@ exports.strings = {
|
|||
'__desc__': 'When you try a command that is disabled',
|
||||
'en_US': 'That git command is disabled for this level!',
|
||||
'zh_CN': '该命令在本关不允许使用!',
|
||||
'zh_TW': '该命令在本关不允许使用!',
|
||||
'fr_FR': 'Cette commande git est désactivée pour ce niveau !'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -441,6 +492,7 @@ exports.strings = {
|
|||
'__desc__': 'when you have made the level, prompt to share this',
|
||||
'en_US': 'Here is the JSON for this level! Share it with somenoe or send it to me on Github',
|
||||
'zh_CN': '这是一个关卡定义JSON!您可以分享它或者发到我的GitHub上',
|
||||
'zh_TW': '这是一个关卡定义JSON!您可以分享它或者发到我的GitHub上',
|
||||
'fr_FR': 'Voici le JSON pour ce niveau ! Partagez-le avec quelqu\'un ou envoyez-le moi sur Github'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -448,6 +500,7 @@ exports.strings = {
|
|||
'__desc__': 'prompt to add a start dialog',
|
||||
'en_US': 'You have not specified a start dialog, would you like to add one?',
|
||||
'zh_CN': '您还没有定义一开始的介绍,是否添加一个?',
|
||||
'zh_TW': '您还没有定义一开始的介绍,是否添加一个?',
|
||||
'fr_FR': 'Vous n\'avez pas spécifié de dialogue de départ, voulez-vous en ajouter un ?'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -455,6 +508,7 @@ exports.strings = {
|
|||
'__desc__': 'prompt to add a hint',
|
||||
'en_US': 'You have not specified a hint, would you like to add one?',
|
||||
'zh_CN': '您还没有定义提示,是否添加一个?',
|
||||
'zh_TW': '您还没有定义提示,是否添加一个?',
|
||||
'fr_FR': 'Vous n\'avez pas spécifié d\'indice, voulez-vous en ajouter un ?'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -462,6 +516,7 @@ exports.strings = {
|
|||
'__desc__': 'prompt for hint',
|
||||
'en_US': 'Enter the hint for this level, or leave this blank if you do not want to include one',
|
||||
'zh_CN': '请输入关卡提示,或者故意留空',
|
||||
'zh_TW': '请输入关卡提示,或者故意留空',
|
||||
'fr_FR': 'Entrez l\'indice pour ce niveau, ou laissez-le vide pour ne pas l\'inclure'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -469,6 +524,7 @@ exports.strings = {
|
|||
'__desc__': 'prompt for level name',
|
||||
'en_US': 'Enter the name for the level',
|
||||
'zh_CN': '输入关卡名',
|
||||
'zh_TW': '输入关卡名',
|
||||
'fr_FR': 'Entrez le nom pour ce niveau'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -476,6 +532,7 @@ exports.strings = {
|
|||
'__desc__': 'If you define a solution without any commands, aka a level that is solved without doing anything',
|
||||
'en_US': 'Your solution is empty!! Something is amiss',
|
||||
'zh_CN': '你的解法是空的!! 这应该是出错了',
|
||||
'zh_TW': '你的解法是空的!! 这应该是出错了',
|
||||
'fr_FR': 'Votre solution est vide !! Quelque chose ne tourne pas rond'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -483,6 +540,7 @@ exports.strings = {
|
|||
'__desc__': 'When you define the start point again, it overwrites the solution and goal so we add a warning',
|
||||
'en_US': 'Defining start point... solution and goal will be overwritten if they were defined earlier',
|
||||
'zh_CN': '定义开始点... 解决方法和目标会被新的替代',
|
||||
'zh_TW': '定义开始点... 解决方法和目标会被新的替代',
|
||||
'fr_FR': 'Redéfinition du point de départ… la solution et la cible seront écrasés s\'ils ont déjà été définis'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -490,6 +548,7 @@ exports.strings = {
|
|||
'__desc__': 'When you are in a level and you say help, its vague and you need to specify',
|
||||
'en_US': 'You are in a level, so multiple forms of help are available. Please select either "help level" to learn more about this lesson, "help general" for using Learn GitBranching, or "objective" to learn about how to solve the level.',
|
||||
'zh_CN': '您正在关卡中,这里有多种形式的帮助,请选择 "help level" (关卡帮助)或 "help general" (一般帮助)',
|
||||
'zh_TW': '您正在关卡中,这里有多种形式的帮助,请选择 "help level" (关卡帮助)或 "help general" (一般帮助)',
|
||||
'fr_FR': 'Vous êtes dans un niveau, donc plusieurs formes d\'aide sont disponibles. Merci de sélectionner soit "help level" pour en apprendre plus sur cette leçon, "help general" pour l\'utilisation de Learn GitBranching, ou "objective" pour apprendre comment résoudre le niveau'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -497,6 +556,7 @@ exports.strings = {
|
|||
'__desc__': 'When you are in a level builder, the help command is vague so you need to specify what you mean',
|
||||
'en_US': 'You are in a level builder, so multiple forms of help are available. Please select either "help general" or "help builder"',
|
||||
'zh_CN': '您正在进行关卡构建中,这里有多种形式的帮助,请选择 "help general" (一般帮助)或 "help builder" (关卡构建帮助)',
|
||||
'zh_TW': '您正在进行关卡构建中,这里有多种形式的帮助,请选择 "help general" (一般帮助)或 "help builder" (关卡构建帮助)',
|
||||
'fr_FR': 'Vous êtes dans l\'éditeur de niveaux, donc plusieurs formes d\'aide sont disponibles. Merci de sélectionner soit "help general" soit "help builder"'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -504,6 +564,7 @@ exports.strings = {
|
|||
'__desc__': 'title of window that shoes the goal tree to reach',
|
||||
'en_US': 'Goal To Reach',
|
||||
'zh_CN': '目标',
|
||||
'zh_TW': '目标',
|
||||
'fr_FR': 'Cible à atteindre'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -516,6 +577,7 @@ exports.strings = {
|
|||
'__desc__': 'the helper message for the window that shows the goal tree',
|
||||
'en_US': 'You can hide this window with "hide goal"',
|
||||
'zh_CN': '你可以通过命令 "hide goal" 关闭这个窗口',
|
||||
'zh_TW': '你可以通过命令 "hide goal" 关闭这个窗口',
|
||||
'fr_FR': 'Vous pouvez masquer cette fenêtre avec "hide goal"'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -523,6 +585,7 @@ exports.strings = {
|
|||
'__desc__': 'The helper message for the window that shows the start tree for a level',
|
||||
'en_US': 'You can hide this window with "hide start"',
|
||||
'zh_CN': '你可以通过命令 "hide start" 关闭这个窗口',
|
||||
'zh_TW': '你可以通过命令 "hide start" 关闭这个窗口',
|
||||
'fr_FR': 'Vous pouvez masquer cette fenêtre avec "hide start"'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -530,6 +593,7 @@ exports.strings = {
|
|||
'__desc__': 'The name for the environment where you build levels',
|
||||
'en_US': 'Level Builder',
|
||||
'zh_CN': '关卡生成器',
|
||||
'zh_TW': '关卡生成器',
|
||||
'fr_FR': 'Éditeur de niveaux'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -537,6 +601,7 @@ exports.strings = {
|
|||
'__desc__': 'when the user tries to open a start dialog for a level that does not have one',
|
||||
'en_US': 'There is no start dialog to show for this level!',
|
||||
'zh_CN': '介绍? 这关真没有!',
|
||||
'zh_TW': '介绍? 这关真没有!',
|
||||
'fr_FR': 'Il n\'y a aucun dialogue de départ à afficher pour ce niveau !'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -544,6 +609,7 @@ exports.strings = {
|
|||
'__desc__': 'when no hint is available for a level',
|
||||
'en_US': "Hmm, there doesn't seem to be a hint for this level :-/",
|
||||
'zh_CN': "提示?嗯,这关真没有哎~ :-/",
|
||||
'zh_TW': "提示?嗯,这关真没有哎~ :-/",
|
||||
'fr_FR': 'Hum, il ne semble pas y avoir d\'indice pour ce niveau :-/'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -551,6 +617,7 @@ exports.strings = {
|
|||
'__desc__': 'This error happens when we are trying to translate a specific key and the locale version is mission',
|
||||
'en_US': 'The translation for {key} does not exist yet :( Please hop on github and offer up a translation!',
|
||||
'zh_CN': '还没翻译 {key} :( 请在gitHub上贡献你的翻译!',
|
||||
'zh_TW': '还没翻译 {key} :( 请在gitHub上贡献你的翻译!',
|
||||
'fr_FR': 'La traduction pour {key} n\'existe pas encore :( Venez sur Github pour en offrir une !'
|
||||
},
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -558,6 +625,7 @@ exports.strings = {
|
|||
'__desc__': 'The general error when we encounter a dialog that is not translated',
|
||||
'en_US': 'This dialog or text is not yet translated in your locale :( Hop on github to aid in translation!',
|
||||
'zh_CN': '这段对话还没有被翻译成你的语言 :( 欢迎在gitHub上贡献你的翻译!',
|
||||
'zh_TW': '这段对话还没有被翻译成你的语言 :( 欢迎在gitHub上贡献你的翻译!',
|
||||
'fr_FR': 'Ce message n\'a pas encore été traduit dans votre langue :( Venez sur Github aider à la traduction !'
|
||||
}
|
||||
};
|
||||
|
|
|
@ -676,7 +676,10 @@ var IntlHelperBar = HelperBar.extend({
|
|||
id: 'korean'
|
||||
}, {
|
||||
text: '学习 Git 分支',
|
||||
id: 'chinese'
|
||||
id: 'chinese_s'
|
||||
}, {
|
||||
text: 'Git 分支',
|
||||
id: 'chinese_t'
|
||||
}, {
|
||||
text: 'français',
|
||||
id: 'french'
|
||||
|
@ -711,9 +714,14 @@ var IntlHelperBar = HelperBar.extend({
|
|||
this.hide();
|
||||
},
|
||||
|
||||
onChineseClick: function() {
|
||||
onSimpChineseClick: function() {
|
||||
this.fireCommand('locale zh_CN; levels');
|
||||
this.hide();
|
||||
},
|
||||
|
||||
onTradChineseClick: function() {
|
||||
this.fireCommand('locale zh_TW; levels');
|
||||
this.hide();
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -4,11 +4,13 @@ exports.level = {
|
|||
"startTree": "{\"branches\":{\"master\":{\"target\":\"C7\",\"id\":\"master\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C2\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C4\",\"C5\"],\"id\":\"C6\"},\"C7\":{\"parents\":[\"C6\"],\"id\":\"C7\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
|
||||
"name": {
|
||||
"en_US": "Multiple parents",
|
||||
"zh_CN": "多个父提交记录"
|
||||
"zh_CN": "多个父提交记录",
|
||||
"zh_TW": "多个父提交记录"
|
||||
},
|
||||
"hint": {
|
||||
"en_US": "Use `git branch bugWork` with a target commit to create the missing reference.",
|
||||
"zh_CN": "使用`git branch bugWork`加上一个目标提交记录来创建消失的引用。"
|
||||
"zh_CN": "使用`git branch bugWork`加上一个目标提交记录来创建消失的引用。",
|
||||
"zh_TW": "使用`git branch bugWork`加上一个目标提交记录来创建消失的引用。"
|
||||
},
|
||||
"startDialog": {
|
||||
"en_US": {
|
||||
|
@ -184,6 +186,93 @@ exports.level = {
|
|||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"zh_TW": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### 选择父提交",
|
||||
"",
|
||||
"和`~`修改符一样,`^`修改符之后也可以跟一个(可选的)数字。",
|
||||
"",
|
||||
"这不是用来指定向上返回几代(`~`的作用),`^`后的数字指定跟随合并提交记录的哪一个父提交。还记得一个合并提交有多个父提交吧,所有选择哪条路径不是那么清晰。",
|
||||
"",
|
||||
"Git默认选择跟随合并提交的\"第一个\"父提交,使用`^`后跟一个数字来改变这一默认行为。",
|
||||
"",
|
||||
"废话不多说,举个例子。",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"这里有一个合并提交。如果不加数字修改符直接切换到`master^`,会回到第一个父提交。",
|
||||
"",
|
||||
"(*在我们的图示中,第一个父提交是指合并提交正上方的那个父提交。*)"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"OK--这恰好是我们想要的。"
|
||||
],
|
||||
"command": "git checkout master^",
|
||||
"beforeCommand": "git checkout HEAD^; git commit; git checkout master; git merge C2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"现在来试试选择第二个父提交……"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"看见了吧?我们回到了第二个父提交。"
|
||||
],
|
||||
"command": "git checkout master^2",
|
||||
"beforeCommand": "git checkout HEAD^; git commit; git checkout master; git merge C2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"使用`^`和`~`可以自由在在提交树中移动:"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"快若闪电!"
|
||||
],
|
||||
"command": "git checkout HEAD~; git checkout HEAD^2; git checkout HEAD~2",
|
||||
"beforeCommand": "git commit; git checkout C0; git commit; git commit; git commit; git checkout master; git merge C5; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"再疯狂点,这些修改符支持链式操作!试一下这个:"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"和前面的结果一样,但只用了一条命令。"
|
||||
],
|
||||
"command": "git checkout HEAD~^2~2",
|
||||
"beforeCommand": "git commit; git checkout C0; git commit; git commit; git commit; git checkout master; git merge C5; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### 实践一下",
|
||||
"",
|
||||
"要完成此关,在指定的目标位置创建一个新的分支。",
|
||||
"",
|
||||
"很明显可以简单的直接使用提交记录的hash值(比如`C6`),但我要求你使用刚刚讲到的相对引用修饰符!"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -58,6 +58,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'ja': 'まずはここから',
|
||||
'fr_FR': 'Séquence d\'introduction',
|
||||
'zh_CN': '基础篇',
|
||||
'zh_TW': '基础篇',
|
||||
'ko': '기본 명령어'
|
||||
},
|
||||
about: {
|
||||
|
@ -65,6 +66,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'ja': 'gitの基本的なコマンド群をほどよいペースで学ぶ',
|
||||
'fr_FR': 'Une introduction en douceur à la majorité des commandes git',
|
||||
'zh_CN': '循序渐进介绍git主要命令',
|
||||
'zh_TW': '循序渐进介绍git主要命令',
|
||||
'ko': '브랜치 관련 주요 git 명령어를 깔끔하게 알려드립니다'
|
||||
}
|
||||
},
|
||||
|
@ -74,12 +76,14 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'ja': '次のレベルに進もう',
|
||||
'fr_FR': 'Montée en puissance',
|
||||
'zh_CN': '进阶篇'
|
||||
'zh_TW': '进阶篇'
|
||||
},
|
||||
about: {
|
||||
'en_US': 'The next serving of 100% git awesomes-ness. Hope you\'re hungry',
|
||||
'ja': '更にgitの素晴らしさを堪能しよう',
|
||||
'fr_FR' : 'Le prochain service git 100% excellence. J\'espère que vous êtes affamés',
|
||||
'zh_CN': '接下来是git的超赞特性。迫不及待了吧!'
|
||||
'zh_TW': '接下来是git的超赞特性。迫不及待了吧!'
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
|
@ -107,6 +111,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'ja': 'Rebaseをモノにする',
|
||||
'fr_FR': 'Maîtrise Rebase, Luke!',
|
||||
'zh_CN': '精通Rebase!',
|
||||
'zh_TW': '精通Rebase!',
|
||||
'ko': '리베이스 완전정복!'
|
||||
},
|
||||
about: {
|
||||
|
@ -116,6 +121,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'fr_FR': 'Qu\'est-ce que ce rebase dont tout le monde parle ? Découvrez-le !',
|
||||
'ko': '그 좋다고들 말하는 rebase에 대해 알아봅시다!',
|
||||
'zh_CN': '大家都在说的rebase究竟是神马?看看吧!'
|
||||
'zh_TW': '大家都在说的rebase究竟是神马?看看吧!'
|
||||
}
|
||||
},
|
||||
mixed: {
|
||||
|
@ -125,6 +131,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'fr_FR': 'Un assortiment',
|
||||
'ko': '종합선물세트',
|
||||
'zh_CN': '大杂烩?'
|
||||
'zh_TW': '大杂烩?'
|
||||
},
|
||||
about: {
|
||||
'en_US': 'A mixed bag of Git techniques, tricks, and tips',
|
||||
|
@ -132,6 +139,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'fr_FR': 'Un assortiment de techniques et astuces pour utiliser Git',
|
||||
'ko': 'Git을 다루는 다양한 팁과 테크닉을 다양하게 알아봅니다',
|
||||
'zh_CN': 'Git技术,技巧与贴士杂烩'
|
||||
'zh_TW': 'Git技术,技巧与贴士杂烩'
|
||||
}
|
||||
},
|
||||
advanced: {
|
||||
|
@ -139,11 +147,13 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'en_US': 'Advanced Topics',
|
||||
'fr_FR': 'Sujets Avancés',
|
||||
'zh_CN': '高级主题'
|
||||
'zh_TW': '高级主题'
|
||||
},
|
||||
about: {
|
||||
'en_US': 'For the truly brave!',
|
||||
'fr_FR': 'Pour les plus courageux !',
|
||||
'zh_CN': '只为真正的勇士!'
|
||||
'zh_TW': '只为真正的勇士!'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -6,13 +6,15 @@ exports.level = {
|
|||
"ja": "Gitのブランチ",
|
||||
"ko": "Git에서 브랜치 쓰기",
|
||||
"fr_FR": "Gérer les branches avec Git",
|
||||
"zh_CN": "建立Git分支"
|
||||
"zh_CN": "建立Git分支",
|
||||
"zh_TW": "建立Git分支"
|
||||
},
|
||||
"hint": {
|
||||
"en_US": "Make a new branch with \"git branch [name]\" and check it out with \"git checkout [name]\"",
|
||||
"ja": "ブランチの作成(\"git branch [ブランチ名]\")と、チェックアウト(\"git checkout [ブランチ名]\")",
|
||||
"fr_FR": "Faites une nouvelle branche avec \"git branch [nom]\" positionnez-vous dans celle-ci avec \"git checkout [nom]\"",
|
||||
"zh_CN": "用 'git branch [分支名]' 来创建分支,用 'git checkout [分支名]' 切换到分支",
|
||||
"zh_TW": "用 'git branch [分支名]' 来创建分支,用 'git checkout [分支名]' 切换到分支",
|
||||
"ko": "\"git branch [브랜치명]\"으로 새 브랜치를 만들고, \"git checkout [브랜치명]\"로 그 브랜치로 이동하세요"
|
||||
},
|
||||
"disabledMap": {
|
||||
|
@ -331,6 +333,84 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"zh_TW": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Git Branches",
|
||||
"",
|
||||
" Git 的分支非常轻量。它们只是简单地指向某个提交纪录——仅此而已。所以许多Git爱好者会念叨:",
|
||||
"",
|
||||
"```",
|
||||
"早点建分支!经常建分支!",
|
||||
"```",
|
||||
"",
|
||||
"创建分支没有储存或内存上的开销,所以按逻辑分解工作比维护单一的代码树要简单。",
|
||||
"",
|
||||
"同时使用分支和提交时,我们会看到两者如何配合。现在,只要记住使用分支其实就是在说:“我想包含本次提交及所有的父提交记录。”"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"举个例子看看分支究竟是什么。",
|
||||
"",
|
||||
"这里,我们切换到到名为`newImage`的新分支。"
|
||||
],
|
||||
"command": "git branch newImage",
|
||||
"afterMarkdowns": [
|
||||
"看,这就是建立分支所需的操作啦!`newImage`分支现在指向提交记录`C1`。"
|
||||
],
|
||||
"beforeCommand": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"现在让我们修改一下新分支。点击下面的按钮。"
|
||||
],
|
||||
"command": "git commit",
|
||||
"afterMarkdowns": [
|
||||
"啊摔!`master`分支前进了,但`newImage`分支没有哇!这是因为我们没有“在”这个新分支上,这也是为什么星号(*)只在 `master` 上。"
|
||||
],
|
||||
"beforeCommand": "git branch newImage"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"使用如下命令告诉git我们想要切换到新的分支",
|
||||
"",
|
||||
"```",
|
||||
"git checkout [name]",
|
||||
"```",
|
||||
"",
|
||||
"这可以让我们在提交修改之前切换到新的分支。"
|
||||
],
|
||||
"command": "git checkout newImage; git commit",
|
||||
"afterMarkdowns": [
|
||||
"好的嘞!新的分支已经记录了我们的修改。"
|
||||
],
|
||||
"beforeCommand": "git branch newImage"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"好啦,你已经准备好使用分支了。当前窗口关闭后,",
|
||||
"创建一个叫 `bugFix` 的新分支,然后切换过去。"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ko": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -5,6 +5,7 @@ exports.level = {
|
|||
"ja": "Gitのコミット",
|
||||
'ko': 'Git 커밋 소개',
|
||||
'zh_CN': 'Git Commits简介'
|
||||
'zh_TW': 'Git Commits简介'
|
||||
},
|
||||
"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",
|
||||
|
@ -13,6 +14,7 @@ exports.level = {
|
|||
"en_US": "Just type in 'git commit' twice to finish!",
|
||||
"fr_FR": "Il suffit de saisir 'git commit' deux fois pour réussir !",
|
||||
"zh_CN": "敲两次 'git commit' 就好啦!",
|
||||
"zh_TW": "敲两次 'git commit' 就好啦!",
|
||||
"ja": "'git commit'コマンドを2回打てば完成!",
|
||||
"ko": "'git commit'이라고 두 번 치세요!"
|
||||
},
|
||||
|
@ -241,6 +243,50 @@ exports.level = {
|
|||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"zh_TW": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Git Commits",
|
||||
"git仓库中的一次提交(commit)记录目录下所有文件的快照。感觉像是大量的复制和粘贴,但 git 做的不只这么简单!",
|
||||
"",
|
||||
"Git 希望提交记录尽可能地轻量,所以每次进行提交时,它不会简单地复制整个目录。实际上它把每次提交记录保存为从代码库的一个版本到下一个版本的变化集,或者说一个\"增量(delta)\"。所以,大部分提交记录都有一个父提交(parent commit)-- 我们会很快演示这一点。",
|
||||
"",
|
||||
"克隆(clone)代码库时,需要解包(unpack)或者“解析(resolve)”所有的差异。所以在克隆代码库时,可能会看见如下命令行输出:",
|
||||
"",
|
||||
"`resolving deltas`",
|
||||
"",
|
||||
"要学的东西有很多,但现在你可以把提交记录看作是项目的快照。提交记录非常轻量且可以快速切换!"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"在实践中学习commit。右边是一个(小)git代码库的图示。当前有两个提交记录—— 初始提交`C0`和其后可能包含有用修改的提交`C1`。",
|
||||
"",
|
||||
"点击下面的按钮生成新的提交记录。"
|
||||
],
|
||||
"command": "git commit",
|
||||
"afterMarkdowns": [
|
||||
"看!碉堡吧!我们修改了代码,并保存为一次提交记录。刚刚做的提交`C2`有一个父提交(parent)`C1`,代表此次修改的基础。"
|
||||
],
|
||||
"beforeCommand": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"接下来你可以随便测试。当前窗口关闭后,完成两次提交就可以过关!"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -6,13 +6,15 @@ exports.level = {
|
|||
"fr_FR": "Faire des 'merge' (fusions de branches) avec Git",
|
||||
"ko": "Git에서 브랜치 합치기(Merge)",
|
||||
"ja": "ブランチとマージ",
|
||||
"zh_CN": "分支与合并"
|
||||
"zh_CN": "分支与合并",
|
||||
"zh_TW": "分支与合并"
|
||||
},
|
||||
"hint": {
|
||||
"en_US": "Remember to commit in the order specified (bugFix before master)",
|
||||
"ja": "指示された順番でコミットすること(masterの前にbugFixで)",
|
||||
"fr_FR": "Pensez à faire des commits dans l'ordre indiqué (bugFix avant master)",
|
||||
"zh_CN": "记住按指定的顺序提交(bugFix先于master)",
|
||||
"zh_TW": "记住按指定的顺序提交(bugFix先于master)",
|
||||
"ko": "말씀드린 순서대로 커밋해주세요 (bugFix에 먼저 커밋하고 master에 커밋)"
|
||||
},
|
||||
"disabledMap": {
|
||||
|
@ -295,6 +297,75 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"zh_TW": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Branches and Merging",
|
||||
"",
|
||||
"Great! 我们已经知道怎么提交和使用分支了。接下来要学的一招是如何合并两个不同分支的工作。这让我们可以新建一个分支,在其上开发新功能,然后合并回主线。",
|
||||
"",
|
||||
"`git merge`是我们要学习的合并工作的第一个方法。合并产生一个特殊的提交记录,它包含两个唯一父提交。有两个父提交的提交记录本质上是:“我想把这两个父提交本身及它们的父提交集合都包含进来。”",
|
||||
"",
|
||||
"有图有真相,看看下面的图示就明白了。"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"当前有两个分支:各有一个唯一的提交。这意味着没有一个分支包含我们对代码库的所有修改。让我们合并这两个分支来解决这个问题。",
|
||||
"",
|
||||
"我们要把 `bugFix` 合并到 `master` "
|
||||
],
|
||||
"command": "git merge bugFix",
|
||||
"afterMarkdowns": [
|
||||
"哇!看见木有?首先,`master` 现在指向一个拥有两个父提交的提交记录。假如从 `master` 开始沿着箭头向上游走,在到达起点的路上会经过所有的提交记录。这说明有 `master` 包含了对代码库的所有修改。",
|
||||
"",
|
||||
"还有,看见各个提交记录的颜色变化了吗?为了帮助学习,我使用了颜色混合。每个分支都有特定的颜色。每个提交记录都变成了含有此提交的所有分支的混合色。",
|
||||
"",
|
||||
"所以,`master` 分支的颜色被混入到所有的提交记录,但 `bugFix` 没有。接下来就改一下这里吧。"
|
||||
],
|
||||
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"让我们把 `master` 分支合并到 `bugFix` 吧。"
|
||||
],
|
||||
"command": "git checkout bugFix; git merge master",
|
||||
"afterMarkdowns": [
|
||||
"因为 `bugFix` 分支在 `master` 分支的下游,git什么都不用做,只是简单地把`bugfix`分支移动到`master`指向的提交记录。",
|
||||
"",
|
||||
"现在所有的提交记录的颜色都是一样的啦,这表明每一个分支都包含了代码库的所有修改!走起!"
|
||||
],
|
||||
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit; git merge bugFix"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"想完成此关,执行收下操作:",
|
||||
"",
|
||||
"* 创建新分支 `bugFix` ",
|
||||
"* 用 `git checkout bugFix` 切换到 `bugFix`分支",
|
||||
"* 提交一次",
|
||||
"* 用 `git checkout` 切换回 `master` ",
|
||||
"* 再提交一次",
|
||||
"* 用 `git merge` 合并 `bugFix`分支进 `master`",
|
||||
"",
|
||||
"*记住,总是可以用 \"help level\" 命令来重新显示这个对话框!*"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ko": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -6,14 +6,16 @@ exports.level = {
|
|||
"ja": "Rebaseの解説",
|
||||
"fr_FR": "Introduction à rebase",
|
||||
"ko": "리베이스(rebase)의 기본",
|
||||
"zh_CN": "Rebase简介"
|
||||
"zh_CN": "Rebase简介",
|
||||
"zh_TW": "Rebase简介"
|
||||
},
|
||||
"hint": {
|
||||
"en_US": "Make sure you commit from bugFix first",
|
||||
"ja": "初めにbugFixを指した状態でコミットする",
|
||||
"fr_FR": "Assurez-vous de bien faire votre en premier votre commit sur bugFix",
|
||||
"ko": "bugFix 브랜치에서 먼저 커밋하세요",
|
||||
"zh_CN": "确保你先在 bugFix 分支进行提交"
|
||||
"zh_CN": "确保你先在 bugFix 分支进行提交",
|
||||
"zh_TW": "确保你先在 bugFix 分支进行提交"
|
||||
},
|
||||
"disabledMap": {
|
||||
"git revert": true
|
||||
|
@ -285,6 +287,73 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"zh_TW": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Git Rebase",
|
||||
"",
|
||||
"*rebasing*是在分支之间合并工作的第二种方法。Rebasing就是取出一系列的提交记录,\"复制\"它们,然后把在别的某个地方放下来。",
|
||||
"",
|
||||
"虽然听上去难以理解,rebasing 的优势是可以创造更线性的提交历史。假如只允许使用rebasing,代码库的提交日志/历史会更好看。",
|
||||
"",
|
||||
"让我们亲身体会下……"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"这里,还是有两个分支;注意当前分支是 bugFix(看那颗星)",
|
||||
"",
|
||||
"我们想要把 bugfix 里面的工作直接移到 master 分支上。使用这个方法,两个分支的功能看起来像是按顺序开发,实际上它们是平行开发的。",
|
||||
"",
|
||||
"用 `git rebase`实现此目标"
|
||||
],
|
||||
"command": "git rebase master",
|
||||
"afterMarkdowns": [
|
||||
"碉堡吧,现在 bugFix 分支上的工作在 master 的最前端,同时我们也得到了一个更线性的提交序列。",
|
||||
"",
|
||||
"注意,提交记录 C3 仍然存在(阴影的那货就是你了,还看什么看),而我们已经将 C3 复制到了master。",
|
||||
"",
|
||||
"现在唯一的问题是 master 分支还没有更新……下面就来更新它吧"
|
||||
],
|
||||
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"现在,切换到 `master` 分支。接下来就把它 rebase 到 `bugFix` 吧……"
|
||||
],
|
||||
"command": "git rebase bugFix",
|
||||
"afterMarkdowns": [
|
||||
"完成!因为 `master` 是 `bugFix` 的下游,所以 git 只把 `master` 分支的记录前移到 `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 上",
|
||||
"",
|
||||
"祝你好运啦!"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ko": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -23,7 +23,8 @@ exports.level = {
|
|||
"en_US": "Remember, interactive rebase or cherry-pick is your friend here",
|
||||
"ja": "このレベルではインタラクティブモードのrebaseやcherry-pickがクリアのカギです",
|
||||
"ko": "대화식 리베이스(rebase -i)나 or 체리픽(cherry-pick)을 사용하세요",
|
||||
"zh_CN": "记住,交互式 rebase 或者 cherry-pick 会很有帮助"
|
||||
"zh_CN": "记住,交互式 rebase 或者 cherry-pick 会很有帮助",
|
||||
"zh_TW": "记住,交互式 rebase 或者 cherry-pick 会很有帮助"
|
||||
},
|
||||
"startDialog": {
|
||||
"en_US": {
|
||||
|
@ -148,6 +149,47 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"zh_TW": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## 本地栈式提交 (Locally stacked commits)",
|
||||
"",
|
||||
"设想一下一个经常发生的场景:我在追踪一个有点棘手的 bug,为了更好地排查,我添加了一些调试命令和打印语句。",
|
||||
"",
|
||||
"所有的这些调试和打印语句都只在它们自己的分支里。最终我终于找到这个 bug,揪出来 fix 掉,然后撒花庆祝!",
|
||||
"",
|
||||
"现在唯一的问题就是要把我在 `bugFix` 分支里的工作合并回 `master` 分支。我可以简单地把 `master` 分支快进(fast-forward),但这样的话 `master` 分支就会包含我这些调试语句了。"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"现在就是 Git 大显神通的时候啦。解决这个问题的方法不止一个,但最直接的两个方法是:",
|
||||
"",
|
||||
"* `git rebase -i`",
|
||||
"* `git cherry-pick`",
|
||||
"",
|
||||
"交互(`-i`)衍合允许你选择哪些提交是要被保留,哪些要被舍弃。它允许你将提交重新排序。假如你要舍弃一些工作,这个会帮上很大的忙。",
|
||||
"",
|
||||
"Cherry-picking 能让你选择单独一个提交并且把它放到 `HEAD` 的最前端。"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"本关是可选关卡,玩不玩随便你。但是如果你坚持要刷,确保 `master` 分支能拿到 `bugFix` 分支的相关提交(references)。"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ko": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -21,13 +21,15 @@ exports.level = {
|
|||
"ko": "커밋들 갖고 놀기",
|
||||
"en_US": "Juggling Commits",
|
||||
"ja": "Juggling Commits",
|
||||
"zh_CN": "提交变换戏法"
|
||||
"zh_CN": "提交变换戏法",
|
||||
"zh_TW": "提交变换戏法"
|
||||
},
|
||||
"hint": {
|
||||
"en_US": "The first command is git rebase -i HEAD~2",
|
||||
"ja": "最初に打つコマンドはgit rebase -i HEAD~2",
|
||||
"ko": "첫번째 명령은 git rebase -i HEAD~2 입니다",
|
||||
"zh_CN": "第一个命令是 'git rebase -i HEAD~2'"
|
||||
"zh_CN": "第一个命令是 'git rebase -i HEAD~2'",
|
||||
"zh_TW": "第一个命令是 'git rebase -i HEAD~2'"
|
||||
},
|
||||
"startDialog": {
|
||||
"en_US": {
|
||||
|
@ -149,6 +151,45 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"zh_TW": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## 提交变换戏法",
|
||||
"",
|
||||
"下面这种情况也是经常出现的。例如你之前已经在 `newImage` 分支上做了一些提交,然后又在 `caption` 分支上做了一些相关的提交,因此它们看起来是一个连一个的(stacked on top of each other in your repository)。",
|
||||
"",
|
||||
"有点棘手的就是有时候你又想往先前的提交里做些小改动。呐,现在就是设计师想要我们去轻微改变下 `newImage` 的内容(change the dimensions slightly),尽管那个提交是很久很久以前的了。"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"为了实现他的愿望,我们可以按照下面的方法来做:",
|
||||
"",
|
||||
"* 先用 `git rebase -i` 将提交重新排序,然后把我们想要修改的提交挪到最前",
|
||||
"* 然后用 `commit --amend` 来进行一些小修改",
|
||||
"* 接着再用 `git rebase -i` 来将他们按最开始的顺序重新排好",
|
||||
"* 最后我们把 master 移到修改的最前端(用你自己喜欢的方法),就大功告成啦!",
|
||||
"",
|
||||
"当然还有许多方法可以完成这个任务(我知道你在看 cherry-pick 啦),之后我们会多点关注这些技巧啦,但现在暂时只专注上面这种方法。"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"啊最后还要提醒你一下最终的形式 —— 因为我们把这个提交移动了两次,所以会分别产生一个省略提交(both get an apostrophe appended)。还有一个省略提交是因为我们为了实现最终效果去修改提交而添加的。"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ko": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -20,13 +20,15 @@ exports.level = {
|
|||
"ko": "커밋 갖고 놀기 #2",
|
||||
"en_US": "Juggling Commits #2",
|
||||
"ja": "コミットをやりくりする その2",
|
||||
"zh_CN": "提交交换戏法 #2"
|
||||
"zh_CN": "提交交换戏法 #2",
|
||||
"zh_TW": "提交交换戏法 #2"
|
||||
},
|
||||
"hint": {
|
||||
"en_US": "Don't forget to forward master to the updated changes!",
|
||||
"ja": "masterのポインタを先に進めることを忘れずに!",
|
||||
"ko": "master를 변경 완료한 커밋으로 이동(forward)시키는 것을 잊지 마세요!",
|
||||
"zh_CN": "别忘记了将 master 快进到最新的更新上!"
|
||||
"zh_CN": "别忘记了将 master 快进到最新的更新上!",
|
||||
"zh_TW": "别忘记了将 master 快进到最新的更新上!"
|
||||
},
|
||||
"startDialog": {
|
||||
"en_US": {
|
||||
|
@ -154,6 +156,47 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"zh_TW": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## 提交变换戏法 #2",
|
||||
"",
|
||||
"*假如你还没有完成提交变换戏法 #1(前一关),这关不让玩哦!*",
|
||||
"",
|
||||
"如你在上一关所见,我们使用 `rebase -i` 来重排那些提交。只要把我们想要的提交挪到最顶端,我们就可以很容易地改变它,然后把它们重新排成我们想要的顺序。",
|
||||
"",
|
||||
"但唯一的问题就是这样做就要排很多次,有可能造成衍合冲突(rebase conflicts)。下面就看看用另外一种方法 `git cherry-pick` 是怎么做的吧。"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"要在心理牢记 cherry-pick 可以从提交树的任何地方拿一个提交来放在 HEAD 上(尽管那个提交不在上游)。",
|
||||
"",
|
||||
"下面是一个小小的演示:"
|
||||
],
|
||||
"command": "git cherry-pick C2",
|
||||
"afterMarkdowns": [
|
||||
"好滴咧,我们继续"
|
||||
],
|
||||
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"那么这关呢,和上一关一样要改变提交 `C2`,但你要避免使用 `rebase -i`。自己想想要怎么解决吧,骚年! :D"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ko": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -4,11 +4,13 @@ exports.level = {
|
|||
"startTree": "{\"branches\":{\"master\":{\"target\":\"C2\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C4\",\"id\":\"bugFix\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
|
||||
"name": {
|
||||
"en_US": "Detach yo' HEAD",
|
||||
"zh_CN": "分离HEAD"
|
||||
"zh_CN": "分离HEAD",
|
||||
"zh_TW": "分离HEAD"
|
||||
},
|
||||
"hint": {
|
||||
"en_US": "Use the label (hash) on the commit for help!",
|
||||
"zh_CN": "使用提交记录上的标签(hash)来求助!"
|
||||
"zh_CN": "使用提交记录上的标签(hash)来求助!",
|
||||
"zh_TW": "使用提交记录上的标签(hash)来求助!"
|
||||
},
|
||||
"startDialog": {
|
||||
"en_US": {
|
||||
|
@ -166,6 +168,84 @@ exports.level = {
|
|||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"zh_TW": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## 在Git中前后移动",
|
||||
"",
|
||||
"在接触Git的更多高级主题之前,我们先学习用不同的方法在代表你的项目的提交记录树上前后移动。",
|
||||
"",
|
||||
"一旦能够熟练地在Git中前进后退,你使用其他git命令的威力也会被放大!",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## HEAD",
|
||||
"",
|
||||
"我们首先看一下\"HEAD\". HEAD是当前提交记录的符号名称 -- 其实就是你正在其基础进行工作的提交记录。",
|
||||
"",
|
||||
"HEAD总是指向最近一次提交记录,表现为当前工作树。大多数修改工作树的git命令都开始于改变HEAD指向。",
|
||||
"",
|
||||
"HEAD通常指向分支名(比如bugFix)。你提交时,改变了bugFix的状态,这一变化通过HEAD变得可见。"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"在实例中看一下。我们将会观察提交前后HEAD的位置。"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"看! HEAD一直藏在`master`分支后面。"
|
||||
],
|
||||
"command": "git checkout C1; git checkout master; git commit; git checkout C2",
|
||||
"beforeCommand": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"### 分离 HEAD",
|
||||
"",
|
||||
"分离HEAD就是让其指向一个提交记录而不是分支名。这是命令执行之前的样子: ",
|
||||
"",
|
||||
"HEAD -> master -> C1",
|
||||
""
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"现在变成了",
|
||||
"",
|
||||
"HEAD -> C1"
|
||||
],
|
||||
"command": "git checkout C1",
|
||||
"beforeCommand": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"想完成此关,从`bugFix`分离出HEAD并让其指向一个提交记录。",
|
||||
"",
|
||||
"通过hash值指定提交记录。每个提交记录的hash值显示在代表提交记录的圆圈中。"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -4,11 +4,13 @@ exports.level = {
|
|||
"startTree": "{\"branches\":{\"master\":{\"target\":\"C2\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C4\",\"id\":\"bugFix\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
|
||||
"name": {
|
||||
"en_US": "Relative Refs (^)",
|
||||
"zh_CN": "相对引用(^)"
|
||||
"zh_CN": "相对引用(^)",
|
||||
"zh_TW": "相对引用(^)"
|
||||
},
|
||||
"hint": {
|
||||
"en_US": "Remember the Caret (^) operator!",
|
||||
"zh_CN": "记住插入(^)操作符!"
|
||||
"zh_CN": "记住插入(^)操作符!",
|
||||
"zh_TW": "记住插入(^)操作符!"
|
||||
},
|
||||
"startDialog": {
|
||||
"en_US": {
|
||||
|
@ -160,6 +162,81 @@ exports.level = {
|
|||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"zh_TW": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## 相对引用",
|
||||
"",
|
||||
"用指定提交记录hash值的方式在Git中移动会变得比较乏味。在现实中,你不会有漂亮的可视化的提交记录树放在终端旁边,所以你不得不用`git log`来查看hasn值。",
|
||||
"",
|
||||
"另外,hash值在真实的Git环境中也会更长。举个例子,前一关的介绍中的提交记录的hash值是`fed2da64c0efc5293610bdd892f82a58e8cbc5d8`。不要把舌头闪了...",
|
||||
"",
|
||||
"好的一面是,Git对hash的处理很智能。你只需要提供能够唯一标识提交记录的前几个字符即可。所以,我可以仅输入`fed2`而不是上面的一长串字符。"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"我说过,通过hash指定提交记录不是很方便,所以Git引入了相对引用。这个就很牛掰了!",
|
||||
"",
|
||||
"使用相对引用,你可以从一个易于记忆的地方(比如分支名`bugFix`或`HEAD`)开始工作。",
|
||||
"",
|
||||
"相对引用非常给力,这里我介绍两个简单的用法:",
|
||||
"",
|
||||
"* 使用`^`向上移动1个提交记录",
|
||||
"* 使用`~<num>`向上移动多个提交记录"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"首先看看插入(^)操作符。把插入符跟在引用名后面,表示让Git寻找指定提交记录的父提交。",
|
||||
"",
|
||||
"所以`master^`相当于\"`master`的父提交\"。",
|
||||
"",
|
||||
"`master^^`是`master`的父父提交(上上代祖先)",
|
||||
"",
|
||||
"切换到master的父提交"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"唰!搞定。这种方式比输入提交记录的hash值简单多了!"
|
||||
],
|
||||
"command": "git checkout master^",
|
||||
"beforeCommand": "git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"你也可以`HEAD`把用作相对引用。以下命令使用`HEAD`在提交树中向上移动几次。"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"简单!我们可以一直使用`HEAD^`向上移动。"
|
||||
],
|
||||
"command": "git checkout C3; git checkout HEAD^; git checkout HEAD^; git checkout HEAD^",
|
||||
"beforeCommand": "git commit; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"要完成此关,切换到`bugFix`的父提交。这会分离出`HEAD`.",
|
||||
"",
|
||||
"如果你愿意的话,使用hash值也可以过关,但为何不试试使用相对引用呢?"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -4,11 +4,13 @@ exports.level = {
|
|||
"startTree": "{\"branches\":{\"master\":{\"target\":\"C4\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C5\",\"id\":\"bugFix\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C2\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C3\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C5\"],\"id\":\"C6\"}},\"HEAD\":{\"target\":\"C2\",\"id\":\"HEAD\"}}",
|
||||
"hint": {
|
||||
"en_US": "You'll need to use at least one direct reference (hash) to complete this level",
|
||||
"zh_CN": "这一关至少要用到一次直接引用(hash)"
|
||||
"zh_CN": "这一关至少要用到一次直接引用(hash)",
|
||||
"zh_TW": "这一关至少要用到一次直接引用(hash)"
|
||||
},
|
||||
"name": {
|
||||
"en_US": "Relative Refs #2 (~)",
|
||||
"zh_CN": "相对引用2(~)"
|
||||
"zh_CN": "相对引用2(~)",
|
||||
"zh_TW": "相对引用2(~)"
|
||||
},
|
||||
"startDialog": {
|
||||
"en_US": {
|
||||
|
@ -133,6 +135,60 @@ exports.level = {
|
|||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"zh_TW": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### The \"~\" operator",
|
||||
"",
|
||||
"假设需要在提交树中向上移动很多步。使用多个`^`非常无聊,所以Git也引入了波浪(~)操作符。",
|
||||
"",
|
||||
"",
|
||||
"波浪操作符后面可以(可选地)跟一个数字,指定向上移动多少次。看个例子"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"使用`~`一次后退多步."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"唰!如此简洁--相对引用就是好啊!"
|
||||
],
|
||||
"command": "git checkout HEAD~4",
|
||||
"beforeCommand": "git commit; git commit; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Branch forcing",
|
||||
"",
|
||||
"你现在是相对引用的高手了,现在*用*他来实际做点事情。",
|
||||
"",
|
||||
"我使用相对引用最多的就是移动分支。你可以使用`-f`选项把直接让分支指向另一个提交。举个例子:",
|
||||
"",
|
||||
"`git branch -f master HEAD~3`",
|
||||
"",
|
||||
"(强制)移动master指向HEAD的第3级父提交。"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"要完成此关,移动`HEAD`,`master`和`bugFix`到目标所示的位置。"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -8,12 +8,14 @@ exports.level = {
|
|||
"ja": "変更を元に戻す",
|
||||
"fr_FR": "Annuler des changements avec Git",
|
||||
"ko": "Git에서 작업 되돌리기",
|
||||
"zh_CN": "在Git中撤销更改"
|
||||
"zh_CN": "在Git中撤销更改",
|
||||
"zh_TW": "在Git中撤销更改"
|
||||
},
|
||||
"hint": {
|
||||
"en_US": "Notice that revert and reset take different arguments.",
|
||||
"fr_FR": "",
|
||||
"zh_CN": "注意revert和reset使用不同的参数。",
|
||||
"zh_TW": "注意revert和reset使用不同的参数。",
|
||||
"ko": "",
|
||||
"ja": ""
|
||||
},
|
||||
|
@ -270,6 +272,69 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"zh_TW": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## 撤销 Git 里面的变动",
|
||||
"",
|
||||
"在 Git 里撤销修改的方法很多。和 commit 一样,在 Git 里撤销变动同时具有底层部分(暂存一些独立的文件或者片段)和高层部分(具体到变动是究竟怎么被撤销的)。我们这个应用主要关注后者。",
|
||||
"",
|
||||
"在 Git 里主要用两种方法来撤销变动 —— 一种是 `git reset`,另外一种是 `git revert`。让我们在下一个窗口逐一了解它们。",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"## Git Reset",
|
||||
"",
|
||||
"`git reset`把分支记录回退到上一个提交记录来实现撤销改动。你可以认为这是在\"重写历史\"。`git reset`往回移动分支,原来指向的提交记录好像重来没有提交过一样。",
|
||||
"",
|
||||
"让我们看看具体的操作:"
|
||||
],
|
||||
"command": "git reset HEAD~1",
|
||||
"afterMarkdowns": [
|
||||
"Nice!Git把master分支的指向简单地移回到`C1`;现在我们的本地代码库处于没有提交过`C2`的状态了。"
|
||||
],
|
||||
"beforeCommand": "git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"## Git Revert",
|
||||
"",
|
||||
"虽然在你的本地分支中使用`git reset`很方便,但是这种“改写历史”的方法对别人的远端分支是无效的哦!",
|
||||
"",
|
||||
"为了撤销更改并*传播*给别人,我们需要使用`git revert`。举个例子"
|
||||
],
|
||||
"command": "git revert HEAD",
|
||||
"afterMarkdowns": [
|
||||
"怪哉!在我们要撤销的提交记录后面居然多了一个新提交!这是因为新提交记录`C2'`引入了*更改*——刚好是用来撤销 `C2` 这个提交的。",
|
||||
"",
|
||||
"借助 revert,现在可以把你的更改传递给别人啦。"
|
||||
],
|
||||
"beforeCommand": "git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"要完成此关,分别撤销`local`分支和`pushed`分支上的最近一次提交。",
|
||||
"",
|
||||
"记住 `pushed` 是一个远程分支,`local` 是一个本地分支 —— 有了这么明显的提示应该知道用哪种方法了吧?"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ko": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -11,13 +11,15 @@ exports.level = {
|
|||
"en_US": "Rebasing over 9000 times",
|
||||
"ko": "9천번이 넘는 리베이스",
|
||||
"ja": "Rebasing over 9000 times",
|
||||
"zh_CN": "N次Rebase"
|
||||
"zh_CN": "N次Rebase",
|
||||
"zh_TW": "N次Rebase"
|
||||
},
|
||||
"hint": {
|
||||
"en_US": "Remember, the most efficient way might be to only update master at the end...",
|
||||
"ja": "最も効率的なやり方はmasterを最後に更新するだけかもしれない・・・",
|
||||
"ko": "아마도 master를 마지막에 업데이트하는 것이 가장 효율적인 방법일 것입니다...",
|
||||
"zh_CN": "记住,最后更新master分支可能是最高效的方法。"
|
||||
"zh_CN": "记住,最后更新master分支可能是最高效的方法。",
|
||||
"zh_TW": "记住,最后更新master分支可能是最高效的方法。"
|
||||
},
|
||||
"startDialog": {
|
||||
"en_US": {
|
||||
|
@ -74,6 +76,24 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"zh_TW": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### 多分支衍合",
|
||||
"",
|
||||
"呐,现在我们有很多分支啦!让我们rebase这些分支的工作到 master 分支上吧。",
|
||||
"",
|
||||
"但是你的头头找了点麻烦 —— 他们希望得到有序的提交历史,也就是我们最终的结果是 `C7'` 在最底部,`C6'` 在它上面,以此类推。",
|
||||
"",
|
||||
"假如你搞砸了,没所谓的(虽然我不会告诉你用 `reset` 可以重新开始)。记得看看我们提供的答案,看你能否使用更少的命令完成任务!"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ko": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -10,13 +10,15 @@ exports.level = {
|
|||
"ko": "브랜치 스파게티",
|
||||
"en_US": "Branch Spaghetti",
|
||||
"ja": "ブランチスパゲッティ",
|
||||
"zh_CN": "分支浆糊"
|
||||
"zh_CN": "分支浆糊",
|
||||
"zh_TW": "分支浆糊"
|
||||
},
|
||||
"hint": {
|
||||
"en_US": "Make sure to do everything in the proper order! Branch one first, then two, then three",
|
||||
"ja": "全て正しい順番で処理すること!oneが最初で、次がtwo、最後にthreeを片付ける。",
|
||||
"ko": "이 문제를 해결하는 방법은 여러가지가 있습니다! 체리픽(cherry-pick)이 가장 쉽지만 오래걸리는 방법이고, 리베이스(rebase -i)가 빠른 방법입니다",
|
||||
"zh_CN": "确保你是按照正确的顺序来操作!先操作分支 `one`, 然后 `two`, 最后才是 `three`"
|
||||
"zh_CN": "确保你是按照正确的顺序来操作!先操作分支 `one`, 然后 `two`, 最后才是 `three`",
|
||||
"zh_TW": "确保你是按照正确的顺序来操作!先操作分支 `one`, 然后 `two`, 最后才是 `three`"
|
||||
},
|
||||
"startDialog": {
|
||||
"en_US": {
|
||||
|
@ -79,6 +81,26 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"zh_TW": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Branch Spaghetti",
|
||||
"",
|
||||
"哇塞大神!这关我们要来点不同的!",
|
||||
"",
|
||||
"现在我们的 `master` 分支是比 `one` `two` 和 `three` 要多几个提交。出于某种原因,我们需要把其他三个分支更新到 master 分支上新近的几个不同提交上。(update these three other brances with modified versions of the last few commits on master)",
|
||||
"",
|
||||
"分支 `one` 需要重新排序和撤销, `two` 需要完全重排,而 `three` 只需要提交一次。",
|
||||
"",
|
||||
"慢慢摸索会找到答案的 —— 你完事记得用 `show solution` 看看我们的答案哦。"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ko": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue