mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-08-28 05:54:34 +02:00
Merge branch 'master' of https://github.com/pcottle/learnGitBranching
# Conflicts: # src/levels/remote/mergeManyFeatures.js
This commit is contained in:
commit
1a5bd9e058
27 changed files with 419 additions and 136 deletions
|
@ -430,13 +430,13 @@ exports.level = {
|
|||
"markdowns": [
|
||||
"## Gitリモート",
|
||||
"",
|
||||
"リモートのリポジトリというのはそんなに複雑なものでもありません。クラウドコンピューティングが普及している現在の世界では、gitリモートの裏には何か不思議な仕組みが動いていると思いやすいのですが、実は別のコンピューター上に保存されているあなたのリポジトリのコピーにすぎません。普通の場合では、インターネットを媒体に使いこの別のコンピューターと対話し、コミットを交互にやり取りすることができます。",
|
||||
"リモートのリポジトリというのはそんなに複雑なものでもありません。クラウドコンピューティングが普及している現在の世界では、gitリモートの裏には何か不思議な仕組みが動いていると思いやすいのですが、実は別のコンピュータ上に保存されているあなたのリポジトリのコピーにすぎません。通常、インターネットを媒体に使って別のコンピュータと対話し、コミットを交互にやり取りすることができます。",
|
||||
"",
|
||||
"とはいえ、リモートリポジトリにはいくつかの素晴らしい特徴があります:",
|
||||
"",
|
||||
"- まず、リモートはバックアップの役割を果たします。ご存知の通り、ローカルのgitリポジトリは以前の状態にファイルを復帰する機能を持っているのですが、その情報はすべてローカルに保存されています。gitリポジトリを別のコンピューターにも保存することで、ローカルのデーターがすべて失われたとしても、保存状態からコーディングを続けられます。",
|
||||
"- まず、リモートはバックアップの役割を果たします。ご存知の通り、ローカルのgitリポジトリは以前の状態にファイルを復帰する機能を持っているのですが、その情報はすべてローカルに保存されています。gitリポジトリを別のコンピュータにも保存することで、ローカルのデータがすべて失われたとしても、保存状態からコーディングを続けられます。",
|
||||
"",
|
||||
"- それよりも大切なこととして、リモートではコードをより一般的に公開できます!プロジェクトのコピーが別の場所に保存されているため、友達などが簡単にそのプロジェクトに参加したり最近の変更をpullしたりできます。",
|
||||
"- それよりも大切なこととして、リモートではコードをより一般的に公開できます!プロジェクトのコピーが別の場所に保存されているため、友達などが簡単にそのプロジェクトに参加したり最近の変更をpullしたりできます。",
|
||||
"",
|
||||
"最近ではリモートリポジトリに関するデータをビジュアル的に表示するウェブサイト([Github](https://github.com/)や[Phabricator](http://phabricator.org/)など)の使用が人気を集めていますが、リモートリポジトリは_そのいずれの_ウェブサイトの裏にも使われています。なので理解する必要があります。"
|
||||
]
|
||||
|
@ -450,7 +450,7 @@ exports.level = {
|
|||
"",
|
||||
"今までLearn Git Branchingでは_ローカル_リポジトリの様々な作業(branch, merge, rebaseなど)に焦点を当ててきました。しかし、これからはリモートリポジトリの作業を学びますので、レッスンのために環境をセットアップする必要があります。そのコマンドは`git clone`になります。",
|
||||
"",
|
||||
"普通の場合では`git clone`はリモートリポジトリ(githubなどから)を_ローカル_にコピーする時に使います。しかしLearn Git Branchingでは少し違ったように使います -- ここでは`git clone`が_ローカルリポジトリ_をリモートにコピーします。本当のコマンドの逆の動作になっているのですが、このようにcloneとリモートリポジトリのつながりが見えてきますので今のところは例として使いましょう。",
|
||||
"通常、`git clone`はリモートリポジトリ(githubなどから)を_ローカル_にコピーする時に使います。しかしLearn Git Branchingでは少し違ったように使います -- ここでは`git clone`が_ローカルリポジトリ_をリモートにコピーします。本当のコマンドの逆の動作になっているのですが、学んでいくうちにcloneとリモートリポジトリのつながりが見えてくるはずです。なので、今はとりあえず例として使ってみましょう。",
|
||||
""
|
||||
]
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ exports.level = {
|
|||
"en_US": "Faking Teamwork",
|
||||
"fr_FR": "Simulation du travail d'équipe",
|
||||
"de_DE": "Teamarbeit simulieren",
|
||||
"ja" : "擬似チームワーク",
|
||||
"ja" : "擬似的なチーム作業",
|
||||
"es_AR": "Simulando el trabajo en equipo",
|
||||
"pt_BR": "Simulando trabalho em equipe",
|
||||
"zh_CN": "模拟团队合作",
|
||||
|
@ -17,7 +17,7 @@ exports.level = {
|
|||
"en_US": "remember you can specify the number of commits to fake",
|
||||
"fr_FR": "rappelez-vous que vous pouvez spécifier le nombre de commits à simuler",
|
||||
"de_DE": "Nicht vergessen, du kannst angeben wieviele Commits simuliert werden sollen.",
|
||||
"ja" : "擬似で作成するコミット数を指定できるのをお忘れなく",
|
||||
"ja" : "擬似的に作成するコミット数を指定できるのをお忘れなく",
|
||||
"es_AR": "Acordate que podés especificar cuántos commits simular",
|
||||
"pt_BR": "Lembre-se que você pode especificar quantos commits quer simular",
|
||||
"zh_CN": "记住为fake中的commit指定数量",
|
||||
|
@ -456,6 +456,62 @@ exports.level = {
|
|||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ja": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## 連携のシミュレーション",
|
||||
"",
|
||||
"ここでは少し奇怪なものを取り扱います -- これは次回以降の幾つかのレッスンのためのもので、リモートセクションで変更点の反映方法を教えるのに必要なものです。",
|
||||
"",
|
||||
"つまり、私たちには時にはリモートの特定のブランチや特定の数のコミットを、同僚/友人/共同開発者の一人が更新した「ふりをする」ことが必要だというわけです。",
|
||||
"",
|
||||
"これを行うために、私たちは適切に選んだ名前のコマンド`git fakeTeamwork`を導入しました!とても明白でしょう?では、デモを見てみましょう。",
|
||||
"",
|
||||
"*注:もちろん、本当のgit上にこのようなコマンドは存在しません!変更は、「実在する」同僚や友人が行ってくれるでしょうから!ここではレッスンのために「擬似的に」導入しているにすぎません!*"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"`fakeTeamwork`のデフォルトの動作は、単にmasterの上にコミットを乗っけるだけです"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"ではいってみましょう -- リモートには新しいコミットが更新され、それはまだ私たちの手元にはダウンロードされていません。なぜなら、`git fetch`を走らせていませんからね。"
|
||||
],
|
||||
"command": "git fakeTeamwork",
|
||||
"beforeCommand": "git clone"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"さらに特定の数のコミット、または追加するブランチをコマンドで指定することもできます。"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"一つのコマンドで、チームメイトが3個のコミットをリモートの`foo`ブランチにプッシュするという動作を再現することができました。"
|
||||
],
|
||||
"command": "git fakeTeamwork foo 3",
|
||||
"beforeCommand": "git branch foo; git clone"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"今後のレベルはどんどん難しくなっていくでしょうから、このレベルでも私たちはあなたに少々多くのことを求めます。",
|
||||
"",
|
||||
"先に行くには、リモートを作り(`git clone`で)、リモートに幾つかの変更を再現して、自身のリポジトリにコミットし、変更を取り込む必要があります。これは、このリモートのセクションでやった幾つかのレッスンの内容と似ていますね!"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -544,7 +544,7 @@ exports.level = {
|
|||
"",
|
||||
"リモートGitを用いた作業は、本当にただ単なる他のリポジトリ_への_、または他のリポジトリ_からの_データの転送に集約されます。コミットを転送できる限り、Gitで管理されている全ての種類の更新が共有できます(例えば作業や、新しいファイル、新しいアイデア、ラブレターなどです)。",
|
||||
"",
|
||||
"このレベルでは、リモートリポジトリ_から_どうやってデータを取ってくる方法を学びます -- このコマンドは`git fetch`と名付けられています。",
|
||||
"このレベルでは、リモートリポジトリ_から_データを取ってくる方法を学びます -- このコマンドは`git fetch`と名付けられています。",
|
||||
"",
|
||||
"リモートリポジトリの情報を私たちが更新するように、_リモート_ブランチも情報を更新することができることが分かるでしょう。これは前のレッスンでのリモートブランチの働きに結びつきます。"
|
||||
]
|
||||
|
@ -576,7 +576,7 @@ exports.level = {
|
|||
"",
|
||||
"`git fetch`は本質的には、_実際_のリモートリポジトリと同じように見えるような形でリモートリポジトリの_ローカル_の情報に同期します(ちょうど今のように)。",
|
||||
"",
|
||||
"あなたは前のレッスンでのことを覚えていると思いますが、リモートブランチはリモートリポジトリと最後に同期した時での状態を保持しているという話をしました。`git fetch`はそのリモートと同期する方法なのです!これでリモートブランチと`git fetch`の関係性は明らかになったでしょう?",
|
||||
"前のレッスンでのことを覚えていると思いますが、リモートブランチはリモートと最後に同期した時点での状態を保持しているという話をしました。`git fetch`はそのリモートと同期する方法なのです!これでリモートブランチと`git fetch`の関係性は明らかになったでしょう?",
|
||||
"",
|
||||
"`git fetch`は、通常インターネットを通してリモートリポジトリと対話します(`http://`または`git://`プロトコル経由で)。",
|
||||
""
|
||||
|
@ -591,7 +591,7 @@ exports.level = {
|
|||
"",
|
||||
"`git fetch`は、しかしながら、_あなたの_ローカルの状態は変更しません。あなたの`master`ブランチや他のもの、今現在のあなたのファイルシステムが見せているものを更新しないのです。",
|
||||
"",
|
||||
"これは理解する上で重要なことです。なぜなら、多くの技術者は`git fetch`がリモートの状態をローカルの作業場に反映してくれると思っているからです。必要なデータはダウンロードされるかもしれませんが、ローカルのファイルを実際に変更するというようなことは_してくれない_のです。私たちは、この後のレッスンでもこのようなコマンドを学びます:D",
|
||||
"これは理解する上で重要なことです。なぜなら、多くの技術者は`git fetch`がリモートの状態をローカルの作業場に反映してくれると思っているからです。必要なデータはダウンロードされるかもしれませんが、ローカルのファイルを実際に変更するというようなことは_してくれない_のです。私たちは、この後のレッスンでもこのようなコマンドを学びます :D",
|
||||
"",
|
||||
"なので、この1日が終わる頃には、あなたは`git fetch`のダウンロードステップの動作が分かるようになるでしょう。"
|
||||
]
|
||||
|
|
|
@ -20,7 +20,7 @@ exports.level = {
|
|||
"es_AR": "Prestá atención al orden del objetivo",
|
||||
"ot_BR": "Preste atenção na ordem da visualização do objetivo",
|
||||
"de_DE": "Beachte die Reihenfolge in der Zieldarstellung",
|
||||
"ja" : "ゴールのビジュアライズの順番を参照",
|
||||
"ja" : "ゴールのツリーの順番を参考にすること",
|
||||
"fr_FR": "regardez l'ordre dans la fenêtre de visualisation d'objectif",
|
||||
"ru_RU": "проверьте сортировку в визуализации цели"
|
||||
},
|
||||
|
@ -1168,6 +1168,149 @@ exports.level = {
|
|||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ja": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## 分かれた作業",
|
||||
"",
|
||||
"これまでは、どのようにして`pull`でコミットを取り込み、`push`で自身の変更を反映するかを見てきました。単純なようにみえます。では何故人々は混乱するのでしょうか?",
|
||||
"",
|
||||
"その難しさは、リポジトリの履歴が*分岐*することに起因します。この詳細について説明する前に、まずは例を見てみましょう。",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"月曜日にリポジトリをクローンし、ある表面の機能をちょっと弄ることを想像してみてください。金曜日までに、あなたはその機能を公開する準備ができる -- しかし、ああなんということでしょう!あなたの同僚達は、あなたの機能が依存していた(そして、廃れた)コードの束をその週の内に書き換えていました。彼らはリモートリポジトリにコミットを共有して公開し、今や*あなたの*作業は*古い*バージョンのもはや適切でないプロジェクトに基づいていることになります。",
|
||||
"",
|
||||
"この場合、`git push`コマンドは曖昧になってしまいます。あなたが`git push`を走らせたとき、gitはリモートリポジトリは月曜の状態に変更を戻すべきでしょうか?それとも、新しいコードを取り除かないで追加しようとしてみるべきでしょうか?または、あなたの変更が完全に古いものになってしまったため、全て無視するべきなのでしょうか?",
|
||||
"",
|
||||
"この状況(履歴が分岐をしているとき)ではまったくもって曖昧なので、gitはあなたの変更を`push`することを許可しません。実際には、あなたの作業を共有する前に最新のリモートの状態を取り込むことを強制します。"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"話しすぎましたね!この状況での動作をみてみましょう!"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"見ましたか?コマンドが失敗して、何も起こりませんでした。あなたの最近の`C3`コミットはリモートの`C1`コミットに依存しているため、`git push`は失敗しました。リモートには`C2`が更新されているので、gitはあなたのプッシュを拒否します。"
|
||||
],
|
||||
"command": "git push",
|
||||
"beforeCommand": "git clone; git fakeTeamwork; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"ではこの状況を解決するにはどうしたらいいでしょう?簡単です、リモートブランチの最新の状態にあなたの作業が基づくようにすればいいのです。",
|
||||
"",
|
||||
"いくつか方法はありますが、最も簡単なのはあなたの作業をリベースで移動させることです。それがどのようなものか、さあみてみましょう。"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"今、プッシュをする前に代わりにリベースをしてみましょう。"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"わお!私たちは`git fetch`でローカルのリモートブランチを更新し、私たちの作業をリベースさせてリモートの新しい変更に適用させ、`git push`でそれをプッシュしました。"
|
||||
],
|
||||
"command": "git fetch; git rebase o/master; git push",
|
||||
"beforeCommand": "git clone; git fakeTeamwork; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"リモートリポジトリが更新されたとき、他に自身の作業を更新する方法はあるでしょうか?もちろん、あります!今度は同じことを`merge`を代わりに使ってやってみましょう。",
|
||||
"",
|
||||
"`git merge`はあなたの作業を移動しませんが(代わりにマージコミットを作ります)、リモートの変更を全て取り込みgitに通知する方法なのです。この通知とは、リモートブランチが今やあなた自身のブランチの*親*を指していることになるため、あなたのリモートブランチの全ての変更を反映しているコミットを指します。",
|
||||
"",
|
||||
"この状況の例を見てみましょう。"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"リベースの代わりに今度はマージを用います。"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"わお!私たちは`git fetch`でローカルのリモートブランチを更新し、私たちの作業を*マージ*して(リモートの新しい変更を反映するために)、`git push`でそれをプッシュしました。"
|
||||
],
|
||||
"command": "git fetch; git merge o/master; git push",
|
||||
"beforeCommand": "git clone; git fakeTeamwork; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"素晴らしい!多くのコマンドを打たないでこれを実現する方法はあるでしょうか?",
|
||||
"",
|
||||
"もちろん -- あなたが既に知っているコマンドです。`git pull`は、`fetch`して`merge`するためのより短い書き方です。さらに便利なことに、`git pull --rebase`は`fetch`して`rebase`することの省略形です!",
|
||||
"",
|
||||
"コマンドを省略した場合を見てみましょう。"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"まずは、`--rebase`から"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"前と一緒です!そしてとても短いです。"
|
||||
],
|
||||
"command": "git pull --rebase; git push",
|
||||
"beforeCommand": "git clone; git fakeTeamwork; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"そして通常使う`pull`で試してみましょう"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"ここでも、前と同じです!"
|
||||
],
|
||||
"command": "git pull; git push",
|
||||
"beforeCommand": "git clone; git fakeTeamwork; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"この取り込み作業の流れ、リベースとマージ、そしてプッシュはとてもよく行います。次回以降のレッスンではより複雑なパターンの作業を学びますが、今は習ったことをとりあえず試してみましょう。",
|
||||
"",
|
||||
"このレベルをクリアするには、以下のステップを踏みます:",
|
||||
"",
|
||||
"* あなたのリポジトリをクローン",
|
||||
"* 擬似的に幾つかの同僚の変更を真似る(1コミット)",
|
||||
"* あなた自身の作業をコミット(1コミット)",
|
||||
"* あなたの作業を*リベース*で公開"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -19,7 +19,7 @@ exports.level = {
|
|||
"es_AR": "¡Prestá atención al árbol final!",
|
||||
"pt_BR": "Preste atenção na árvore do objetivo!",
|
||||
"de_DE": "Beachte den Ziel-Baum!",
|
||||
"ja" : "ゴールツリーに注意!",
|
||||
"ja" : "ゴールツリーをよく見てください!",
|
||||
"fr_FR": "Respectez l'arbre représentant l'objectif !"
|
||||
},
|
||||
"compareOnlyMaster": true,
|
||||
|
@ -339,6 +339,51 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ja": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## なぜマージではいけないのか?",
|
||||
"",
|
||||
"新しい更新をリモートにプッシュするため、あなたがする必要があるのはリモートからの最近の変更の*組み込み*です。それは、リモートブランチ(例えば、`o/master`)にリベース*か*マージのどちらかをあなたがする必要があるということを意味します。",
|
||||
"",
|
||||
"もしどっちの方法でも行うことができるなら、なぜこれまでのレッスンでは、リベースに焦点を当ててきたのでしょう?リモートへの作業で、なぜ`merge`を推してこなかったのでしょうか?",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"開発コミュニティで、マージとリベースの間でのトレードオフについては多くの議論がなされています。ここでは一般的なリベースのメリット/デメリットを紹介しましょう:",
|
||||
"",
|
||||
"メリット:",
|
||||
"",
|
||||
"* リベースは全てが直線上にあるので、あなたのコミットツリーをとても綺麗にみせます。",
|
||||
"",
|
||||
"デメリット:",
|
||||
"",
|
||||
"* リベースは、コミットツリーの(見ため上の)履歴を改変してしまいます。",
|
||||
"",
|
||||
"例えば、`C1`コミットは*過去*の`C3`コミットにリベースすることができます。それは、実際には前に完了しているのにもかかわらず、`C1'`の作業がまるで`C3`の後に行われたものであるかのように見えるようになります。",
|
||||
"",
|
||||
"幾人かの開発者は、履歴をそのまま保持するのが好みで、マージを選択します。その他(例えば私は)きれいなコミットツリーを好むのでリベースを選択します。つまるところ、好みの問題というわけですね :D"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"このレベルでは、前回のレベルを*マージ*を代わりに使って解いてみてください。ちょっと難しいかもしれませんが、このレッスンのポイントを把握するのに十分な知見を得られるはずです。"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -507,7 +507,7 @@ exports.level = {
|
|||
"",
|
||||
"今や私たちはリモートリポジトリから`git fetch`でデータを取ってくる方法を知っているので、今度は私たちの作業にその変更を反映することを学びましょう!",
|
||||
"",
|
||||
"実際には多くの方法があり、ローカルで利用可能な新しいコミットがあった場合、あなたはそれらが他のブランチの普通のコミットであるかのようにそれらを組み込むことができます。これは、あなたが次のようなコマンドを実行することで行えます:",
|
||||
"実際には多くの方法があり、ローカルに利用可能なリモートの新しいコミットがある場合、あなたはそのコミットを他のブランチの通常のコミットと同じように、自分の作業に組み込むことができます。これは、あなたが次のようなコマンドを実行することで行えます:",
|
||||
"",
|
||||
"* `git cherry-pick o/master`",
|
||||
"* `git rebase o/master`",
|
||||
|
|
|
@ -20,7 +20,7 @@ exports.level = {
|
|||
"es_AR": "¡Acordate que tenés que clonar antes de pushear!",
|
||||
"pt_BR": "Lembre-se de clonar antes de fazer o push!",
|
||||
"de_DE": "Denk dran, dass du einen Clone brauchst bevor du Pushen kannst!",
|
||||
"ja" : "Pushできる前にまずリポジトリをcloneする必要があるのをお忘れなく",
|
||||
"ja" : "Pushができるようになるには、まずリポジトリをcloneする必要があるのをお忘れなく",
|
||||
"fr_FR": "Rappelez-vous que vous devez cloner avant de pouvoir faire un push !",
|
||||
"ru_RU": "Помните, что прежде чем push-ить вам нужно сколнировать репозиторий!"
|
||||
},
|
||||
|
@ -360,6 +360,49 @@ exports.level = {
|
|||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ja": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Git Push",
|
||||
"",
|
||||
"さて、私たちは変更をリモートからダウンロードしてきて、ローカルの自分の作業に取り込むことができるようになりました。それは素晴らしいことですが、例えば他の誰かに_自分の_作業を共有する場合はどうすればいいでしょう?",
|
||||
"",
|
||||
"そうですね、共有する作業をアップロードする方法は作業をダウンロードするものと対照的です。`git pull`の反対はなんでしょう? `git push`です!",
|
||||
"",
|
||||
"`git push`は_あなたの_変更をリモートに対話的にアップロードし、リモートにあなたの新しい変更を取り込みます。`git push`が完了すれば、全ての友人たちがあなたの作業をリモートからダウンロードすることができます。",
|
||||
"",
|
||||
"`git push`は、あなたの作業を「公開する」コマンドと考えることができます。このコマンドは微妙な点をいくつか持っていますが、とりあえずは初歩から始めてみましょう。。。",
|
||||
"",
|
||||
"*注:引数なしの`git push`の挙動は、`push.default`と呼ばれるgitの設定値によって異なります。この設定のデフォルト値は、使用しているgitのバージョンに依存しますが、私たちのレッスンでは`upstream`という値を使用します。これはあまり大きな問題ではありませんが、あなたのプロジェクトにプッシュする前にあなたのgitの設定を確認する価値はあるでしょう。*"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"ここにリモートにはないいくつかの変更点があります。これをアップロードしてみましょう!"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"さて、いってみましょう -- リモートはコミット`C2`を受け取り、リモート上の`master`ブランチは`C2`の位置に更新され、私たち*自身*のリモートブランチ(`o/master`)も良い具合に更新されました。全てが同期されました!"
|
||||
],
|
||||
"command": "git push",
|
||||
"beforeCommand": "git clone; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"このレベルを終えるには、単純に二つの新しいコミットをリモートに共有してください。けれども覚悟しておいてください。なぜなら、レッスンは少々難しいことを取り扱っているからです。"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -34,7 +34,7 @@ exports.level = {
|
|||
"markdowns": [
|
||||
"## Push arguments",
|
||||
"",
|
||||
"Great! Now that you know about remote tracking branches we can start to uncover some of mystery behind how git push, fetch, and pull work. We're going to tackle one command at a time but the concepts between them are very similar.",
|
||||
"Great! Now that you know about remote tracking branches we can start to uncover some of the mystery behind how git push, fetch, and pull work. We're going to tackle one command at a time but the concepts between them are very similar.",
|
||||
"",
|
||||
"First we'll look at `git push`. You learned in the remote tracking lesson that git figured out the remote *and* the branch to push to by looking at the properties of the currently checked out branch (the remote that it \"tracks\"). This is the behavior with no arguments specified, but git push can optionally take arguments in the form of:",
|
||||
"",
|
||||
|
|
|
@ -20,7 +20,7 @@ exports.level = {
|
|||
"es_AR": "¡Push Master!",
|
||||
"pt_BR": "Push Master!",
|
||||
"de_DE": "Push Master!",
|
||||
"ja": "Push Master!",
|
||||
"ja" : "Push Master!",
|
||||
"fr_FR": "Maître du push !",
|
||||
"ru_RU": "Push Мастер!"
|
||||
},
|
||||
|
@ -449,6 +449,59 @@ exports.level = {
|
|||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ja": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## 機能別のブランチ(フィーチャーブランチ)をマージする",
|
||||
"",
|
||||
"今や、あなたは`fetch`、`pull`、`push`を十分に使えるようになったでしょうから、そのスキルを新しい作業の流れで試してみましょう。",
|
||||
"",
|
||||
"大きなプロジェクトの開発者にとって、フィーチャーブランチ(`master`を除く)上で全ての作業を行い、完成したら一度でその作業を統合するというような流れが一般的です。これは前のレッスンの内容(他のブランチからリモートにプッシュされるような状況のところが)に似ていますが、ここではもう一歩踏み込んで解説しましょう。",
|
||||
"",
|
||||
"開発者は、`master`ブランチにいるときプッシュとプルしかしません -- `master`は常にリモート(`o/master`)に追従した状態のままにします。",
|
||||
"",
|
||||
"この作業の流れでは、私たちは二つのことを組み合わせています:",
|
||||
"",
|
||||
"* `master`にフィーチャーブランチの作業を統合し、",
|
||||
"* リモートへの`push`と`pull`を行う"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"`master`の更新と作業の反映の方法を手早く復習しましょう。"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"我々はここで二つのコマンドを動かしました:",
|
||||
"",
|
||||
"* リモートから新しいコミットを我々の作業にリベースし、",
|
||||
"* リモートに我々の作業を公開しました"
|
||||
],
|
||||
"command": "git pull --rebase; git push",
|
||||
"beforeCommand": "git clone; git commit; git fakeTeamwork"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"このレベルはかなり難しいです -- ここに解答の一般的な道のりを示しておきます:",
|
||||
"",
|
||||
"* 三つのフィーチャーブランチ、`side1`、`side2`、`side3`があります。",
|
||||
"* この機能をそれぞれ、この順に、リモートにプッシュしてください。",
|
||||
"* リモートが更新されたなら、次はより良く作業を統合する方法を紹介しましょう。",
|
||||
"",
|
||||
":O これはきつそうだ!このレベルを完了させることは大きな一歩となります。幸運を祈ります。"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -482,7 +482,7 @@ exports.level = {
|
|||
"",
|
||||
"これに基づいて、`o/master`と名付けられたブランチを見てみると、`master`はブランチの名前、`o`はリモートの名前であることが分かります。",
|
||||
"",
|
||||
"多くの開発者は、実際にはメインのリモート名として`o`ではなく`origin`を使います。これは一般的には、Gitが`git clone`した時に`origin`という名前をリモートに付与ためです。",
|
||||
"多くの開発者は、実際にはメインのリモート名として`o`ではなく`origin`を使います。これは一般的には、Gitが`git clone`した時に`origin`という名前をリモートに付与するためです。",
|
||||
"",
|
||||
"残念ながら、`origin`という長い名前は私たちのUIには合いませんでした。なので、私たちは短い`o`を使っています(覚えておいてもらいたいのは、実際のGitでは、リモートはおそらく`origin`と名付けられるであろうということです!)",
|
||||
"",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue