From 223c8205669eb1e2a8019a88426a1f43599cb07c Mon Sep 17 00:00:00 2001 From: CasheeeewNuts Date: Tue, 15 Jun 2021 23:04:24 +0900 Subject: [PATCH 1/4] translate remote/pushArg2.js into japanese --- src/levels/remote/pushArgs2.js | 80 ++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/src/levels/remote/pushArgs2.js b/src/levels/remote/pushArgs2.js index 880d12c8..9dad785a 100644 --- a/src/levels/remote/pushArgs2.js +++ b/src/levels/remote/pushArgs2.js @@ -667,6 +667,86 @@ exports.level = { } ] }, + "ja": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## `` 引数", + "", + "前のレッスンでmainブランチをpushする際に、pushするコミットがどこから来て(source)、どこへ行くのか(destination)を``引数で指定したことを思い出してください", + "", + "では、sourceとdestinationを別々のブランチにしたい場合はどうすればよいのでしょうか?", + "", + "ローカルのfooブランチに存在するコミットをリモートのbarブランチにpushするにはどうすればよいのでしょうか?", + "", + "残念ながら、Gitでそれをしようと思っても不可能なのです... ", + "", + "というのは冗談です!もちろん可能ですし、Gitにはものすごく柔軟性があります!", + "", + "次の説明に移りましょう" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "``引数でsourceとdestinationを指定するのはとても簡単です。次のようにコロンで連結すればよいのです!", + "", + "`git push origin :`", + "", + "この書式は一般的にコロンRefspecと呼ばれています。Refspecとは、ブランチや、HEAD~1といったGitが解決できる場所を表す名称です。", + "", + "sourceとdestinationを別々に指定すると、よりきめ細やかなブランチ操作がリモートコマンドで行うことができます。", + "", + "それでは実際にデモを見ていきましょう!" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "sourceはgitが解決できる場所であればどこでも良いことを思い出してください。" + ], + "afterMarkdowns": [ + "うわぁ!これはかなり奇抜な見た目のコマンドです...が実は理にかなっています。", + "", + "Gitはfoo^の場所を解決し、リモートに存在していないコミットをアップロードして、destinationに指定されたmainブランチを更新しました。" + ], + "command": "git push origin foo^:main", + "beforeCommand": "git clone; go -b foo; git commit; git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "存在していないブランチにpushしようとするとどうなると思いますか?心配ご無用です!", + "", + "Gitは与えられた名前を利用してリモート上にブランチを作成してくれます!" + ], + "afterMarkdowns": [ + "うん、とても良いですね。" + ], + "command": "git push origin main:newBranch", + "beforeCommand": "git clone; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "このレベルでは、ゴールで示されている状態になるように挑戦してください。困ったときはこの書き方を思い出してくださいね。", + "", + "`:`" + ] + } + } + ] + }, "ru_RU": { "childViews": [ { From 2abf4f07830436f6ab0c535d8d3d94e86517ac3d Mon Sep 17 00:00:00 2001 From: CasheeeewNuts Date: Tue, 15 Jun 2021 23:31:34 +0900 Subject: [PATCH 2/4] translate remote/fetchArgs.js into japanese --- src/levels/remote/fetchArgs.js | 138 +++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) diff --git a/src/levels/remote/fetchArgs.js b/src/levels/remote/fetchArgs.js index ae4eebd7..8d4971a3 100644 --- a/src/levels/remote/fetchArgs.js +++ b/src/levels/remote/fetchArgs.js @@ -1144,6 +1144,144 @@ exports.level = { } ] }, + "ja": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git Fetch の引数", + "", + "ここまでで、git pushの引数やとても便利な``引数、コロンでの参照指定(:)などについて学んできました。", + "", + "これらの知識は`git fetch`コマンドにも応用できるのでしょうか?", + "", + "その通り!`git fetch`の引数はとても、と〜っても`git push`の引数と似ています。実はfetchとpushは同種の概念ですが、適用される方向が逆なだけです。(今は、コミットをアップロードするのではなく、ダウンロードしています)", + "", + "ひとつずつしっかりと確認していきましょう..." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### ``引数", + "", + "次のように`git fetch`で場所を指定すると、", + "", + "`git fetch origin foo`", + "", + "Gitはリモートの`foo`ブランチに移動して、ローカル上に存在しないコミットを全てローカルの`o/foo`ブランチにダウンロードしてきます。", + "", + "実際に確認してみましょう(おさらいとして)" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "場所を指定することで..." + ], + "afterMarkdowns": [ + "`foo`ブランチ上のコミットだけをダウンロードしてきて、", + "", + "`o/foo`ブランチに置きます。" + ], + "command": "git fetch origin foo", + "beforeCommand": "git branch foo; git clone; git fakeTeamwork foo 2" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "しかし、なぜGitはダウンロードしてきたコミットをローカルの`foo`ブランチではなく`o/foo`ブランチに置いたのでしょうか?", + "", + "``引数に指定したブランチはローカルとリモートの両方に存在しているはずなのに...", + "", + "なぜなら、Gitは`foo`ブランチでの作業を台無しにしたくないからです!これは先ほどの`git fetch`のレッスンと関連しています。", + "", + "`git fetch`はローカルのブランチを更新するのではなく、リモートからコミットをダウンロードするだけです!", + "" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "では、ダウンロード元とダウンロード先を`:`で明示的に指定してあげるとどうなるのでしょうか?", + "", + "コミットをローカルブランチ上に「直接」取り込みたいという強い理由があるのでしたら、コロンを使ったRefspecで指定することができます。今チェックアウトしているブランチでない限り、直接取り込むことができます。", + "", + "``がリモート上の場所になり、``がそのコミットを置くローカル上の場所になるということです。", + "", + "これは`git push`と真逆で、データを逆方向に転送するということになります!", + "", + "とはいえ、開発者が実際にこの操作を行うことはありません。", + "ここでは、`fetch`と`push`がいかに似ていて、方向性が逆であるかを概念的に説明するために紹介しています。" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "このクレイジーさを実際に確認してみましょう。" + ], + "afterMarkdowns": [ + "うわぁ〜!gitは`foo~1`をorigin上の場所として解決し、そのコミットをローカルの`bar`ブランチに直接ダウンロードしました。", + "", + "保存先を指定したので`foo`と`o/foo`ブランチが更新されていないことに注目しましょう。" + ], + "command": "git fetch origin foo~1:bar", + "beforeCommand": "git branch foo; git clone; git branch bar; git fakeTeamwork foo 2" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "コマンドを実行する際にダウンロード先のブランチが存在しない場合はどうなるでしょう?" + ], + "afterMarkdowns": [ + "ご覧ください!`git push`と同じです。Gitはfetchする前にローカルへダウンロード先を作成しています。これはpushする際に、リモートにアップロード先が存在しない時、リモート上にアップロード先を作るのと同じです。" + ], + "command": "git fetch origin foo~1:bar", + "beforeCommand": "git branch foo; git clone; git fakeTeamwork foo 2" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "引数がなかったらどうなるでしょう?", + "", + "`git fetch`に引数を渡さなかった時は、リモート上に存在する全てのブランチのコミットをダウンロードしてきます・" + ], + "afterMarkdowns": [ + "とてもシンプルですね。確認してみましょう。" + ], + "command": "git fetch", + "beforeCommand": "git branch foo; git clone; git fakeTeamwork foo; git fakeTeamwork main" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "よし、話はここまでにしましょう!このレベルをクリアするにはゴールで示されている指定されたコミットだけを`fetch`します。", + "", + "コマンドを駆使してみましょう!", + "", + "両方の`fetch`コマンドにsourceとdestinationを指定する必要があります。IDが入れ替わる可能性があるのでゴールをよく確認してください。" + ] + } + } + ] + }, "ru_RU": { "childViews": [ { From 4a4f1b6f7dc0fdaadafba413f8b2d76baeec7db0 Mon Sep 17 00:00:00 2001 From: CasheeeewNuts Date: Thu, 17 Jun 2021 00:10:14 +0900 Subject: [PATCH 3/4] translate remote/sourceNothing.js into japanese --- src/levels/remote/sourceNothing.js | 57 ++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/src/levels/remote/sourceNothing.js b/src/levels/remote/sourceNothing.js index 4f1bea2a..5111f682 100644 --- a/src/levels/remote/sourceNothing.js +++ b/src/levels/remote/sourceNothing.js @@ -519,6 +519,63 @@ exports.level = { } ] }, + "ja": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### ``の変わり種", + "", + "Gitは`git push`や`git fetch`の引数としてsourceに何も指定しないことで悪用することができます。", + "", + "何も指定しない方法は次のようにsourceに空の引数を渡すことです。", + "", + "* `git push origin :side`", + "* `git fetch origin :bugFix`", + "", + "こうするとどうなるでしょうか..." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "リモートブランチに「無」をpushするとどうなるでしょうか?", + "", + "結果はそのブランチが削除されてしまいます!" + ], + "afterMarkdowns": [ + "「無」という概念をブランチに押し付けることで、リモートの`foo`ブランチを削除することに成功しました。" + ], + "command": "git push origin :foo", + "beforeCommand": "git clone; git push origin main:foo" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "最後に「無」をローカル上に`fetch`すると、実際に新しいブランチが作られます。" + ], + "afterMarkdowns": [ + "非常に奇妙ですが、気にする程のことでもありません。" + ], + "command": "git fetch origin :bar", + "beforeCommand": "git clone" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "このレベルは難しくありません!リモートのブランチを削除して`git fetch`で新しいブランチを作成するだけで完了します。" + ] + } + } + ] + }, "ru_RU": { "childViews": [ { From f3aeba64dc22092d850e1d559a7d6a5b68fd7cbc Mon Sep 17 00:00:00 2001 From: Shu-Nonaka Date: Thu, 17 Jun 2021 14:41:52 +0900 Subject: [PATCH 4/4] translate pullArgs.js into japanese --- src/levels/remote/pullArgs.js | 83 +++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/src/levels/remote/pullArgs.js b/src/levels/remote/pullArgs.js index a7b08b85..d1dcd4b1 100644 --- a/src/levels/remote/pullArgs.js +++ b/src/levels/remote/pullArgs.js @@ -703,6 +703,89 @@ exports.level = { } ] }, + "ja": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Pullの引数", + "", + "`git fetch`と`git pull`の引数について学んできたので、`git pull`について新しく学ばないといけないことは殆ど残っていません!", + "", + "なぜなら、実は`git pull`はfetchした後に、fetchしたコミットをマージするための省略形だからです!", + "", + "これはとても複雑な引数を与えた場合でも変わりません。いくつか、例を見てみましょう!" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "ここでは同等の働きをするコマンドを紹介します。", + "", + "`git pull origin foo` は次と同じ働きをします。", + "", + "`git fetch origin foo; git merge o/foo`", + "", + "他にも...", + "", + "`git pull origin bar~1:bugFix` は次と同じ働きをします。", + "", + "`git fetch origin bar~1:bugFix; git merge bugFix`", + "", + "ご覧の通り、`git pull`は単なるfetch + mergeの略語であり、git pullが必要とするのはコミットがどこへ行くのか(fetchにおける``)だけなのです。", + "", + "デモを見ていきましょう!" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "fetchする場所を指定すると" + ], + "afterMarkdowns": [ + "ご覧ください!`main`を指定することで、`o/main`にコミットをダウンロードしてきました。そして`o/main`を現在チェックアウトしている場所にマージしましたが、これはローカルの`main`ブランチではありません。", + "", + "このような挙動をするので、複数のブランチを更新するためには異なる場所(かつ同じ引数)で`git pull`を実行しなければいけません。" + ], + "command": "git pull origin main", + "beforeCommand": "git clone; go -b bar; git commit; git fakeTeamwork" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "``と``にも対応しているかですって?", + "", + "その通りです。実際に見ていきましょう!" + ], + "afterMarkdowns": [ + "ひとつのコマンドで実に大量の操作を行っていますね!", + "ローカルに`foo`ブランチを作成し、リモート上の`main`から`foo`ブランチにコミットをダウンロードして、そのブランチを今、チェックアウトしている`bar`ブランチにmergeしました!" + ], + "command": "git pull origin main:foo", + "beforeCommand": "git clone; git fakeTeamwork; go -b bar; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "示されているゴールの状態になるように頑張ってください!", + "", + "コミットをいくつかfetchして新しいブランチを作成し、それらのブランチを他のブランチにmergeする必要があります。", + "", + "しかし、それほど多くのコマンドは必要ありません!" + ] + } + } + ] + }, "ru_RU": { "childViews": [ {