translation

This commit is contained in:
Marc-Olivier Arsenault 2014-06-04 20:48:40 -04:00
commit 1c5a3c242d
24 changed files with 724 additions and 724 deletions

View file

@ -1,377 +1,377 @@
exports.level = {
"goalTreeString": "%7B%22branches%22%3A%7B%22master%22%3A%7B%22target%22%3A%22C3%27%22%2C%22id%22%3A%22master%22%7D%2C%22newImage%22%3A%7B%22target%22%3A%22C2%22%2C%22id%22%3A%22newImage%22%7D%2C%22caption%22%3A%7B%22target%22%3A%22C3%22%2C%22id%22%3A%22caption%22%7D%7D%2C%22commits%22%3A%7B%22C0%22%3A%7B%22parents%22%3A%5B%5D%2C%22id%22%3A%22C0%22%2C%22rootCommit%22%3Atrue%7D%2C%22C1%22%3A%7B%22parents%22%3A%5B%22C0%22%5D%2C%22id%22%3A%22C1%22%7D%2C%22C2%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C2%22%7D%2C%22C3%22%3A%7B%22parents%22%3A%5B%22C2%22%5D%2C%22id%22%3A%22C3%22%7D%2C%22C2%27%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C2%27%22%7D%2C%22C2%27%27%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C2%27%27%22%7D%2C%22C3%27%22%3A%7B%22parents%22%3A%5B%22C2%27%27%22%5D%2C%22id%22%3A%22C3%27%22%7D%7D%2C%22HEAD%22%3A%7B%22target%22%3A%22master%22%2C%22id%22%3A%22HEAD%22%7D%7D",
"solutionCommand": "git checkout master;git cherry-pick C2;git commit --amend;git cherry-pick C3",
"disabledMap": {
"git revert": true
},
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"newImage\":{\"target\":\"C2\",\"id\":\"newImage\"},\"caption\":{\"target\":\"C3\",\"id\":\"caption\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"caption\",\"id\":\"HEAD\"}}",
"compareOnlyMasterHashAgnosticWithAsserts": true,
"goalAsserts": {
"master": [
function(data) {
return data.C2 > data.C3;
},
function(data) {
return data.C2 > data.C1;
}
]
},
"name": {
"ko": "커밋 갖고 놀기 #2",
"en_US": "Juggling Commits #2",
"fr_FR": "Jongler avec les commits #2",
"es_AR": "Haciendo malabares con los commits #2",
"de_DE": "Jonglieren mit Commits Teil 2",
"ja": "コミットをやりくりする その2",
"zh_CN": "提交交换戏法 #2",
"zh_TW": "commit 的戲法 #2"
},
"hint": {
"en_US": "Don't forget to forward master to the updated changes!",
"fr_FR": "N'oublier pas de forwardes la branch master dans la nouvelle branch",
"es_AR": "¡No te olvides de avanzar master a los cambios actualizados!",
"de_DE": "Vergiss nicht den master auf die aktuelle Version vorzuspulen",
"ja": "masterのポインタを先に進めることを忘れずに",
"ko": "master를 변경 완료한 커밋으로 이동(forward)시키는 것을 잊지 마세요!",
"zh_CN": "别忘记了将 master 快进到最新的更新上!",
"zh_TW": "別忘記了將 master 推到最新的 commit 上面!"
},
"startDialog": {
"en_US": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Juggling Commits #2",
"",
"*If you haven't completed Juggling Commits #1 (the previous level), please do so before continuing*",
"",
"As you saw in the last level, we used `rebase -i` to reorder the commits. Once the commit we wanted to change was on top, we could easily --amend it and re-order back to our preferred order.",
"",
"The only issue here is that there is a lot of reordering going on, which can introduce rebase conflicts. Let's look at another method with `git cherry-pick`"
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Remember that git cherry-pick will plop down a commit from anywhere in the tree onto HEAD (as long as that commit isn't an ancestor of HEAD).",
"",
"Here's a small refresher demo:"
],
"afterMarkdowns": [
"Nice! Let's move on"
],
"command": "git cherry-pick C2",
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"So in this level, let's accomplish the same objective of amending `C2` once but avoid using `rebase -i`. I'll leave it up to you to figure it out! :D",
"",
"Remember, the exact number of apostrophe's (') on the commit are not important, only the relative differences. For example, I will give credit to a tree that matches the goal tree but has one extra apostrophe everywhere"
]
}
}
]
},
"fr_FR": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Jongler avec les commits #2",
"",
"*Si vous n'avez pas fait le défi Jongler avec les commits #1 (le niveau précédent), vous devriez le faire avant*",
"",
"Comme fait dans le niveau précédent, nous utilisons `rebase -i` pour réordonner les commits. Si le commit a modifier est celui à la tête, faite un --amend et réordonné le dans l'ordre voulu.",
"",
"La difficulté ici est qu'il y a beaucoup de changement, ce qui peut introduire des conflits de rebase. Essayons avec le `git cherry-pick`"
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"N'oublier pas que git cherry-pick va prendre un commit de n'importe ou dans l'arbre de git et le mettre devant le HEAD. Sauf si il est l'ancètre de la branche courante.",
"",
"Un petit rappel:"
],
"afterMarkdowns": [
"Maintenant, continuons"
],
"command": "git cherry-pick C2",
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Dans ce niveau, nous voulons modifier `C2` sans utiliser `rebase -i`. As vous maintenant de trouver comment! :D",
"",
"Petit rappel, le nombre exact d'apostrophe (') sur le commit n'est pas important. Par exemple, Nous allons donner les points si la structure est bonne mais qu'il y a une apostrophe de trop."
]
}
}
]
},
"es_AR": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Haciendo malabares con los commits #2",
"",
"*Si no completaste Haciendo malabares con los commits #1 (el nivel anterior), hacelo antes de continuar*",
"",
"Como viste en el último nivel, usamos `rebase -i` para reordenar los commits. Una vez que el commit que queríamos cambiar estaba arriba de todo, pudimos `--amend`earlo fácilmente y reordenarlo a como queríamos.",
"",
"El único problema con esto es que hay mucho reordenamiento, que puede generar conflictos al rebasear. Veamos otro método usando `git cherry-pick`"
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Acordate de que git cherry-pick va a traer un commit de cualquier parte del árbol sobre HEAD (siempre que ese otro commit no sea un ancestro de HEAD).",
"",
"Una pequeña demo para refrescar la idea:"
],
"afterMarkdowns": [
"¡Bien! Sigamos..."
],
"command": "git cherry-pick C2",
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Entonces, en este nivel vamos a lograr el mismo objetivo de corregir `C2`, pero sin usar `rebase -i`. Te dejo a vos el darte cuenta cómo :D",
"",
"Acordate, la cantidad exacta de apóstrofes (') en el commit no es importante, sólo la diferencia relativa. Por ejemplo, le voy a dar puntaje a un árbol que matchee el objetivo pero cuyos commits tengan todos un apóstrofe extra"
]
}
}
]
},
"de_DE": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Jonglieren mit Commits Teil 2",
"",
"Du solltest \"Jonglieren mit Commits\" (den vorherigen Level) bestanden haben, bevor du dich an diesem hier versuchst.",
"",
"Wie du im letzten Level gesehen hast haben wir `git rebase -i` genutzt, um die Commits neu anzuordnen. Sobald der Commit, den wir ändern wollte, ganz oben war, konnten wir das auch einfach mit `git commit --amend` tun. Danach haben wir die alte Reihenfolge wiederhergestellt.",
"",
"Das einzige Problem ist hier, dass da eine Menge Umsortieren stattfindet, was zu Rebase-Konflikten führen kann. Schauen wir uns also eine Methode mit `git cherry-pick` an."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Wie du dich erinnerst macht `git cherry-pick` eine Kopie des angegebenen Commits und fügt sie an `HEAD` an (es sei denn der Commit ist ein Vorgänger von `HEAD`).",
"",
"Hier eine kleine Demo zur Erinnerung:"
],
"afterMarkdowns": [
"Schick! Und weiter geht's."
],
"command": "git cherry-pick C2",
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"In diesem Level geht es also auch um das Ziel den Commit `C2` zu modifizieren, aber ohne `git rebase -i` zu benutzen. Ich überlass es dir herauszufinden, wie das gehen soll. :D",
"",
"Nicht vergessen, die genaue Anzahl von Kopien (d.h. Apostrophs) ist nicht ausschlaggebend, nur die Differenz. Der Level ist zum Beispiel auch gelöst, wenn dein fertiger Baum dieselbe Struktur wie der Ziel-Baum hat, aber *überall* ein Apostroph mehr aufweist."
]
}
}
]
},
"ja": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## コミットをやりくりする その2",
"",
"*注意 この一つ前のレベル「コミットをやりくりする」をクリアしていない人は、まずそちらの問題をクリアしてきてください*",
"",
"前回見てきたように、コミット順序の変更のために、私たちは`rebase -i`コマンドを利用しました。ツリーの先頭に変更対象のコミットがあれば、--amendオプションを使うことで容易に変更を書きかえて、元の順序に戻すことができます。",
"",
"この場合に心配なことが一つだけあって、それは複数回の順序の変更が行われるので、rebaseのコンフリクト衝突が起こりうることです。こういうケースへの対策として、`git cherry-pick`を使った別の解決法について考えてみましょう。"
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"git cherry-pickを使うと、ツリーの中から複数のコミットを選んで、HEADの下に新しく作ることができましたね。",
"",
"簡単なデモを見てみましょう:"
],
"afterMarkdowns": [
"できました!次へ進みましょう"
],
"command": "git cherry-pick C2",
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"このレベルでは、`C2`をamendすることで前回と同じ目的を達成しましょう。但し`rebase -i`は使わずにクリアしてください。どんな方法で進めるかはあなたにおまかせします!:D"
]
}
}
]
},
"zh_CN": {
"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"
]
}
}
]
},
"zh_TW": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## commit 的戲法 #2",
"",
"*假如你還沒有完成 commit 的戲法 #1前面那一個關卡請先完成之後再來這一關*",
"",
"如你在上一個關卡所看到的,我們使用 `rebase -i` 來重新排列那些 commit。只要把我們想要修改的 commit 移到最前面,我們就可以很容易地重新修改它,然後再把它們重新排成我們想要的順序。",
"",
"但唯一的問題就是這樣做就要排很多次,有可能造成 rebase conflict。下面就看看用另外一種方法 `git cherry-pick` 是怎麼做的吧!"
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"要記住喔! cherry-pick 可以從 commit tree 的任何地方拿一個 commit 來放在 HEAD 上(只要那個 commit 不是 HEAD 的 parent。",
"",
"下面是一個簡單清楚的 demo"
],
"command": "git cherry-pick C2",
"afterMarkdowns": [
"太棒了,我們繼續吧!"
],
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"在這一關和上一關一樣要去修改一個 commit 叫做`C2`,但你要避免使用 `rebase -i`。自己想想看要怎麼解決吧!"
]
}
}
]
},
"ko": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## 커밋 갖고 놀기 #2",
"",
"*만약 이전 레벨의 커밋 갖고 놀기 #1을 풀지 않으셨다면, 계속하기에 앞서서 꼭 풀어보세요*",
"",
"이전 레벨에서 보셨듯이 `rebase -i` 명령으로 커밋의 순서를 바꿀 수 있습니다. 정정할 커밋이 바로 직전(top)에 있으면 간단히 --amend로 수정할 수 있고, 그리고 나서 다시 원하는 순서로 되돌려 놓으면 됩니다.",
"",
"이번에 한가지 문제는 순서를 꽤 많이 바꿔야한다는 점인데요, 그러다가 리베이스중에 충돌이 날 수 있습니다. 이번에는 다른 방법인 `git cherry-pick`으로 해결해 봅시다."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"git cherry-pick으로 HEAD에다 어떤 커밋이든 떨어 뜨려 놓을 수 있다고 알려드린것 기억나세요? (단, 그 커밋이 현재 가리키고 있는 커밋이 아니어야합니다)",
"",
"간단한 데모로 다시 알려드리겠습니다:"
],
"afterMarkdowns": [
"좋아요! 계속할게요"
],
"command": "git cherry-pick C2",
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"그럼 이번 레벨에서는 아까와 마찬가지로 `C2` 커밋의 내용을 정정하되, `rebase -i`를 쓰지 말고 해보세요. ^.~"
]
}
}
]
}
}
};
exports.level = {
"goalTreeString": "%7B%22branches%22%3A%7B%22master%22%3A%7B%22target%22%3A%22C3%27%22%2C%22id%22%3A%22master%22%7D%2C%22newImage%22%3A%7B%22target%22%3A%22C2%22%2C%22id%22%3A%22newImage%22%7D%2C%22caption%22%3A%7B%22target%22%3A%22C3%22%2C%22id%22%3A%22caption%22%7D%7D%2C%22commits%22%3A%7B%22C0%22%3A%7B%22parents%22%3A%5B%5D%2C%22id%22%3A%22C0%22%2C%22rootCommit%22%3Atrue%7D%2C%22C1%22%3A%7B%22parents%22%3A%5B%22C0%22%5D%2C%22id%22%3A%22C1%22%7D%2C%22C2%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C2%22%7D%2C%22C3%22%3A%7B%22parents%22%3A%5B%22C2%22%5D%2C%22id%22%3A%22C3%22%7D%2C%22C2%27%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C2%27%22%7D%2C%22C2%27%27%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C2%27%27%22%7D%2C%22C3%27%22%3A%7B%22parents%22%3A%5B%22C2%27%27%22%5D%2C%22id%22%3A%22C3%27%22%7D%7D%2C%22HEAD%22%3A%7B%22target%22%3A%22master%22%2C%22id%22%3A%22HEAD%22%7D%7D",
"solutionCommand": "git checkout master;git cherry-pick C2;git commit --amend;git cherry-pick C3",
"disabledMap": {
"git revert": true
},
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"newImage\":{\"target\":\"C2\",\"id\":\"newImage\"},\"caption\":{\"target\":\"C3\",\"id\":\"caption\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"caption\",\"id\":\"HEAD\"}}",
"compareOnlyMasterHashAgnosticWithAsserts": true,
"goalAsserts": {
"master": [
function(data) {
return data.C2 > data.C3;
},
function(data) {
return data.C2 > data.C1;
}
]
},
"name": {
"ko": "커밋 갖고 놀기 #2",
"en_US": "Juggling Commits #2",
"fr_FR": "Jongler avec les commits #2",
"es_AR": "Haciendo malabares con los commits #2",
"de_DE": "Jonglieren mit Commits Teil 2",
"ja": "コミットをやりくりする その2",
"zh_CN": "提交交换戏法 #2",
"zh_TW": "commit 的戲法 #2"
},
"hint": {
"en_US": "Don't forget to forward master to the updated changes!",
"fr_FR": "N'oublier pas de forwardes la branch master dans la nouvelle branch",
"es_AR": "¡No te olvides de avanzar master a los cambios actualizados!",
"de_DE": "Vergiss nicht den master auf die aktuelle Version vorzuspulen",
"ja": "masterのポインタを先に進めることを忘れずに",
"ko": "master를 변경 완료한 커밋으로 이동(forward)시키는 것을 잊지 마세요!",
"zh_CN": "别忘记了将 master 快进到最新的更新上!",
"zh_TW": "別忘記了將 master 推到最新的 commit 上面!"
},
"startDialog": {
"en_US": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Juggling Commits #2",
"",
"*If you haven't completed Juggling Commits #1 (the previous level), please do so before continuing*",
"",
"As you saw in the last level, we used `rebase -i` to reorder the commits. Once the commit we wanted to change was on top, we could easily --amend it and re-order back to our preferred order.",
"",
"The only issue here is that there is a lot of reordering going on, which can introduce rebase conflicts. Let's look at another method with `git cherry-pick`"
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Remember that git cherry-pick will plop down a commit from anywhere in the tree onto HEAD (as long as that commit isn't an ancestor of HEAD).",
"",
"Here's a small refresher demo:"
],
"afterMarkdowns": [
"Nice! Let's move on"
],
"command": "git cherry-pick C2",
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"So in this level, let's accomplish the same objective of amending `C2` once but avoid using `rebase -i`. I'll leave it up to you to figure it out! :D",
"",
"Remember, the exact number of apostrophe's (') on the commit are not important, only the relative differences. For example, I will give credit to a tree that matches the goal tree but has one extra apostrophe everywhere"
]
}
}
]
},
"fr_FR": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Jongler avec les commits #2",
"",
"*Si vous n'avez pas fait le défi Jongler avec les commits #1 (le niveau précédent), vous devriez le faire avant*",
"",
"Comme fait dans le niveau précédent, nous utilisons `rebase -i` pour réordonner les commits. Si le commit a modifier est celui à la tête, faite un --amend et réordonné le dans l'ordre voulu.",
"",
"La difficulté ici est qu'il y a beaucoup de changement, ce qui peut introduire des conflits de rebase. Essayons avec le `git cherry-pick`"
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"N'oublier pas que git cherry-pick va prendre un commit de n'importe ou dans l'arbre de git et le mettre devant le HEAD. Sauf si il est l'ancètre de la branche courante.",
"",
"Un petit rappel:"
],
"afterMarkdowns": [
"Maintenant, continuons"
],
"command": "git cherry-pick C2",
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Dans ce niveau, nous voulons modifier `C2` sans utiliser `rebase -i`. As vous maintenant de trouver comment! :D",
"",
"Petit rappel, le nombre exact d'apostrophe (') sur le commit n'est pas important. Par exemple, Nous allons donner les points si la structure est bonne mais qu'il y a une apostrophe de trop."
]
}
}
]
},
"es_AR": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Haciendo malabares con los commits #2",
"",
"*Si no completaste Haciendo malabares con los commits #1 (el nivel anterior), hacelo antes de continuar*",
"",
"Como viste en el último nivel, usamos `rebase -i` para reordenar los commits. Una vez que el commit que queríamos cambiar estaba arriba de todo, pudimos `--amend`earlo fácilmente y reordenarlo a como queríamos.",
"",
"El único problema con esto es que hay mucho reordenamiento, que puede generar conflictos al rebasear. Veamos otro método usando `git cherry-pick`"
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Acordate de que git cherry-pick va a traer un commit de cualquier parte del árbol sobre HEAD (siempre que ese otro commit no sea un ancestro de HEAD).",
"",
"Una pequeña demo para refrescar la idea:"
],
"afterMarkdowns": [
"¡Bien! Sigamos..."
],
"command": "git cherry-pick C2",
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Entonces, en este nivel vamos a lograr el mismo objetivo de corregir `C2`, pero sin usar `rebase -i`. Te dejo a vos el darte cuenta cómo :D",
"",
"Acordate, la cantidad exacta de apóstrofes (') en el commit no es importante, sólo la diferencia relativa. Por ejemplo, le voy a dar puntaje a un árbol que matchee el objetivo pero cuyos commits tengan todos un apóstrofe extra"
]
}
}
]
},
"de_DE": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Jonglieren mit Commits Teil 2",
"",
"Du solltest \"Jonglieren mit Commits\" (den vorherigen Level) bestanden haben, bevor du dich an diesem hier versuchst.",
"",
"Wie du im letzten Level gesehen hast haben wir `git rebase -i` genutzt, um die Commits neu anzuordnen. Sobald der Commit, den wir ändern wollte, ganz oben war, konnten wir das auch einfach mit `git commit --amend` tun. Danach haben wir die alte Reihenfolge wiederhergestellt.",
"",
"Das einzige Problem ist hier, dass da eine Menge Umsortieren stattfindet, was zu Rebase-Konflikten führen kann. Schauen wir uns also eine Methode mit `git cherry-pick` an."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Wie du dich erinnerst macht `git cherry-pick` eine Kopie des angegebenen Commits und fügt sie an `HEAD` an (es sei denn der Commit ist ein Vorgänger von `HEAD`).",
"",
"Hier eine kleine Demo zur Erinnerung:"
],
"afterMarkdowns": [
"Schick! Und weiter geht's."
],
"command": "git cherry-pick C2",
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"In diesem Level geht es also auch um das Ziel den Commit `C2` zu modifizieren, aber ohne `git rebase -i` zu benutzen. Ich überlass es dir herauszufinden, wie das gehen soll. :D",
"",
"Nicht vergessen, die genaue Anzahl von Kopien (d.h. Apostrophs) ist nicht ausschlaggebend, nur die Differenz. Der Level ist zum Beispiel auch gelöst, wenn dein fertiger Baum dieselbe Struktur wie der Ziel-Baum hat, aber *überall* ein Apostroph mehr aufweist."
]
}
}
]
},
"ja": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## コミットをやりくりする その2",
"",
"*注意 この一つ前のレベル「コミットをやりくりする」をクリアしていない人は、まずそちらの問題をクリアしてきてください*",
"",
"前回見てきたように、コミット順序の変更のために、私たちは`rebase -i`コマンドを利用しました。ツリーの先頭に変更対象のコミットがあれば、--amendオプションを使うことで容易に変更を書きかえて、元の順序に戻すことができます。",
"",
"この場合に心配なことが一つだけあって、それは複数回の順序の変更が行われるので、rebaseのコンフリクト衝突が起こりうることです。こういうケースへの対策として、`git cherry-pick`を使った別の解決法について考えてみましょう。"
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"git cherry-pickを使うと、ツリーの中から複数のコミットを選んで、HEADの下に新しく作ることができましたね。",
"",
"簡単なデモを見てみましょう:"
],
"afterMarkdowns": [
"できました!次へ進みましょう"
],
"command": "git cherry-pick C2",
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"このレベルでは、`C2`をamendすることで前回と同じ目的を達成しましょう。但し`rebase -i`は使わずにクリアしてください。どんな方法で進めるかはあなたにおまかせします!:D"
]
}
}
]
},
"zh_CN": {
"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"
]
}
}
]
},
"zh_TW": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## commit 的戲法 #2",
"",
"*假如你還沒有完成 commit 的戲法 #1前面那一個關卡請先完成之後再來這一關*",
"",
"如你在上一個關卡所看到的,我們使用 `rebase -i` 來重新排列那些 commit。只要把我們想要修改的 commit 移到最前面,我們就可以很容易地重新修改它,然後再把它們重新排成我們想要的順序。",
"",
"但唯一的問題就是這樣做就要排很多次,有可能造成 rebase conflict。下面就看看用另外一種方法 `git cherry-pick` 是怎麼做的吧!"
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"要記住喔! cherry-pick 可以從 commit tree 的任何地方拿一個 commit 來放在 HEAD 上(只要那個 commit 不是 HEAD 的 parent。",
"",
"下面是一個簡單清楚的 demo"
],
"command": "git cherry-pick C2",
"afterMarkdowns": [
"太棒了,我們繼續吧!"
],
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"在這一關和上一關一樣要去修改一個 commit 叫做`C2`,但你要避免使用 `rebase -i`。自己想想看要怎麼解決吧!"
]
}
}
]
},
"ko": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## 커밋 갖고 놀기 #2",
"",
"*만약 이전 레벨의 커밋 갖고 놀기 #1을 풀지 않으셨다면, 계속하기에 앞서서 꼭 풀어보세요*",
"",
"이전 레벨에서 보셨듯이 `rebase -i` 명령으로 커밋의 순서를 바꿀 수 있습니다. 정정할 커밋이 바로 직전(top)에 있으면 간단히 --amend로 수정할 수 있고, 그리고 나서 다시 원하는 순서로 되돌려 놓으면 됩니다.",
"",
"이번에 한가지 문제는 순서를 꽤 많이 바꿔야한다는 점인데요, 그러다가 리베이스중에 충돌이 날 수 있습니다. 이번에는 다른 방법인 `git cherry-pick`으로 해결해 봅시다."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"git cherry-pick으로 HEAD에다 어떤 커밋이든 떨어 뜨려 놓을 수 있다고 알려드린것 기억나세요? (단, 그 커밋이 현재 가리키고 있는 커밋이 아니어야합니다)",
"",
"간단한 데모로 다시 알려드리겠습니다:"
],
"afterMarkdowns": [
"좋아요! 계속할게요"
],
"command": "git cherry-pick C2",
"beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"그럼 이번 레벨에서는 아까와 마찬가지로 `C2` 커밋의 내용을 정정하되, `rebase -i`를 쓰지 말고 해보세요. ^.~"
]
}
}
]
}
}
};

View file

@ -1,281 +1,281 @@
exports.level = {
"goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C5\",\"id\":\"master\",\"remoteTrackingBranchID\":null},\"side\":{\"target\":\"C3\",\"id\":\"side\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C1\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C2\",\"C4\"],\"id\":\"C5\"}},\"tags\":{\"v1\":{\"target\":\"C2\",\"id\":\"v1\",\"type\":\"tag\"},\"v0\":{\"target\":\"C1\",\"id\":\"v0\",\"type\":\"tag\"}},\"HEAD\":{\"target\":\"C2\",\"id\":\"HEAD\"}}",
"solutionCommand": "git tag v1 side~1;git tag v0 master~2;git checkout v1",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C5\",\"id\":\"master\",\"remoteTrackingBranchID\":null},\"side\":{\"target\":\"C3\",\"id\":\"side\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C1\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C2\",\"C4\"],\"id\":\"C5\"}},\"tags\":{},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"name": {
"en_US": "Git Tags",
"de_DE": "Git Tags",
"es_AR": "Tags en git",
"fr_FR": "Git Tags",
"zh_TW": "git tag"
},
"hint": {
"en_US": "you can either check out the commit directly or simply checkout the tag!",
"fr_FR": "Vous pouvez faire le checkout sur le commit ou sur le tag!",
"de_DE": "Du kannst den Checkout entweder direkt auf den Commit oder das Tag machen.",
"es_AR": "Podés checkoutear directamente el commit, ¡o simplemente el tag!",
"zh_TW": "你可以直接 checkout 到 commit 上,或是簡單的 checkout 到 tag 上"
},
"startDialog": {
"en_US": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Git Tags",
"",
"As you have learned from previous lessons, branches are easy to move around and often refer to different commits as work is completed on them. Branches are easily mutated, often temporary, and always changing.",
"",
"If that's the case, you may be wondering if there's a way to *permanently* mark historical points in your project's history. For things like major releases and big merges, is there any way to mark these commits with something more permanent than a branch?",
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"You bet there is! Git tags support this exact use case -- they (somewhat) permanently mark certain commits as \"milestones\" that you can then reference like a branch.",
"",
"More importantly though, they never move as more commits are created. You can't \"check out\" a tag and then complete work on that tag -- tags exist as anchors in the commit tree that designate certain spots.",
"",
"Let's see what tags look like in practice."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Let's try making a tag at `C1` which is our version 1 prototype"
],
"afterMarkdowns": [
"There! Quite easy. We named the tag `v1` and referenced the commit `C1` explicitly. If you leave the commit off, git will just use whatever `HEAD` is at"
],
"command": "git tag v1 C1",
"beforeCommand": "git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"For this level just create the tags in the goal visualization and then check `v1` out. Notice how you go into detached `HEAD` state -- this is because you can't commit directly onto the `v1` tag.",
"",
"In the next level we'll examine a more interesting use case for tags."
]
}
}
]
},
"fr_FR": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Git Tags",
"",
"Comme apris dans les niveau précédent, les branches sont facile et rende le travail avec les commit plus simple. Il est facile de faire des merge sur les branches. Les branches sont donc constament en mouvement.",
"",
"Dans ce cas, il doit exister une façons de sauvegarder de façon permanente l'état du projet. Pour des choses comme des Release majeur, Il existe une façons plus permanente de garder l'état du code?",
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"vous l'aurez deviné! Git tags offre cette fonctionnalité -- Les tags garde l'état du code et pointe vers ce commit peux importe comment l'arbre git continue d'évoluer.",
"",
"encore plus important, il sont définitif. Vous ne pouvez donc pas faire de commit sur un tag -- Les tags sont un peu comme un pointeur définitif dans l'arbre",
"",
"Voici les tags en pratique."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Essayons de faire un tag sur C1 (qui représente la version 1 de notre prototype)"
],
"afterMarkdowns": [
"Voila, facile non! nous nommons le tag v1 et il pointe vers C1. Si vous ne spécifié pas le commit, le HEAD sera l'endroit ou le tag pointera."
],
"command": "git tag v1 C1",
"beforeCommand": "git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Pour ce niveau, simplement faire un tag v1 et faire un checkout dessu. Remarqué vous êtes en detached `HEAD` state -- C'est parceque vous ne pouvez pas commiter sur le tag `v1`.",
"",
"Dans le défils suivants vous verez des scénarios plus interessant."
]
}
}
]
},
"zh_TW": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## git tag",
"",
"就像你之前學到的一樣branch 很容易被移動,而且當有新的 commit 時又會再移動branch 經常指向不同的 commitbranch 很容易改變。",
"",
"你可能會有疑問,有沒有什麼方法可以*永遠*有一個指向 commit 的記號,例如,表示重大的軟體釋出,或者是修正很大的 bug有沒有其它比 branch 更好的方法,可以永遠地指向這些 commit",
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"你說對了git tag 可以解決這個問題,它們可以永遠地指向某個特定的 commit就像是表示一個\"里程碑\"一樣。",
"",
"更重要的是,當有新的 commit 時,它們也不會移動,你不可以 \"checkout\" 到 tag 上面 committag 的存在就像是一個在 commit tree 上的表示特定訊息的一個錨。",
"",
"讓我們來實際看一下 tag 長什麼樣子..."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"讓我們試著建立一個 tag指向 commit `C1`,表示這是我們第一個版本。"
],
"afterMarkdowns": [
"看吧!非常容易,我們命名這個 tag 叫做 `v1`,並且讓它指向 commit `C1`,如果你離開了該 commitgit 會根據 `HEAD` 所指向的位置才分辨。"
],
"command": "git tag v1 C1",
"beforeCommand": "git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"在這個關卡中,建立一個如視覺化目標裡面的 tag然後 checkout 到 `v1` 上面,要注意你會進到分離 `HEAD` 的狀態,這是因為你不能夠直接在 `v1` 上面做 commit。",
"",
"在下個關卡中我們會介紹更多 tag 的應用..."
]
}
}
]
},
"es_AR": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Tags en git",
"",
"Como aprendiste en lecciones anteriores, las ramas pueden moverse fácilmente, y en general van referenciando distintos commits a medida que el trabajo se va completando en ellas. Las ramas cambian fácilmente, suelen ser temporales, y siempre cambiantes.",
"",
"Si ese es el caso, te podrías estar preguntando si hay una manera de marcar *permanentemente* puntos en la historia de tu proyecto. Para cosas como releases mayores o grandes merges, ¿hay algún modo de marcar esos commits con algo más permanente que un branch?",
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"¡Seguro que hay! Los tags de git soportan exactamente este caso de uso -- marcan (bastante) permanentemente determinados commits como \"hitos\" que podés referenciar como a un branch.",
"",
"Aún más importante, los tags no avanzan cuando se crean nuevos commits. No podés \"checkoutear\" un tag y completar el trabajo en ese tag - los tags son marcas fijas en el árbol de commits que designan ciertos puntos.",
"",
"Veamos cómo se ven los tags en práctica..."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Creemos un tag en `C1`, que es nuestro prototipo de la versión 1"
],
"afterMarkdowns": [
"¡Ahí está! Bastante simple. Nombramos al tag `v1` y referenciamos explícitamente al commit `C1`. Si no especificás el commit, git va a usar al apuntado por `HEAD`"
],
"command": "git tag v1 C1",
"beforeCommand": "git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Para este nivel, simplemente creá los tags en la visualización final y después checkouteá `v1`. Notá cómo entrás en el estado detached -- esto es porque no podés commitear directamente sobre el tag `v1`.",
"",
"En el próximo nivel vamos a examinar un caso de uso más interesante para los tags."
]
}
}
]
},
"de_DE": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Git Tags",
"",
"Wie du aus den vorhergehenden Levels weißt sind Branches einfach durch die Gegend zu schieben und zeigen of auf verschiedene Commits, während die Arbeit in ihnen fortschreitet. Ein Branch wird oft verändert, manchmal nur temporär, und ist ständig in Bewegung.",
"",
"Da das so ist fragst du dich vielleicht, ob es nicht eine Möglichkeit gibt, eine bestimmte Stelle in deiner Projekt-History *permanent* zu kennzeichnen. Kann man nicht zum Beispiel für große Releases und Meilensteine nicht einen Commit mit etwas festerem kennzeichnen, als mit einem Branch-Namen?",
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Aber klar! In Git gibt es genau zu diesem Zweck Tags -- sie kennzeichnen einen Commit (ziemlich) permanent als Meilenstein oder ähnliches, und man kann sie ansprechen wie Branch-Namen.",
"",
"Noch viel wichtiger, Tags verändern nicht ihre Position wenn man Commits hinzufügt. Du kannst ein Tag nicht in diesem Sinne auschecken und dann Modifikationen darauf committen. Tags sind Anker im Commit-Baum, die bestimmte Stellen anzeigen.",
"",
"Lass uns anschauen wie Tags in der Praxis funktionieren."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Lass uns ein Tag bei `C1` anlegen und damit die Version 1 unseres Prototyps markieren."
],
"afterMarkdowns": [
"Peng! Ziemlich einfach. Wir haben das Tag `v1` genannt und lassen es auf `C1` zeigen. Wenn du den Commit weglässt wir das Tag für den Commit erzeugt, auf den `HEAD` zeigt."
],
"command": "git tag v1 C1",
"beforeCommand": "git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Um diesen Level zu schaffen, erstelle einfach die Tags wie sie in der Zielbeschreibung stehen und mach dann einen Checkout auf `v1`. Beachte wie du dabei in den \"Detached HEAD\" Zustand gehst -- das liegt daran, dass du keine Commits direkt auf das `v1` Tag machen kannst.",
"",
"Im nächsten Level schauen wir uns dann interessantere Anwendungsfälle für Tags an."
]
}
}
]
}
}
};
exports.level = {
"goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C5\",\"id\":\"master\",\"remoteTrackingBranchID\":null},\"side\":{\"target\":\"C3\",\"id\":\"side\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C1\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C2\",\"C4\"],\"id\":\"C5\"}},\"tags\":{\"v1\":{\"target\":\"C2\",\"id\":\"v1\",\"type\":\"tag\"},\"v0\":{\"target\":\"C1\",\"id\":\"v0\",\"type\":\"tag\"}},\"HEAD\":{\"target\":\"C2\",\"id\":\"HEAD\"}}",
"solutionCommand": "git tag v1 side~1;git tag v0 master~2;git checkout v1",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C5\",\"id\":\"master\",\"remoteTrackingBranchID\":null},\"side\":{\"target\":\"C3\",\"id\":\"side\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C1\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C2\",\"C4\"],\"id\":\"C5\"}},\"tags\":{},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"name": {
"en_US": "Git Tags",
"de_DE": "Git Tags",
"es_AR": "Tags en git",
"fr_FR": "Git Tags",
"zh_TW": "git tag"
},
"hint": {
"en_US": "you can either check out the commit directly or simply checkout the tag!",
"fr_FR": "Vous pouvez faire le checkout sur le commit ou sur le tag!",
"de_DE": "Du kannst den Checkout entweder direkt auf den Commit oder das Tag machen.",
"es_AR": "Podés checkoutear directamente el commit, ¡o simplemente el tag!",
"zh_TW": "你可以直接 checkout 到 commit 上,或是簡單的 checkout 到 tag 上"
},
"startDialog": {
"en_US": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Git Tags",
"",
"As you have learned from previous lessons, branches are easy to move around and often refer to different commits as work is completed on them. Branches are easily mutated, often temporary, and always changing.",
"",
"If that's the case, you may be wondering if there's a way to *permanently* mark historical points in your project's history. For things like major releases and big merges, is there any way to mark these commits with something more permanent than a branch?",
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"You bet there is! Git tags support this exact use case -- they (somewhat) permanently mark certain commits as \"milestones\" that you can then reference like a branch.",
"",
"More importantly though, they never move as more commits are created. You can't \"check out\" a tag and then complete work on that tag -- tags exist as anchors in the commit tree that designate certain spots.",
"",
"Let's see what tags look like in practice."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Let's try making a tag at `C1` which is our version 1 prototype"
],
"afterMarkdowns": [
"There! Quite easy. We named the tag `v1` and referenced the commit `C1` explicitly. If you leave the commit off, git will just use whatever `HEAD` is at"
],
"command": "git tag v1 C1",
"beforeCommand": "git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"For this level just create the tags in the goal visualization and then check `v1` out. Notice how you go into detached `HEAD` state -- this is because you can't commit directly onto the `v1` tag.",
"",
"In the next level we'll examine a more interesting use case for tags."
]
}
}
]
},
"fr_FR": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Git Tags",
"",
"Comme apris dans les niveau précédent, les branches sont facile et rende le travail avec les commit plus simple. Il est facile de faire des merge sur les branches. Les branches sont donc constament en mouvement.",
"",
"Dans ce cas, il doit exister une façons de sauvegarder de façon permanente l'état du projet. Pour des choses comme des Release majeur, Il existe une façons plus permanente de garder l'état du code?",
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"vous l'aurez deviné! Git tags offre cette fonctionnalité -- Les tags garde l'état du code et pointe vers ce commit peux importe comment l'arbre git continue d'évoluer.",
"",
"encore plus important, il sont définitif. Vous ne pouvez donc pas faire de commit sur un tag -- Les tags sont un peu comme un pointeur définitif dans l'arbre",
"",
"Voici les tags en pratique."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Essayons de faire un tag sur C1 (qui représente la version 1 de notre prototype)"
],
"afterMarkdowns": [
"Voila, facile non! nous nommons le tag v1 et il pointe vers C1. Si vous ne spécifié pas le commit, le HEAD sera l'endroit ou le tag pointera."
],
"command": "git tag v1 C1",
"beforeCommand": "git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Pour ce niveau, simplement faire un tag v1 et faire un checkout dessu. Remarqué vous êtes en detached `HEAD` state -- C'est parceque vous ne pouvez pas commiter sur le tag `v1`.",
"",
"Dans le défils suivants vous verez des scénarios plus interessant."
]
}
}
]
},
"zh_TW": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## git tag",
"",
"就像你之前學到的一樣branch 很容易被移動,而且當有新的 commit 時又會再移動branch 經常指向不同的 commitbranch 很容易改變。",
"",
"你可能會有疑問,有沒有什麼方法可以*永遠*有一個指向 commit 的記號,例如,表示重大的軟體釋出,或者是修正很大的 bug有沒有其它比 branch 更好的方法,可以永遠地指向這些 commit",
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"你說對了git tag 可以解決這個問題,它們可以永遠地指向某個特定的 commit就像是表示一個\"里程碑\"一樣。",
"",
"更重要的是,當有新的 commit 時,它們也不會移動,你不可以 \"checkout\" 到 tag 上面 committag 的存在就像是一個在 commit tree 上的表示特定訊息的一個錨。",
"",
"讓我們來實際看一下 tag 長什麼樣子..."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"讓我們試著建立一個 tag指向 commit `C1`,表示這是我們第一個版本。"
],
"afterMarkdowns": [
"看吧!非常容易,我們命名這個 tag 叫做 `v1`,並且讓它指向 commit `C1`,如果你離開了該 commitgit 會根據 `HEAD` 所指向的位置才分辨。"
],
"command": "git tag v1 C1",
"beforeCommand": "git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"在這個關卡中,建立一個如視覺化目標裡面的 tag然後 checkout 到 `v1` 上面,要注意你會進到分離 `HEAD` 的狀態,這是因為你不能夠直接在 `v1` 上面做 commit。",
"",
"在下個關卡中我們會介紹更多 tag 的應用..."
]
}
}
]
},
"es_AR": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Tags en git",
"",
"Como aprendiste en lecciones anteriores, las ramas pueden moverse fácilmente, y en general van referenciando distintos commits a medida que el trabajo se va completando en ellas. Las ramas cambian fácilmente, suelen ser temporales, y siempre cambiantes.",
"",
"Si ese es el caso, te podrías estar preguntando si hay una manera de marcar *permanentemente* puntos en la historia de tu proyecto. Para cosas como releases mayores o grandes merges, ¿hay algún modo de marcar esos commits con algo más permanente que un branch?",
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"¡Seguro que hay! Los tags de git soportan exactamente este caso de uso -- marcan (bastante) permanentemente determinados commits como \"hitos\" que podés referenciar como a un branch.",
"",
"Aún más importante, los tags no avanzan cuando se crean nuevos commits. No podés \"checkoutear\" un tag y completar el trabajo en ese tag - los tags son marcas fijas en el árbol de commits que designan ciertos puntos.",
"",
"Veamos cómo se ven los tags en práctica..."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Creemos un tag en `C1`, que es nuestro prototipo de la versión 1"
],
"afterMarkdowns": [
"¡Ahí está! Bastante simple. Nombramos al tag `v1` y referenciamos explícitamente al commit `C1`. Si no especificás el commit, git va a usar al apuntado por `HEAD`"
],
"command": "git tag v1 C1",
"beforeCommand": "git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Para este nivel, simplemente creá los tags en la visualización final y después checkouteá `v1`. Notá cómo entrás en el estado detached -- esto es porque no podés commitear directamente sobre el tag `v1`.",
"",
"En el próximo nivel vamos a examinar un caso de uso más interesante para los tags."
]
}
}
]
},
"de_DE": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Git Tags",
"",
"Wie du aus den vorhergehenden Levels weißt sind Branches einfach durch die Gegend zu schieben und zeigen of auf verschiedene Commits, während die Arbeit in ihnen fortschreitet. Ein Branch wird oft verändert, manchmal nur temporär, und ist ständig in Bewegung.",
"",
"Da das so ist fragst du dich vielleicht, ob es nicht eine Möglichkeit gibt, eine bestimmte Stelle in deiner Projekt-History *permanent* zu kennzeichnen. Kann man nicht zum Beispiel für große Releases und Meilensteine nicht einen Commit mit etwas festerem kennzeichnen, als mit einem Branch-Namen?",
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Aber klar! In Git gibt es genau zu diesem Zweck Tags -- sie kennzeichnen einen Commit (ziemlich) permanent als Meilenstein oder ähnliches, und man kann sie ansprechen wie Branch-Namen.",
"",
"Noch viel wichtiger, Tags verändern nicht ihre Position wenn man Commits hinzufügt. Du kannst ein Tag nicht in diesem Sinne auschecken und dann Modifikationen darauf committen. Tags sind Anker im Commit-Baum, die bestimmte Stellen anzeigen.",
"",
"Lass uns anschauen wie Tags in der Praxis funktionieren."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Lass uns ein Tag bei `C1` anlegen und damit die Version 1 unseres Prototyps markieren."
],
"afterMarkdowns": [
"Peng! Ziemlich einfach. Wir haben das Tag `v1` genannt und lassen es auf `C1` zeigen. Wenn du den Commit weglässt wir das Tag für den Commit erzeugt, auf den `HEAD` zeigt."
],
"command": "git tag v1 C1",
"beforeCommand": "git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Um diesen Level zu schaffen, erstelle einfach die Tags wie sie in der Zielbeschreibung stehen und mach dann einen Checkout auf `v1`. Beachte wie du dabei in den \"Detached HEAD\" Zustand gehst -- das liegt daran, dass du keine Commits direkt auf das `v1` Tag machen kannst.",
"",
"Im nächsten Level schauen wir uns dann interessantere Anwendungsfälle für Tags an."
]
}
}
]
}
}
};

View file

@ -7,20 +7,20 @@ exports.level = {
},
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C3\",\"id\":\"bugFix\"},\"side\":{\"target\":\"C5\",\"id\":\"side\"},\"another\":{\"target\":\"C7\",\"id\":\"another\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C1\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C4\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C1\"],\"id\":\"C6\"},\"C7\":{\"parents\":[\"C6\"],\"id\":\"C7\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"name": {
"en_US": "Cherry-pick Intro",
"en_US": "Cherry-pick Intro",//MARCO
"de_DE": "Einführung Cherry-picking",
"es_AR": "Introducción a cherry-pick",
"zh_CN": "Cherry-pick Intro",
"zh_TW": "介紹 cherry-pick"
},
"hint": {
"en_US": "git cherry-pick followed by commit names!",
"en_US": "git cherry-pick followed by commit names!",//MARCO
"de_DE": "git cherry-pick gefolgt von Commit-Namen.",
"es_AR": "git cherry-pick seguido de los nombres de los commits",
"zh_CN": "git cherry-pick 跟提交对句名",
"zh_TW": "git cherry-pick 後面要接著 commit 的名稱"
},
"startDialog": {
"startDialog": {//MARCO
"en_US": {
"childViews": [
{

View file

@ -4,20 +4,20 @@ 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",
"es_AR": "Desatacheá tu HEAD",
"es_AR": "Desatacheá tu HEAD",//MARCO
"zh_CN": "分离HEAD",
"zh_TW": "分離 HEAD",
"de_DE": "Den Kopf abtrennen"
},
"hint": {
"en_US": "Use the label (hash) on the commit for help!",
"en_US": "Use the label (hash) on the commit for help!",//MARCO
"es_AR": "¡Usá la etiqueta (hash) sobre el commit para ayudarte!",
"de_DE": "Benutze den Bezeichner (den Hash) des Commits.",
"zh_TW": "使用 commit 上的標籤hash來幫助你",
"zh_CN": "使用提交记录上的标签(hash)来求助!"
},
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",

View file

@ -7,20 +7,20 @@ exports.level = {
},
"startTree": "{\"branches\":{\"master\":{\"target\":\"C5\",\"id\":\"master\"},\"overHere\":{\"target\":\"C1\",\"id\":\"overHere\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C4\"],\"id\":\"C5\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"hint": {
"en_US": "you can use either branches or relative refs (HEAD~) to specify the rebase target",
"en_US": "you can use either branches or relative refs (HEAD~) to specify the rebase target",//MARCO
"es_AR": "podés usar tanto ramas como referencias relativas (HEAD~) para especificar el objetivo del rebase",
"de_DE": "Du kannst entweder Branches oder relative Ref-Angaben (z.B. HEAD~) benutzen, um das Ziel des Rebase anzugeben.",
"zh_TW": "你可以指定 branch 或者是相對位置HEAD~)來表示 rebase 的目標"
},
"name": {
"en_US": "Interactive Rebase Intro",
"en_US": "Interactive Rebase Intro",//MARCO
"es_AR": "Introducción al rebase interactivo",
"de_DE": "Einführung Interactive Rebase",
"zh_CN": "Rebase 交互命令介绍 ",
"zh_TW": "介紹互動式的 rebase"
},
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",

View file

@ -3,7 +3,7 @@ exports.level = {
"solutionCommand": "git checkout bugFix^",
"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 (^)",
"en_US": "Relative Refs (^)",//MARCO
"zh_CN": "相对引用(^)",
"zh_TW": "相對引用(^",
"es_AR": "Referencias relativas (^)",
@ -11,13 +11,13 @@ exports.level = {
},
"hint": {
"en_US": "Remember the Caret (^) operator!",
"de_DE": "Denk an den Dach-Operator (^)!",
"de_DE": "Denk an den Dach-Operator (^)!",//MARCO
"es_AR": "¡No te olvides del operador ^!",
"zh_CN": "记住插入(^)操作符!",
"zh_TW": "不要忘記插入(^)符號!"
},
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",

View file

@ -3,21 +3,21 @@ exports.level = {
"solutionCommand": "git branch -f master C6;git checkout HEAD~1;git branch -f bugFix HEAD~1",
"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",
"en_US": "You'll need to use at least one direct reference (hash) to complete this level",//MARCO
"zh_CN": "这一关至少要用到一次直接引用(hash)",
"zh_TW": "這一關至少要用到一次直接參考hash",
"es_AR": "Vas a necesitar usar al menos una referencia directa (hash) para completar este nivel",
"de_DE": "Du musst mindestens einen Hash benutzen, um dieses Level zu schaffen"
},
"name": {
"en_US": "Relative Refs #2 (~)",
"en_US": "Relative Refs #2 (~)",//MARCO
"de_DE": "Relative Referenzen #2 (~)",
"es_AR": "Referencias relativas #2 (~)",
"zh_CN": "相对引用2(~)",
"zh_TW": "相對引用二(~"
},
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",

View file

@ -9,7 +9,7 @@ exports.level = {
"startTree": "{\"branches\":{\"master\":{\"target\":\"C2\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C3\",\"id\":\"bugFix\"},\"side\":{\"target\":\"C6\",\"id\":\"side\"},\"another\":{\"target\":\"C7\",\"id\":\"another\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C0\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C4\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C5\"],\"id\":\"C6\"},\"C7\":{\"parents\":[\"C5\"],\"id\":\"C7\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"name": {
"en_US": "Rebasing over 9000 times",
"de_DE": "10000 Rebases unter dem `HEAD`",
"de_DE": "10000 Rebases unter dem `HEAD`",//MARCO
"es_AR": "Rebaseando más de 9000 veces",
"ko": "9천번이 넘는 리베이스",
"ja": "Rebasing over 9000 times",
@ -17,7 +17,7 @@ exports.level = {
"zh_TW": "N次Rebase"
},
"hint": {
"en_US": "Remember, the most efficient way might be to only update master at the end...",
"en_US": "Remember, the most efficient way might be to only update master at the end...",//MARCO
"de_DE": "Nicht vergessen: die effizienteste Möglichkeit könnte sein, schließlich einfach nur den master zu aktualisieren ...",
"es_AR": "Acordate, la manera más eficiente podría ser actualizar master sólo al final...",
"ja": "最も効率的なやり方はmasterを最後に更新するだけかもしれない・・・",
@ -26,7 +26,7 @@ exports.level = {
"zh_TW": "要記住喔! 把 master branch 留到最後更新可能是最有效率的方法。"
},
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",

View file

@ -10,13 +10,13 @@ exports.level = {
"ko": "브랜치 스파게티",
"en_US": "Branch Spaghetti",
"de_DE": "Branch-Spaghetti",
"es_AR": "Enslada de branches",
"es_AR": "Enslada de branches",//MARCO
"ja": "ブランチスパゲッティ",
"zh_CN": "分支浆糊",
"zh_TW": "branch 漿糊"
},
"hint": {
"en_US": "Make sure to do everything in the proper order! Branch one first, then two, then three",
"en_US": "Make sure to do everything in the proper order! Branch one first, then two, then three",//MARCO
"de_DE": "Stelle sicher, dass du alles in der richtigen Reihenfolge machst! Branche erst one, dann two, dann three.",
"es_AR": "¡Asegurate de hacer las cosas en el orden correcto! Brancheá `one` primero, después `two`, y después `three`.",
"ja": "全て正しい順番で処理することoneが最初で、次がtwo、最後にthreeを片付ける。",
@ -25,7 +25,7 @@ exports.level = {
"zh_TW": "確認你是按照正確的順序來操作!先操作 branch `one`, 然後 `two`, 最後才是 `three`"
},
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",

View file

@ -3,20 +3,20 @@ exports.level = {
"solutionCommand": "git clone",
"name": {
"en_US": "Clone Intro",
"de_DE": "Clone Einführung",
"de_DE": "Clone Einführung",//MARCO
"es_AR": "Introducción a clone",
"zh_CN": "Clone Intro",
"zh_TW": "介紹 clone"
},
"hint": {
"en_US": "Just git clone!",
"de_DE": "Einfach git clone ausführen!",
"de_DE": "Einfach git clone ausführen!",//MARCO
"zh_CN": "Just git clone!",
"es_AR": "Simplemente hacé git clone!",
"zh_TW": "只要 git clone 就好了"
},
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",

View file

@ -5,19 +5,19 @@ exports.level = {
"name": {
"en_US": "Faking Teamwork",
"de_DE": "Teamarbeit simulieren",
"es_AR": "Simulando el trabajo en equipo",
"es_AR": "Simulando el trabajo en equipo",//MARCO
"zh_CN": "Faking Teamwork",
"zh_TW": "模擬團隊合作"
},
"hint": {
"en_US": "remember you can specify the number of commits to fake",
"de_DE": "Nicht vergessen, du kannst angeben wieviele Commits simuliert werden sollen.",
"de_DE": "Nicht vergessen, du kannst angeben wieviele Commits simuliert werden sollen.",//MARCO
"es_AR": "Acordate que podés especificar cuántos commits simular",
"zh_CN": "记住为fake指定数量",
"zh_TW": "你要記得指定要送多少個 commit 出去"
},
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",

View file

@ -3,21 +3,21 @@ exports.level = {
"solutionCommand": "git fetch",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C2\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C3\",\"id\":\"bugFix\"},\"o/master\":{\"target\":\"C2\",\"id\":\"o/master\"},\"o/bugFix\":{\"target\":\"C3\",\"id\":\"o/bugFix\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"bugFix\",\"id\":\"HEAD\"},\"originTree\":{\"branches\":{\"master\":{\"target\":\"C5\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C7\",\"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\":[\"C4\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C3\"],\"id\":\"C6\"},\"C7\":{\"parents\":[\"C6\"],\"id\":\"C7\"}},\"HEAD\":{\"target\":\"bugFix\",\"id\":\"HEAD\"}}}",
"name": {
"en_US": "Git Fetchin'",
"en_US": "Git Fetchin'",//MARCO
"de_DE": "Git Fetch",
"es_AR": "git fetch",
"zh_CN": "Git Fetchin'",
"zh_TW": "git fetch"
},
"hint": {
"en_US": "just run git fetch!",
"en_US": "just run git fetch!",//MARCO
"de_DE": "Einfach git fetch ausführen!",
"es_AR": "Simplemente ¡hacé git fetch!",
"zh_CN": "just run git fetch!",
"zh_TW": "只要下 git fetch 指令"
},
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",

View file

@ -3,13 +3,13 @@ exports.level = {
"solutionCommand": "git fetch origin master~1:foo;git fetch origin foo:master;git checkout foo;git merge master",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\",\"remoteTrackingBranchID\":\"o/master\"},\"foo\":{\"target\":\"C1\",\"id\":\"foo\",\"remoteTrackingBranchID\":\"o/foo\"},\"o/master\":{\"target\":\"C1\",\"id\":\"o/master\",\"remoteTrackingBranchID\":null},\"o/foo\":{\"target\":\"C1\",\"id\":\"o/foo\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"}},\"HEAD\":{\"target\":\"C1\",\"id\":\"HEAD\"},\"originTree\":{\"branches\":{\"master\":{\"target\":\"C4\",\"id\":\"master\",\"remoteTrackingBranchID\":null},\"foo\":{\"target\":\"C6\",\"id\":\"foo\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C1\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C5\"],\"id\":\"C6\"}},\"HEAD\":{\"target\":\"foo\",\"id\":\"HEAD\"}}}",
"name": {
"en_US": "Fetch arguments",
"en_US": "Fetch arguments",//MARCO
"zh_CN": "Fetch arguments",
"zh_TW": "fetch 的參數",
"es_AR": "Parámetros de fetch",
"de_DE": "Optionen für Fetch"
},
"hint": {
"hint": {//MARCO
"en_US": "Pay attention how the commit ids may have swapped! You can read slides again with \"help level\"",
"zh_CN": "注意下提交对象的id是如何交换的! 你可以通过`help level`再次切到幻灯片!",
"zh_TW": "注意 commit 的 id 是怎麼被交換的!你可以透過 `help level` 來閱讀對話視窗!",
@ -17,7 +17,7 @@ exports.level = {
"de_DE": "Beachte wie die Commit IDs getauscht wurden! Du kannst den Einführungsdialog mit \"help level\" erneut anzeigen"
},
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",

View file

@ -4,19 +4,19 @@ exports.level = {
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\",\"remoteTrackingBranchID\":null,\"localBranchesThatTrackThis\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"name": {
"en_US": "Diverged History",
"zh_CN": "分散的历史",
"zh_CN": "分散的历史",//MARCO
"zh_TW": "diverged history",
"es_AR": "Historia divergente",
"de_DE": "Abweichende History"
},
"hint": {
"en_US": "check out the ordering from the goal visualization",
"en_US": "check out the ordering from the goal visualization",//MARCO
"zh_CN": "检出可视化目标中的顺序",
"zh_TW": "確認視覺化的目標中的順序",
"es_AR": "Prestá atención al oren del objetivo",
"de_DE": "Beachte die Reihenfolge in der Zieldarstellung"
},
"startDialog": {
"startDialog": {//MARCO
"en_US": {
"childViews": [
{

View file

@ -5,20 +5,20 @@ exports.level = {
"name": {
"en_US": "Merging with remotes",
"zh_CN": "Merging with remotes",
"zh_TW": "merge with remotes",
"zh_TW": "merge with remotes",//MARCO
"es_AR": "Mergeando con los remotos",
"de_DE": "Änderungen vom Remote zusammenführen"
},
"hint": {
"en_US": "Pay attention to the goal tree!",
"zh_CN": "注意目标树!",
"zh_CN": "注意目标树!",//MARCO
"zh_TW": "注意最後要完成的目標!",
"es_AR": "¡Prestá atención al árbol final!",
"de_DE": "Beachte den Ziel-Baum!"
},
"compareOnlyMaster": true,
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",

View file

@ -4,20 +4,20 @@ exports.level = {
"startTree": "{\"branches\":{\"master\":{\"target\":\"C2\",\"id\":\"master\",\"remoteTrackingBranchID\":\"o/master\",\"localBranchesThatTrackThis\":null},\"o/master\":{\"target\":\"C1\",\"id\":\"o/master\",\"remoteTrackingBranchID\":null,\"localBranchesThatTrackThis\":[\"master\"]}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"},\"originTree\":{\"branches\":{\"master\":{\"target\":\"C3\",\"id\":\"master\",\"remoteTrackingBranchID\":null,\"localBranchesThatTrackThis\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}}",
"name": {
"en_US": "Git Pullin'",
"zh_CN": "Git Pullin'",
"zh_CN": "Git Pullin'",//MARCO
"zh_TW": "git pull'",
"es_AR": "git pull",
"de_DE": "Git Pull"
},
"hint": {
"en_US": "Just run git pull!",
"zh_CN": "Just run git pull!",
"zh_CN": "Just run git pull!",//MARCO
"zh_TW": "只要下 git pull 這個指令即可",
"es_AR": "Simplemente ¡hacé git pull!",
"de_DE": "Führe einfach git pull aus."
},
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",

View file

@ -3,7 +3,7 @@ exports.level = {
"solutionCommand": "git pull origin bar:foo;git pull origin master:side",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C4\",\"id\":\"master\",\"remoteTrackingBranchID\":\"o/master\"},\"o/master\":{\"target\":\"C1\",\"id\":\"o/master\",\"remoteTrackingBranchID\":null},\"o/bar\":{\"target\":\"C1\",\"id\":\"o/bar\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C4\":{\"parents\":[\"C1\"],\"id\":\"C4\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"},\"originTree\":{\"branches\":{\"master\":{\"target\":\"C2\",\"id\":\"master\",\"remoteTrackingBranchID\":null},\"bar\":{\"target\":\"C3\",\"id\":\"bar\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"bar\",\"id\":\"HEAD\"}}}",
"name": {
"en_US": "Pull arguments",
"en_US": "Pull arguments",//MARCO
"zh_CN": "Pull arguments",
"zh_TW": "pull 的參數",
"es_AR": "Parámetros de pull",
@ -11,14 +11,14 @@ exports.level = {
},
"hint": {
"en_US": "Remember that you can create new local branches with fetch/pull arguments",
"zh_CN": "记住, 你可以通过fetch/pull创建本地分支",
"zh_CN": "记住, 你可以通过fetch/pull创建本地分支",//MARCO
"zh_TW": "記住,你可以透過 fetch 以及 pull 來建立一個新的 local 的 branch",
"es_AR": "Acordate de que podés crear nuevas ramas locales usando los parámetros de fetch/pull",
"de_DE": "Du kannst neue lokale Branches mittels fetch / pull erstellen"
},
"startDialog": {
"en_US": {
"childViews": [
"childViews": [//MARCO
{
"type": "ModalAlert",
"options": {

View file

@ -4,20 +4,20 @@ exports.level = {
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\",\"remoteTrackingBranchID\":null,\"localBranchesThatTrackThis\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"name": {
"en_US": "Git Pushin'",
"zh_CN": "Git Pushin'",
"zh_CN": "Git Pushin'",//MARCO
"zh_TW": "git push",
"es_AR": "git push",
"de_DE": "Git Push"
},
"hint": {
"en_US": "Remember you have to clone before you can push!",
"zh_CN": "push之前你需要先克隆.",
"zh_CN": "push之前你需要先克隆.",//MARCO
"zh_TW": "push 之前你需要先 clone",
"es_AR": "¡Acordate que tenés que clonar antes de pushear!",
"de_DE": "Denk dran, dass du einen Clone brauchst bevor du Pushen kannst!"
},
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",

View file

@ -6,20 +6,20 @@ exports.level = {
"git checkout": true
},
"name": {
"en_US": "Git push arguments",
"en_US": "Git push arguments",//MARCO
"zh_CN": "Git push 参数",
"zh_TW": "git push 的參數",
"es_AR": "Parámetros de git push",
"de_DE": "Optionen für Git Push"
},
"hint": {
"en_US": "You can always look at the last slide of the dialog with \"objective\"",
"en_US": "You can always look at the last slide of the dialog with \"objective\"",//MARCO
"zh_TW": "你可以利用 \"objective\" 來閱讀對話視窗的最後一頁",
"es_AR": "Siempre podés ver el último mensaje tipeando \"objective\"",
"de_DE": "Du kannst dir die Zielsetzung des Levels immer wieder mit \"objective\" anzeigen lassen"
},
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",

View file

@ -4,19 +4,19 @@ exports.level = {
"startTree": "{\"branches\":{\"master\":{\"target\":\"C6\",\"id\":\"master\",\"remoteTrackingBranchID\":\"o/master\"},\"foo\":{\"target\":\"C4\",\"id\":\"foo\",\"remoteTrackingBranchID\":\"o/foo\"},\"o/master\":{\"target\":\"C1\",\"id\":\"o/master\",\"remoteTrackingBranchID\":null},\"o/foo\":{\"target\":\"C1\",\"id\":\"o/foo\",\"remoteTrackingBranchID\":null}},\"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\",\"C3\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C2\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C5\"],\"id\":\"C6\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"},\"originTree\":{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\",\"remoteTrackingBranchID\":null},\"foo\":{\"target\":\"C1\",\"id\":\"foo\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}}",
"name": {
"en_US": "Git push arguments -- Expanded!",
"zh_CN": "Git push 参数2!",
"zh_CN": "Git push 参数2!",//MARCO
"zh_TW": "git push 的參數,延伸討論!",
"es_AR": "¡Más! Parámetros de git push",
"de_DE": "Optionen fü Git Push -- noch mehr!"
},
"hint": {
"en_US": "Remember you can admit defeat and type in \"show solution\" :P",
"en_US": "Remember you can admit defeat and type in \"show solution\" :P",//MARCO
"zh_CN": "如果你失败了, 可以通过 \"show solution\" 找到解决方案 :P",
"zh_TW": "如果你失敗了,可以利用 \"show solution\" 來找到解答:P",
"es_AR": "Recordá que podés admitir tu derrota y tipear \"show solution\" para ver la solución :P",
"de_DE": "Vergiss nicht dass du aufgeben kannst, indem du \"show solution\" eingibst :P"
},
"startDialog": {
"startDialog": {//MARCO
"en_US": {
"childViews": [
{

View file

@ -3,7 +3,7 @@ exports.level = {
"solutionCommand": "git fetch;git rebase o/master side1;git rebase side1 side2;git rebase side2 side3;git rebase side3 master;git push",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\",\"remoteTrackingBranchID\":\"o/master\",\"localBranchesThatTrackThis\":null},\"o/master\":{\"target\":\"C1\",\"id\":\"o/master\",\"remoteTrackingBranchID\":null,\"localBranchesThatTrackThis\":[\"master\"]},\"side1\":{\"target\":\"C2\",\"id\":\"side1\",\"remoteTrackingBranchID\":null,\"localBranchesThatTrackThis\":null},\"side2\":{\"target\":\"C4\",\"id\":\"side2\",\"remoteTrackingBranchID\":null,\"localBranchesThatTrackThis\":null},\"side3\":{\"target\":\"C7\",\"id\":\"side3\",\"remoteTrackingBranchID\":null,\"localBranchesThatTrackThis\":null}},\"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\":[\"C1\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C5\"],\"id\":\"C6\"},\"C7\":{\"parents\":[\"C6\"],\"id\":\"C7\"}},\"HEAD\":{\"target\":\"side3\",\"id\":\"HEAD\"},\"originTree\":{\"branches\":{\"master\":{\"target\":\"C8\",\"id\":\"master\",\"remoteTrackingBranchID\":null,\"localBranchesThatTrackThis\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C8\":{\"parents\":[\"C1\"],\"id\":\"C8\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}}",
"hint": {
"en_US": "Remember you can always use the undo or reset commands",
"en_US": "Remember you can always use the undo or reset commands",//MARCO
"zh_CN": "你随时都可以使用undo/reset命令.",
"zh_TW": "你隨時都可以使用 undo 或 reset 指令。",
"es_AR": "Acordate que siempre podés usar los comandos reset y undo",
@ -11,7 +11,7 @@ exports.level = {
},
"name": {
"en_US": "Push Master!",
"zh_CN": "Push Master!",
"zh_CN": "Push Master!",//MARCO
"zh_TW": "push master",
"es_AR": "¡Push Master!",
"de_DE": "Push Master!"
@ -19,7 +19,7 @@ exports.level = {
"compareOnlyMasterHashAgnostic": true,
"startDialog": {
"en_US": {
"childViews": [
"childViews": [//MARCO
{
"type": "ModalAlert",
"options": {

View file

@ -5,19 +5,19 @@ exports.level = {
"name": {
"en_US": "Remote Branches",
"zh_CN": "Remote Branches",
"zh_TW": "remote branch (遠端分支)",
"zh_TW": "remote branch (遠端分支)",//MARCO
"es_AR": "Ramas remotas",
"de_DE": "Branches auf entfernten Servern"
},
"hint": {
"en_US": "Pay attention to the ordering -- commit on master first!",
"zh_CN": "Pay attention to the ordering -- commit on master first!",
"zh_TW": "注意順序的問題喔!先在 master branch 上面送 commit",
"zh_TW": "注意順序的問題喔!先在 master branch 上面送 commit",//MARCO
"es_AR": "Prestá atención al orden: ¡commiteá sobre master primero!",
"de_DE": "Beachte die Sortierung -- committe zuerst auf dem master!"
},
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",

View file

@ -5,19 +5,19 @@ exports.level = {
"name": {
"en_US": "Source of nothing",
"zh_CN": "没有source",
"zh_TW": "沒有 source",
"zh_TW": "沒有 source",//MARCO
"es_AR": "Origen de nada",
"de_DE": "Die Quelle des Nichts"
},
"hint": {
"en_US": "The branch command is disabled for this level so you'll have to use fetch!",
"en_US": "The branch command is disabled for this level so you'll have to use fetch!",//MARCO
"zh_CN": "本节的分支命令被禁用了, 你只能使用fetch! ",
"zh_TW": "在本關卡中,不允許使用 branch 指令,因此你只能使用 fetch",
"es_AR": "El comando branch está deshabilitado para este nivel, así que ¡vas a tener que usar fetch!",
"de_DE": "Der branch Befehl ist für diesen Level inaktiv, du musst also fetch benutzen"
},
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",

View file

@ -6,18 +6,18 @@ exports.level = {
"en_US": "Remote Tracking",
"zh_CN": "Remote Tracking",
"zh_TW": "remote tracking",
"es_AR": "Trackeando remotos",
"es_AR": "Trackeando remotos",//MARCO
"de_DE": "Remote Tracking"
},
"hint": {
"en_US": "Remember there are two ways to set remote tracking!",
"en_US": "Remember there are two ways to set remote tracking!",//MARCO
"zh_CN": "有两种设置无端跟踪的方法!",
"zh_TW": " 記住喔,有兩個方式可以去設定 remote tracking",
"es_AR": "¡Acordate de que hay dos formas de trackear un remoto!",
"de_DE": "Nicht vergessen, es gibt zwei Arten Remote Tracking einzurichten!"
},
"startDialog": {
"en_US": {
"en_US": {//MARCO
"childViews": [
{
"type": "ModalAlert",