multiple per line

This commit is contained in:
Peter Cottle 2020-12-27 10:36:50 -07:00
parent 40313ac3b1
commit 673de4da1c
14 changed files with 191 additions and 188 deletions

3
.gitignore vendored
View file

@ -12,6 +12,9 @@ index.html
# Vim swaps # Vim swaps
*.sw* *.sw*
# sed backups
*.bak
# Annoying mac stuff # Annoying mac stuff
.DS_STORE .DS_STORE

View file

@ -85,7 +85,7 @@ exports.level = {
"Let's try to put some work on this new branch. Hit the button below." "Let's try to put some work on this new branch. Hit the button below."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Oh no! The `main` branch moved but the `newImage` branch didn't! That's because we weren't \"on\" the new branch, which is why the asterisk (*) was on `master`." "Oh no! The `main` branch moved but the `newImage` branch didn't! That's because we weren't \"on\" the new branch, which is why the asterisk (*) was on `main`."
], ],
"command": "git commit", "command": "git commit",
"beforeCommand": "git branch newImage" "beforeCommand": "git branch newImage"
@ -174,7 +174,7 @@ exports.level = {
"Lass uns mal ein wenig auf dem neuen Branch arbeiten. Machen wir einen Commit:" "Lass uns mal ein wenig auf dem neuen Branch arbeiten. Machen wir einen Commit:"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Oi! Der Branch `main` hat sich verändert, aber der Branch `issue` nicht. Das liegt daran, dass wir nicht \"auf\" dem neuen Branch waren, weshalb das Sternchen `*` auch hinter `master` steht." "Oi! Der Branch `main` hat sich verändert, aber der Branch `issue` nicht. Das liegt daran, dass wir nicht \"auf\" dem neuen Branch waren, weshalb das Sternchen `*` auch hinter `main` steht."
], ],
"command": "git commit", "command": "git commit",
"beforeCommand": "git branch issue" "beforeCommand": "git branch issue"
@ -329,7 +329,7 @@ exports.level = {
"Pongamos algo de trabajo en esta nueva rama. Apretá el botón de acá abajo." "Pongamos algo de trabajo en esta nueva rama. Apretá el botón de acá abajo."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"¡Uh, no! ¡La rama `main` avanzó, pero `newImage` no! Eso es porque no estábamos \"en\" la rama nueva, y por eso el asterisco (*) estaba en `master`." "¡Uh, no! ¡La rama `main` avanzó, pero `newImage` no! Eso es porque no estábamos \"en\" la rama nueva, y por eso el asterisco (*) estaba en `main`."
], ],
"command": "git commit", "command": "git commit",
"beforeCommand": "git branch newImage" "beforeCommand": "git branch newImage"
@ -407,7 +407,7 @@ exports.level = {
"Pongamos algo de trabajo en esta nueva rama. Aprieta el botón que se encuentra debajo." "Pongamos algo de trabajo en esta nueva rama. Aprieta el botón que se encuentra debajo."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"¡Uh, no! ¡La rama `main` avanzó, pero `newImage` no! Eso es porque no estábamos \"en\" la rama nueva, y por eso el asterisco (*) estaba en `master`." "¡Uh, no! ¡La rama `main` avanzó, pero `newImage` no! Eso es porque no estábamos \"en\" la rama nueva, y por eso el asterisco (*) estaba en `main`."
], ],
"command": "git commit", "command": "git commit",
"beforeCommand": "git branch newImage" "beforeCommand": "git branch newImage"
@ -485,7 +485,7 @@ exports.level = {
"Pongamos algo de trabajo en esta nueva rama. Aprieta el botón de aquí abajo." "Pongamos algo de trabajo en esta nueva rama. Aprieta el botón de aquí abajo."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"¡Vaya! ¡La rama `main` avanzó, pero `newImage` no! Eso es porque no estábamos \"en\" la rama nueva, y por eso el asterisco (*) estaba en `master`." "¡Vaya! ¡La rama `main` avanzó, pero `newImage` no! Eso es porque no estábamos \"en\" la rama nueva, y por eso el asterisco (*) estaba en `main`."
], ],
"command": "git commit", "command": "git commit",
"beforeCommand": "git branch newImage" "beforeCommand": "git branch newImage"
@ -563,7 +563,7 @@ exports.level = {
"Vamos tentar colocar algum trabalho neste novo ramo. Clique no botão abaixo." "Vamos tentar colocar algum trabalho neste novo ramo. Clique no botão abaixo."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Ah não! O ramo `main` se moveu mas o `newImage` não! Isso é porque o novo ramo não era o \"ativo\", e é por isso que o asterisco (*) estava no `master`." "Ah não! O ramo `main` se moveu mas o `newImage` não! Isso é porque o novo ramo não era o \"ativo\", e é por isso que o asterisco (*) estava no `main`."
], ],
"command": "git commit", "command": "git commit",
"beforeCommand": "git branch newImage" "beforeCommand": "git branch newImage"
@ -641,7 +641,7 @@ exports.level = {
"Imos intentar colocar algún traballo nesta nova rama. Pincha no botón de abaixo." "Imos intentar colocar algún traballo nesta nova rama. Pincha no botón de abaixo."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"¡Bueno home! A rama `main` moveuse pero a rama `newImage` non! Eso é porque a nova rama non era a \"actual\", e é por iso que o asterisco (*) ficaba na rama `master`." "¡Bueno home! A rama `main` moveuse pero a rama `newImage` non! Eso é porque a nova rama non era a \"actual\", e é por iso que o asterisco (*) ficaba na rama `main`."
], ],
"command": "git commit", "command": "git commit",
"beforeCommand": "git branch newImage" "beforeCommand": "git branch newImage"
@ -723,7 +723,7 @@ exports.level = {
"Travaillons mainenant dans cette branche. Appuyez sur le bouton ci-dessous." "Travaillons mainenant dans cette branche. Appuyez sur le bouton ci-dessous."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Oh non! La branche `main` a bougé mais pas la branche `newImage` ! C'est parce que nous n'étions pas \"sur\" la nouvelle branche, comme indiqué par l'astérisque (*) sur `master`." "Oh non! La branche `main` a bougé mais pas la branche `newImage` ! C'est parce que nous n'étions pas \"sur\" la nouvelle branche, comme indiqué par l'astérisque (*) sur `main`."
], ],
"command": "git commit", "command": "git commit",
"beforeCommand": "git branch newImage" "beforeCommand": "git branch newImage"
@ -802,7 +802,7 @@ exports.level = {
], ],
"command": "git commit", "command": "git commit",
"afterMarkdowns": [ "afterMarkdowns": [
"哎呀!为什么 `main` 分支前进了,但 `newImage` 分支还待在原地呢?!这是因为我们没有“在”这个新分支上,看到 `master` 分支上的那个星号(*)了吗?这表示当前所在的分支是 `master`。" "哎呀!为什么 `main` 分支前进了,但 `newImage` 分支还待在原地呢?!这是因为我们没有“在”这个新分支上,看到 `main` 分支上的那个星号(*)了吗?这表示当前所在的分支是 `main`。"
], ],
"beforeCommand": "git branch newImage" "beforeCommand": "git branch newImage"
} }
@ -882,7 +882,7 @@ exports.level = {
], ],
"command": "git commit", "command": "git commit",
"afterMarkdowns": [ "afterMarkdowns": [
"太奇怪了啦! `main` branch 前進了,但 `newImage` branch 沒有前進!這是因為我們沒有「在」這個新的 branch 上,這也是為什麼星號(*)會在 `master` 上。" "太奇怪了啦! `main` branch 前進了,但 `newImage` branch 沒有前進!這是因為我們沒有「在」這個新的 branch 上,這也是為什麼星號(*)會在 `main` 上。"
], ],
"beforeCommand": "git branch newImage" "beforeCommand": "git branch newImage"
} }
@ -959,7 +959,7 @@ exports.level = {
"이 새로운 브랜치에 약간의 작업을 더해봅시다. 아래 버튼을 눌러주세요" "이 새로운 브랜치에 약간의 작업을 더해봅시다. 아래 버튼을 눌러주세요"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"앗! `main` 브랜치가 움직이고, `newImage` 브랜치는 이동하지 않았네요! 그건 우리가 새 브랜치 위에 있지 않았었기 때문입니다. 별표(*)가 `master`에 있었던 것이죠." "앗! `main` 브랜치가 움직이고, `newImage` 브랜치는 이동하지 않았네요! 그건 우리가 새 브랜치 위에 있지 않았었기 때문입니다. 별표(*)가 `main`에 있었던 것이죠."
], ],
"command": "git commit", "command": "git commit",
"beforeCommand": "git branch newImage" "beforeCommand": "git branch newImage"
@ -1118,7 +1118,7 @@ exports.level = {
"Давайте спробуємо додати якусь інформацію до цієї нової гілки. Натисни кнопку внизу." "Давайте спробуємо додати якусь інформацію до цієї нової гілки. Натисни кнопку внизу."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"От халепа! Гілка `main` просунулася вперед, але гілка `newImage` \u2014 ні! Це тому, що ми були не \"на новій гілці\". Через це зірочка (*) була поруч з `master`." "От халепа! Гілка `main` просунулася вперед, але гілка `newImage` \u2014 ні! Це тому, що ми були не \"на новій гілці\". Через це зірочка (*) була поруч з `main`."
], ],
"command": "git commit", "command": "git commit",
"beforeCommand": "git branch newImage" "beforeCommand": "git branch newImage"
@ -1196,7 +1196,7 @@ exports.level = {
"Nào cùng thử thêm nội dung vào nhánh mới này nào. Hãy bấm nút bên dưới" "Nào cùng thử thêm nội dung vào nhánh mới này nào. Hãy bấm nút bên dưới"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Ồ không! Nhánh `main` đã di chuyển nhưng nhánh `newImage` thì không! Đó là do ta không \"nằm trên\" nhánh mới, đó là tại sao dấu hoa thị (*) nằm trên nhánh `master`." "Ồ không! Nhánh `main` đã di chuyển nhưng nhánh `newImage` thì không! Đó là do ta không \"nằm trên\" nhánh mới, đó là tại sao dấu hoa thị (*) nằm trên nhánh `main`."
], ],
"command": "git commit", "command": "git commit",
"beforeCommand": "git branch newImage" "beforeCommand": "git branch newImage"
@ -1278,7 +1278,7 @@ exports.level = {
"Poizkusimo dodati nekaj dela na ta nov branch. Pristisni gumb spodaj." "Poizkusimo dodati nekaj dela na ta nov branch. Pristisni gumb spodaj."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"O ne! `main` branch se je premaknil ampak `newImage` branch se pa ni! To je zato, ker nismo bili \"na\" novem branchu, kot smo lahko videli z označeno zvezdico (*) na `master` branchu." "O ne! `main` branch se je premaknil ampak `newImage` branch se pa ni! To je zato, ker nismo bili \"na\" novem branchu, kot smo lahko videli z označeno zvezdico (*) na `main` branchu."
], ],
"command": "git commit", "command": "git commit",
"beforeCommand": "git branch newImage" "beforeCommand": "git branch newImage"
@ -1360,7 +1360,7 @@ exports.level = {
"Spróbujmy trochę popracować nad tą nowym branch-em (gałęzią).\nKliknij przycisk poniżej." "Spróbujmy trochę popracować nad tą nowym branch-em (gałęzią).\nKliknij przycisk poniżej."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"O nie! branch `main` uległ zmianie, a branch `mojBranch` nie! To dlatego, że nie byliśmy \"w\" nowym branch-u (gałęzi) i dlatego gwiazdka (*) była przy `master`" "O nie! branch `main` uległ zmianie, a branch `mojBranch` nie! To dlatego, że nie byliśmy \"w\" nowym branch-u (gałęzi) i dlatego gwiazdka (*) była przy `main`"
], ],
"command": "git commit", "command": "git commit",
"beforeCommand": "git branch mojBranch" "beforeCommand": "git branch mojBranch"

View file

@ -68,7 +68,7 @@ exports.level = {
"We will `merge` the branch `bugFix` into `main`." "We will `merge` the branch `bugFix` into `main`."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Woah! See that? First of all, `main` now points to a commit that has two parents. If you follow the arrows up the commit tree from `master`, you will hit every commit along the way to the root. This means that `master` contains all the work in the repository now.", "Woah! See that? First of all, `main` now points to a commit that has two parents. If you follow the arrows up the commit tree from `main`, you will hit every commit along the way to the root. This means that `main` contains all the work in the repository now.",
"", "",
"Also, see how the colors of the commits changed? To help with learning, I have included some color coordination. Each branch has a unique color. Each commit turns a color that is the blended combination of all the branches that contain that commit.", "Also, see how the colors of the commits changed? To help with learning, I have included some color coordination. Each branch has a unique color. Each commit turns a color that is the blended combination of all the branches that contain that commit.",
"", "",
@ -85,7 +85,7 @@ exports.level = {
"Let's merge `main` into `bugFix`:" "Let's merge `main` into `bugFix`:"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Since `bugFix` was an ancestor of `main`, git didn't have to do any work; it simply just moved `bugFix` to the same commit `master` was attached to.", "Since `bugFix` was an ancestor of `main`, git didn't have to do any work; it simply just moved `bugFix` to the same commit `main` was attached to.",
"", "",
"Now all the commits are the same color, which means each branch contains all the work in the repository! Woohoo!" "Now all the commits are the same color, which means each branch contains all the work in the repository! Woohoo!"
], ],
@ -137,7 +137,7 @@ exports.level = {
"Wir werden den Branch `bugFix` in `main` integrieren." "Wir werden den Branch `bugFix` in `main` integrieren."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Wow! Hast du das gesehen? Zunächst mal zeigt `main` jetzt auf einen Commit mit zwei Vorgängern. Wenn du den beiden Pfeilen immer weiter folgst, kommst du an jedem Commit im Repository vorbei. Das heißt `master` enthält jetzt alles, was es im Repository gibt.", "Wow! Hast du das gesehen? Zunächst mal zeigt `main` jetzt auf einen Commit mit zwei Vorgängern. Wenn du den beiden Pfeilen immer weiter folgst, kommst du an jedem Commit im Repository vorbei. Das heißt `main` enthält jetzt alles, was es im Repository gibt.",
"", "",
"Siehst du außerdem wie sich die Farben der Commits verändert haben? Um die Vorgänge zu verdeutlichen hab ich etwas Farbe ins Spiel gebracht. Jeder Branch hat seine eindeutige Farbe. Jeder Merge Commit bekommt als Farbe eine Mischung aus den Farben seiner Vorgänger.", "Siehst du außerdem wie sich die Farben der Commits verändert haben? Um die Vorgänge zu verdeutlichen hab ich etwas Farbe ins Spiel gebracht. Jeder Branch hat seine eindeutige Farbe. Jeder Merge Commit bekommt als Farbe eine Mischung aus den Farben seiner Vorgänger.",
"", "",
@ -154,7 +154,7 @@ exports.level = {
"Mergen wir `main` in `bugFix`:" "Mergen wir `main` in `bugFix`:"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Da `bugFix` ein Vorgänger von `main` war, musste git hier kaum etwas tun; es verschiebt `bugFix` einfach auf den Commit, auf den auch `master` zeigt.", "Da `bugFix` ein Vorgänger von `main` war, musste git hier kaum etwas tun; es verschiebt `bugFix` einfach auf den Commit, auf den auch `main` zeigt.",
"", "",
"Jetzt haben alle Commits dieselbe Farbe, das heißt jeder Branch enthält die Informationen des gesamten Repositorys! Juhu!" "Jetzt haben alle Commits dieselbe Farbe, das heißt jeder Branch enthält die Informationen des gesamten Repositorys! Juhu!"
], ],
@ -206,7 +206,7 @@ exports.level = {
"`bugFix`ブランチを`main`ブランチにマージしてみます。" "`bugFix`ブランチを`main`ブランチにマージしてみます。"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"わあ、見ましたか?まず初めに、`main`ブランチが2つのコミットを親に持つ新しいコミットを指してますね。`master`から親をたどっていくと、最も古いコミットにたどり着くまでに全てのコミットを含んでいる様が確認できます。これで、全ての変更を含む`master`が完成しました。", "わあ、見ましたか?まず初めに、`main`ブランチが2つのコミットを親に持つ新しいコミットを指してますね。`main`から親をたどっていくと、最も古いコミットにたどり着くまでに全てのコミットを含んでいる様が確認できます。これで、全ての変更を含む`main`が完成しました。",
"", "",
"色がどう変わったかにも注目して下さい。学習を助けるために、ブランチ毎に色をつけています。それぞれのブランチは自分の色を持っていて、どのブランチから派生して出てくるか次第でコミットごとの色が決まります。", "色がどう変わったかにも注目して下さい。学習を助けるために、ブランチ毎に色をつけています。それぞれのブランチは自分の色を持っていて、どのブランチから派生して出てくるか次第でコミットごとの色が決まります。",
"", "",
@ -223,7 +223,7 @@ exports.level = {
"`main`ブランチを`bugFix`ブランチにマージしてみます。" "`main`ブランチを`bugFix`ブランチにマージしてみます。"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"`bugFix`ブランチは`main`ブランチの派生元だったので、gitは実際大したことはしていません。`bugFix`ブランチを指していたポインタを`master`が指していたコミットへと移動させただけです。", "`bugFix`ブランチは`main`ブランチの派生元だったので、gitは実際大したことはしていません。`bugFix`ブランチを指していたポインタを`main`が指していたコミットへと移動させただけです。",
"", "",
"これで全てのコミットが同じ色になりました。つまり、リポジトリの中の全ての変更をそれぞれのブランチが持ったことになります。やったね!" "これで全てのコミットが同じ色になりました。つまり、リポジトリの中の全ての変更をそれぞれのブランチが持ったことになります。やったね!"
], ],
@ -275,7 +275,7 @@ exports.level = {
"Vamos a `merge`ar la rama `bugFix` a `main`." "Vamos a `merge`ar la rama `bugFix` a `main`."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"¡Wooow! ¿Viste eso? Primero que nada, `main` ahora apunta a un commit que tiene dos padres. Si seguís las flechas por el árbol de commits empezando desde `master` vas a cruzarte con cada commit del repositorio hasta llegar a la raíz. Esto significa que `master` ahora contiene todo el trabajo que hay en el repositorio.", "¡Wooow! ¿Viste eso? Primero que nada, `main` ahora apunta a un commit que tiene dos padres. Si seguís las flechas por el árbol de commits empezando desde `main` vas a cruzarte con cada commit del repositorio hasta llegar a la raíz. Esto significa que `main` ahora contiene todo el trabajo que hay en el repositorio.",
"", "",
"Además, ¿viste cómo cambiaron los colores de los commits? Para ayudar al aprendizaje, incluí algunas convenciones de colores. Cada rama tiene un color propio. Cada commmit se vuelve del color resultante de mezclar los colores de todas las ramas que lo contienen.", "Además, ¿viste cómo cambiaron los colores de los commits? Para ayudar al aprendizaje, incluí algunas convenciones de colores. Cada rama tiene un color propio. Cada commmit se vuelve del color resultante de mezclar los colores de todas las ramas que lo contienen.",
"", "",
@ -292,7 +292,7 @@ exports.level = {
"Mergeemos `main` a `bugFix`:" "Mergeemos `main` a `bugFix`:"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Como `bugFix` era un ancestro de `main`, git no tuvo que hacer ningún trabajo; simplemente movió `bugFix` al mismo commit al que estaba anexado `master`.", "Como `bugFix` era un ancestro de `main`, git no tuvo que hacer ningún trabajo; simplemente movió `bugFix` al mismo commit al que estaba anexado `main`.",
"", "",
"Ahora todos los commits son del mismo color, lo que significa que cada rama contiene todo el trabajo que hay en el repositorio. ¡Wiii!" "Ahora todos los commits son del mismo color, lo que significa que cada rama contiene todo el trabajo que hay en el repositorio. ¡Wiii!"
], ],
@ -344,7 +344,7 @@ exports.level = {
"Vamos a `merge`ar la rama `bugFix` a `main`." "Vamos a `merge`ar la rama `bugFix` a `main`."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"¡Wooow! ¿Viste eso? Primero que nada, `main` ahora apunta a un commit que tiene dos padres. Si sigues las flechas por el árbol de commits empezando desde `master` vas a cruzarte con cada commit del repositorio hasta llegar a la raíz. Esto significa que `master` ahora contiene todo el trabajo que hay en el repositorio.", "¡Wooow! ¿Viste eso? Primero que nada, `main` ahora apunta a un commit que tiene dos padres. Si sigues las flechas por el árbol de commits empezando desde `main` vas a cruzarte con cada commit del repositorio hasta llegar a la raíz. Esto significa que `main` ahora contiene todo el trabajo que hay en el repositorio.",
"", "",
"Además, ¿Viste cómo cambiaron los colores de los commits? Para ayudar al aprendizaje, incluí algunas convenciones de colores. Cada rama tiene un color propio. Cada commmit se vuelve del color resultante de mezclar los colores de todas las ramas que lo contienen.", "Además, ¿Viste cómo cambiaron los colores de los commits? Para ayudar al aprendizaje, incluí algunas convenciones de colores. Cada rama tiene un color propio. Cada commmit se vuelve del color resultante de mezclar los colores de todas las ramas que lo contienen.",
"", "",
@ -361,7 +361,7 @@ exports.level = {
"Mergeemos `main` a `bugFix`:" "Mergeemos `main` a `bugFix`:"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Como `bugFix` era un ancestro de `main`, git no tuvo que hacer ningún trabajo; simplemente movió `bugFix` al mismo commit al que estaba anexado `master`.", "Como `bugFix` era un ancestro de `main`, git no tuvo que hacer ningún trabajo; simplemente movió `bugFix` al mismo commit al que estaba anexado `main`.",
"", "",
"Ahora todos los commits son del mismo color, lo que significa que cada rama contiene todo el trabajo que hay en el repositorio. ¡Súper!" "Ahora todos los commits son del mismo color, lo que significa que cada rama contiene todo el trabajo que hay en el repositorio. ¡Súper!"
], ],
@ -413,7 +413,7 @@ exports.level = {
"Vamos a `merge`ar la rama `bugFix` a `main`." "Vamos a `merge`ar la rama `bugFix` a `main`."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"¡Caramba! ¿Viste eso? Antes de nada, `main` ahora apunta a un commit que tiene dos padres. Si sigues las flechas por el árbol de commits empezando desde `master` vas a cruzarte con cada commit del repositorio hasta llegar a la raíz. Esto significa que `master` ahora contiene todo el trabajo que hay en el repositorio.", "¡Caramba! ¿Viste eso? Antes de nada, `main` ahora apunta a un commit que tiene dos padres. Si sigues las flechas por el árbol de commits empezando desde `main` vas a cruzarte con cada commit del repositorio hasta llegar a la raíz. Esto significa que `main` ahora contiene todo el trabajo que hay en el repositorio.",
"", "",
"Además, ¿viste cómo cambiaron los colores de los commits? Para ayudar al aprendizaje, he incluido algunas convenciones de colores. Cada rama tiene un color propio. Cada commmit se vuelve del color resultante de mezclar los colores de todas las ramas que lo contienen.", "Además, ¿viste cómo cambiaron los colores de los commits? Para ayudar al aprendizaje, he incluido algunas convenciones de colores. Cada rama tiene un color propio. Cada commmit se vuelve del color resultante de mezclar los colores de todas las ramas que lo contienen.",
"", "",
@ -430,7 +430,7 @@ exports.level = {
"Hagamos merge de `main` a `bugFix`:" "Hagamos merge de `main` a `bugFix`:"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Como `bugFix` era un ancestro de `main`, git no tuvo que hacer ningún trabajo; simplemente movió `bugFix` al mismo commit al que estaba anexado `master`.", "Como `bugFix` era un ancestro de `main`, git no tuvo que hacer ningún trabajo; simplemente movió `bugFix` al mismo commit al que estaba anexado `main`.",
"", "",
"Ahora todos los commits son del mismo color, lo que significa que cada rama contiene todo el trabajo que hay en el repositorio. ¡Genial!" "Ahora todos los commits son del mismo color, lo que significa que cada rama contiene todo el trabajo que hay en el repositorio. ¡Genial!"
], ],
@ -482,7 +482,7 @@ exports.level = {
"Vamos juntar o ramo `bugFix` no `main`." "Vamos juntar o ramo `bugFix` no `main`."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Uau! Viu isso? Antes de tudo, o `main` agora aponta para um commit que possui dois pais. Se você seguir as setas subindo a árvore de commits a partir do `master`, você será capaz de encontrar, ao longo do caminho até a raiz, qualquer um dos commits. Isso significa que o `master` contém todo o trabalho realizado no repositório até o momento.", "Uau! Viu isso? Antes de tudo, o `main` agora aponta para um commit que possui dois pais. Se você seguir as setas subindo a árvore de commits a partir do `main`, você será capaz de encontrar, ao longo do caminho até a raiz, qualquer um dos commits. Isso significa que o `main` contém todo o trabalho realizado no repositório até o momento.",
"", "",
"Além disso, viu como as cores dos commits mudaram? Para ajudá-lo a aprender, eu incluí uma legenda. Cada ramo tem uma cor única. Cada commit tem a cor resultante da mistura das cores de todos os ramos que o contém.", "Além disso, viu como as cores dos commits mudaram? Para ajudá-lo a aprender, eu incluí uma legenda. Cada ramo tem uma cor única. Cada commit tem a cor resultante da mistura das cores de todos os ramos que o contém.",
"", "",
@ -499,7 +499,7 @@ exports.level = {
"Vamos juntar o `main` no `bugFix`:" "Vamos juntar o `main` no `bugFix`:"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Como o `bugFix` é um ancestral do `main`, o git não teve trabalho nenhum; ele só precisou mover o `bugFix` para o mesmo commit do `master`.", "Como o `bugFix` é um ancestral do `main`, o git não teve trabalho nenhum; ele só precisou mover o `bugFix` para o mesmo commit do `main`.",
"", "",
"Agora todos os commits possuem a mesma cor, o que significa que ambos os ramos contém todo o trabalho realizado no repositório! Eba!" "Agora todos os commits possuem a mesma cor, o que significa que ambos os ramos contém todo o trabalho realizado no repositório! Eba!"
], ],
@ -551,7 +551,7 @@ exports.level = {
"Imos xuntar a rama `bugFix` na `main`." "Imos xuntar a rama `bugFix` na `main`."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"¡Uah! ¿Viches? Antes de todo, `main` agora apunta a un commit que ten dous pais. Se ti sigues as frechas subindo a árbore de commits a partir de `master`, serás capaz de ver tódolos commits ata a raíz, calquera de eles. Isto significa que a rama `master` contén todo o traballo realizado no repositorio ata ese momento.", "¡Uah! ¿Viches? Antes de todo, `main` agora apunta a un commit que ten dous pais. Se ti sigues as frechas subindo a árbore de commits a partir de `main`, serás capaz de ver tódolos commits ata a raíz, calquera de eles. Isto significa que a rama `main` contén todo o traballo realizado no repositorio ata ese momento.",
"", "",
"Ademáis, ¿viches como cambiaron as cores dos commits? Para axudarte a aprender, hai unha lenda. Cada rama ten unha única cor. Cada commit ten a cor resultante de mesturar as cores de tódalas ramas que contén.", "Ademáis, ¿viches como cambiaron as cores dos commits? Para axudarte a aprender, hai unha lenda. Cada rama ten unha única cor. Cada commit ten a cor resultante de mesturar as cores de tódalas ramas que contén.",
"", "",
@ -568,7 +568,7 @@ exports.level = {
"Imos mesturar a rama `main` en `bugFix`:" "Imos mesturar a rama `main` en `bugFix`:"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Como o `bugFix` é un ancestro de `main`, o git non ten traballo que facer; el só ten que mover o punteiro de `bugFix` para o mesmo commit que `master`.", "Como o `bugFix` é un ancestro de `main`, o git non ten traballo que facer; el só ten que mover o punteiro de `bugFix` para o mesmo commit que `main`.",
"", "",
"Agora tódolos commits teñen a mesma cor, o que significa que ambas ramas teñen o mesmo traballo no repositorios! Iepa!" "Agora tódolos commits teñen a mesma cor, o que significa que ambas ramas teñen o mesmo traballo no repositorios! Iepa!"
], ],
@ -620,7 +620,7 @@ exports.level = {
"Nous allons `merge` («fusionner») la branche `bugFix` dans `main`." "Nous allons `merge` («fusionner») la branche `bugFix` dans `main`."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Youhou ! Vous avez vu ça ? Avant tout, `main` pointe donc maintenant sur un commit qui a deux parents. Si vous remontez l'enchaînement des flèches depuis `master`, vous allez passez par tous les commits jusqu'à la racine. Cela signifie que `master` contient maintenant tout le travail du dépôt.", "Youhou ! Vous avez vu ça ? Avant tout, `main` pointe donc maintenant sur un commit qui a deux parents. Si vous remontez l'enchaînement des flèches depuis `main`, vous allez passez par tous les commits jusqu'à la racine. Cela signifie que `main` contient maintenant tout le travail du dépôt.",
"", "",
"Par ailleurs, avez-vous remarqué les nouvelles couleurs des commits ? Pour faciliter l'apprentissage, j'ai inclus une certaine logique dans la coloration. Chaque branche a une unique couleur. Chaque commit est de la couleur de toutes les branches qui le contiennent.", "Par ailleurs, avez-vous remarqué les nouvelles couleurs des commits ? Pour faciliter l'apprentissage, j'ai inclus une certaine logique dans la coloration. Chaque branche a une unique couleur. Chaque commit est de la couleur de toutes les branches qui le contiennent.",
"", "",
@ -637,7 +637,7 @@ exports.level = {
"Faisons un merge de `main` dans `bugFix`:" "Faisons un merge de `main` dans `bugFix`:"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Puisque `bugFix` était un ancêtre de `main`, git n'avait aucun travail à effectuer; il a simplement déplacé `bugFix` au même commit auquel `master` est attaché.", "Puisque `bugFix` était un ancêtre de `main`, git n'avait aucun travail à effectuer; il a simplement déplacé `bugFix` au même commit auquel `main` est attaché.",
"", "",
"Maintenant tous les commits sont de la même couleur, ce qui indique que chaque branche contient tout le contenu du dépôt ! Woohoo!" "Maintenant tous les commits sont de la même couleur, ce qui indique que chaque branche contient tout le contenu du dépôt ! Woohoo!"
], ],
@ -690,7 +690,7 @@ exports.level = {
], ],
"command": "git merge bugFix", "command": "git merge bugFix",
"afterMarkdowns": [ "afterMarkdowns": [
"哇哦!看见了吗?首先,`main` 现在指向了一个拥有两个父节点的提交记录。假如从 `master` 开始沿着箭头向上看,在到达起点的路上会经过所有的提交记录。这意味着 `master` 包含了对代码库的所有修改。↓↓↓", "哇哦!看见了吗?首先,`main` 现在指向了一个拥有两个父节点的提交记录。假如从 `main` 开始沿着箭头向上看,在到达起点的路上会经过所有的提交记录。这意味着 `main` 包含了对代码库的所有修改。↓↓↓",
"", "",
"还有,看见各个提交记录的颜色变化了吗?为了帮助学习理解,我引入了颜色搭配。每个分支都有不同的颜色,而每个提交记录的颜色是所有包含该提交记录的分支的颜色混合之后的颜色。", "还有,看见各个提交记录的颜色变化了吗?为了帮助学习理解,我引入了颜色搭配。每个分支都有不同的颜色,而每个提交记录的颜色是所有包含该提交记录的分支的颜色混合之后的颜色。",
"", "",
@ -707,7 +707,7 @@ exports.level = {
], ],
"command": "git checkout bugFix; git merge master", "command": "git checkout bugFix; git merge master",
"afterMarkdowns": [ "afterMarkdowns": [
"因为 `main` 继承自 `bugFix`Git 什么都不用做,只是简单地把 `bugFix` 移动到 `master` 所指向的那个提交记录。", "因为 `main` 继承自 `bugFix`Git 什么都不用做,只是简单地把 `bugFix` 移动到 `main` 所指向的那个提交记录。",
"", "",
"现在所有提交记录的颜色都一样了,这表明每一个分支都包含了代码库的所有修改!大功告成!" "现在所有提交记录的颜色都一样了,这表明每一个分支都包含了代码库的所有修改!大功告成!"
], ],
@ -759,7 +759,7 @@ exports.level = {
], ],
"command": "git merge bugFix", "command": "git merge bugFix",
"afterMarkdowns": [ "afterMarkdowns": [
"哇!看見了沒有?首先,`main` 現在指向一個 commit這個 commit 有兩個 parent commit。假如從 `master` 開始沿著箭頭向上走,在到達起點的路上會經過所有的 commit。這說明了現在 `master` 紀錄了對文件的所有修改。", "哇!看見了沒有?首先,`main` 現在指向一個 commit這個 commit 有兩個 parent commit。假如從 `main` 開始沿著箭頭向上走,在到達起點的路上會經過所有的 commit。這說明了現在 `main` 紀錄了對文件的所有修改。",
"", "",
"還有,看見各個 commit 的顏色變化了嗎?為了幫助學習,我混合了顏色。每個 branch 都有特定的顏色。每個 commit 的顏色都變成了含有此 commit 的所有 branch 的混合色。", "還有,看見各個 commit 的顏色變化了嗎?為了幫助學習,我混合了顏色。每個 branch 都有特定的顏色。每個 commit 的顏色都變成了含有此 commit 的所有 branch 的混合色。",
"", "",
@ -776,7 +776,7 @@ exports.level = {
], ],
"command": "git checkout bugFix; git merge master", "command": "git checkout bugFix; git merge master",
"afterMarkdowns": [ "afterMarkdowns": [
"因為 `bugFix` branch只是 `main` branch 的 parentgit 什麼都不用做,只是簡單地把 `bugfix` branch 移動到 `master` 指向的 commit。", "因為 `bugFix` branch只是 `main` branch 的 parentgit 什麼都不用做,只是簡單地把 `bugfix` branch 移動到 `main` 指向的 commit。",
"", "",
"現在所有的 commit 的顏色都是一樣的啦,這表示每一個 branch 都包含了所有文件的修改!太厲害了啦!" "現在所有的 commit 的顏色都是一樣的啦,這表示每一個 branch 都包含了所有文件的修改!太厲害了啦!"
], ],
@ -844,7 +844,7 @@ exports.level = {
"이제 `main` 브랜치에 `bugFix`를 합쳐(merge) 봅시다:" "이제 `main` 브랜치에 `bugFix`를 합쳐(merge) 봅시다:"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"`bugFix`가 `main`의 부모쪽에 있었기 때문에, git이 별다른 일을 할 필요가 없었습니다; 간단히 `bugFix`를 `master`가 붙어 있는 커밋으로 이동시켰을 뿐입니다.", "`bugFix`가 `main`의 부모쪽에 있었기 때문에, git이 별다른 일을 할 필요가 없었습니다; 간단히 `bugFix`를 `main`가 붙어 있는 커밋으로 이동시켰을 뿐입니다.",
"", "",
"짜잔! 이제 모든 커밋의 색이 같아졌고, 이는 두 브랜치가 모두 저장소의 모든 작업 내역을 포함하고 있다는 뜻입니다." "짜잔! 이제 모든 커밋의 색이 같아졌고, 이는 두 브랜치가 모두 저장소의 모든 작업 내역을 포함하고 있다는 뜻입니다."
], ],
@ -896,7 +896,7 @@ exports.level = {
"Мы сделаем `merge` ветки `bugFix` в ветку `main`." "Мы сделаем `merge` ветки `bugFix` в ветку `main`."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Что мы видим? Во-первых, ветка `main` теперь указывает на коммит, у которого два родителя. Если проследовать по стрелкам от этого коммита, вы пройдёте через каждый коммит в дереве прямиком к началу. Это означает, что теперь в ветке `master` содержатся все изменения репозитория.", "Что мы видим? Во-первых, ветка `main` теперь указывает на коммит, у которого два родителя. Если проследовать по стрелкам от этого коммита, вы пройдёте через каждый коммит в дереве прямиком к началу. Это означает, что теперь в ветке `main` содержатся все изменения репозитория.",
"", "",
"Во-вторых, обрати внимание, как изменились цвета коммитов. Мы ввели цветовую дифференциацию, чтобы помочь пониманию. У каждой ветки — свой цвет. Каждый коммит становится того цвета, какого его ветка. Если в нём изменения сразу двух веток - он становится цветом, смешанным из цветов родительских веток.", "Во-вторых, обрати внимание, как изменились цвета коммитов. Мы ввели цветовую дифференциацию, чтобы помочь пониманию. У каждой ветки — свой цвет. Каждый коммит становится того цвета, какого его ветка. Если в нём изменения сразу двух веток - он становится цветом, смешанным из цветов родительских веток.",
"", "",
@ -913,7 +913,7 @@ exports.level = {
"Смерджим ветку `main` в ветку `bugFix`." "Смерджим ветку `main` в ветку `bugFix`."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Так как ветка `bugFix` была предшественницей `main`, Git не делал ничего, только сдвинул `bugFix` на тот же коммит, где находится `master`", "Так как ветка `bugFix` была предшественницей `main`, Git не делал ничего, только сдвинул `bugFix` на тот же коммит, где находится `main`",
"", "",
"Теперь все коммиты одного цвета, что означает, что каждая ветка содержит все изменения репозитория! Поздравляем!" "Теперь все коммиты одного цвета, что означает, что каждая ветка содержит все изменения репозитория! Поздравляем!"
], ],
@ -965,7 +965,7 @@ exports.level = {
"Ми `змержимо` гілку `bugFix` в `main`." "Ми `змержимо` гілку `bugFix` в `main`."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Нічого собі! Ви це бачили? По-перше, `main` тепер вказує на коміт з двома батьками. Якщо ти піднімешся вверх з цього коміту по дереву, починаючи з `master`, на шляху ти зустрінеш кожен коміт аж до кореневого. Це означає що гілка `master` тепер містить всю інфу в цьому репозиторії.", "Нічого собі! Ви це бачили? По-перше, `main` тепер вказує на коміт з двома батьками. Якщо ти піднімешся вверх з цього коміту по дереву, починаючи з `main`, на шляху ти зустрінеш кожен коміт аж до кореневого. Це означає що гілка `main` тепер містить всю інфу в цьому репозиторії.",
"", "",
"А ти помітив як змінилися кольори комітів? Для кращого розуміння процесу я додав певну кольорову диференціацію. Кожен бранч виділено окремим кольором. Колір кожного коміту це суміш кольорів всіх гілок що місять цей коміт.", "А ти помітив як змінилися кольори комітів? Для кращого розуміння процесу я додав певну кольорову диференціацію. Кожен бранч виділено окремим кольором. Колір кожного коміту це суміш кольорів всіх гілок що місять цей коміт.",
"", "",
@ -982,7 +982,7 @@ exports.level = {
"Давай змержимо `main` в `bugFix`:" "Давай змержимо `main` в `bugFix`:"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Так як `bugFix` є нащадком `main`, git'у не потрібно нічого робити; він просто пересунув `bugFix` на тей самий коміт, на якому знаходиться `master`.", "Так як `bugFix` є нащадком `main`, git'у не потрібно нічого робити; він просто пересунув `bugFix` на тей самий коміт, на якому знаходиться `main`.",
"", "",
"Тепер всі коміти одного кольору, що означає що кожен бранч включає в собі всю корисну інфу яка є в цьому репозиторії! Ура!" "Тепер всі коміти одного кольору, що означає що кожен бранч включає в собі всю корисну інфу яка є в цьому репозиторії! Ура!"
], ],
@ -1034,7 +1034,7 @@ exports.level = {
"Ta sẽ `merge` nhánh `bugFix` vào `main`." "Ta sẽ `merge` nhánh `bugFix` vào `main`."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Wao! Thấy chứ? Trước tiên, `main` giờ đã trỏ đến commit có 2 cha. Nếu bạn lần theo mũi tên lên trên từ `master`, bạn sẽ gặp tất cả các commit lên đến commit gốc. Có nghĩa là `master` giờ đã chứa tất cả thành quả trong kho.", "Wao! Thấy chứ? Trước tiên, `main` giờ đã trỏ đến commit có 2 cha. Nếu bạn lần theo mũi tên lên trên từ `main`, bạn sẽ gặp tất cả các commit lên đến commit gốc. Có nghĩa là `main` giờ đã chứa tất cả thành quả trong kho.",
"", "",
"Đồng thời, bạn thấy màu commit thay đổi chứ? Để bạn dễ học hơn, tôi đã phối hợp một số bảng màu. Mỗi nhánh có một màu duy nhất. Mỗi commit mang màu pha trộn của tất cả nhánh chứa nó.", "Đồng thời, bạn thấy màu commit thay đổi chứ? Để bạn dễ học hơn, tôi đã phối hợp một số bảng màu. Mỗi nhánh có một màu duy nhất. Mỗi commit mang màu pha trộn của tất cả nhánh chứa nó.",
"", "",
@ -1051,7 +1051,7 @@ exports.level = {
"Hãy gộp nhánh `main` vào `bugFix` nào:" "Hãy gộp nhánh `main` vào `bugFix` nào:"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Vì `bugFix` là bậc cha ông của `main`, git chẳng phải làm gì cả; nó đơn giản chỉ chuyển `bugFix` vào commit mà `master` đang trỏ tới.", "Vì `bugFix` là bậc cha ông của `main`, git chẳng phải làm gì cả; nó đơn giản chỉ chuyển `bugFix` vào commit mà `main` đang trỏ tới.",
"", "",
"Giờ thì tất cả commit đã có cùng màu, nghĩa là mỗi nhánh đã chứa tất cả thành quả trong kho! Ồ hố!" "Giờ thì tất cả commit đã có cùng màu, nghĩa là mỗi nhánh đã chứa tất cả thành quả trong kho! Ồ hố!"
], ],
@ -1103,7 +1103,7 @@ exports.level = {
"Sedaj bomo `mergeali` branch `bugFix` v `main`." "Sedaj bomo `mergeali` branch `bugFix` v `main`."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Woah! Si videl to? `main` sedaj kaže na commit, ki ima dva starša. Če slediš puščicam po drevesu commitov iz `master`, boš našel vsak commit po poti do roota. To pomeni, da `master` sedaj vsebuje vso delo iz repozitorija.", "Woah! Si videl to? `main` sedaj kaže na commit, ki ima dva starša. Če slediš puščicam po drevesu commitov iz `main`, boš našel vsak commit po poti do roota. To pomeni, da `main` sedaj vsebuje vso delo iz repozitorija.",
"", "",
"Opaziš tudi, kako so se barve commitov spremenile? V pomoč pri učenju, sem vključil še nekaj barvne pomoči. Vsak branch ima svojo barvo. Vsak commit spremeni barvo v kombinirano barvo vseh branchev, ki imajo ta commit.", "Opaziš tudi, kako so se barve commitov spremenile? V pomoč pri učenju, sem vključil še nekaj barvne pomoči. Vsak branch ima svojo barvo. Vsak commit spremeni barvo v kombinirano barvo vseh branchev, ki imajo ta commit.",
"", "",
@ -1120,7 +1120,7 @@ exports.level = {
"Zmergajmo sedaj `main` v `bugFix`:" "Zmergajmo sedaj `main` v `bugFix`:"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Ker je `bugFix` bil prednik `main`, git ni rabil storiti ničesar; preprosto je premaknil `bugFix` v isti commit, kamer kaže `master`.", "Ker je `bugFix` bil prednik `main`, git ni rabil storiti ničesar; preprosto je premaknil `bugFix` v isti commit, kamer kaže `main`.",
"", "",
"Sedaj so vsi commiti iste barve, kar pomeni, da vsak branch vsebuje vse delo v repozitoriju!! Woohoo!" "Sedaj so vsi commiti iste barve, kar pomeni, da vsak branch vsebuje vse delo v repozitoriju!! Woohoo!"
], ],
@ -1172,7 +1172,7 @@ exports.level = {
"Użyjmy `merge` aby połączyć branch `bugFix` z `main`." "Użyjmy `merge` aby połączyć branch `bugFix` z `main`."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Wow! Widzialiście to? Przede wszystkim \"master\" wskazuje teraz na commit, który ma dwoje rodziców. Jeśli podążasz za strzałkami w górę drzewa zatwierdzenia od `main`, trafisz na każdy commit po drodze do korzenia. Oznacza to, że `master` zawiera teraz całą pracę w repozytorium.", "Wow! Widzialiście to? Przede wszystkim \"master\" wskazuje teraz na commit, który ma dwoje rodziców. Jeśli podążasz za strzałkami w górę drzewa zatwierdzenia od `main`, trafisz na każdy commit po drodze do korzenia. Oznacza to, że `main` zawiera teraz całą pracę w repozytorium.",
"", "",
"Czy widziałeś również, jak zmieniły się kolory zatwierdzeń? Aby Ci pomóc w nauce, dołączyłem kilka konwencji kolorów. Każdy branch ma swój własny kolor. Każdy commit staje się kolorem wynikającym z mieszania kolorów wszystkich branch-y, które commit-ujesz", "Czy widziałeś również, jak zmieniły się kolory zatwierdzeń? Aby Ci pomóc w nauce, dołączyłem kilka konwencji kolorów. Każdy branch ma swój własny kolor. Każdy commit staje się kolorem wynikającym z mieszania kolorów wszystkich branch-y, które commit-ujesz",
"", "",
@ -1189,7 +1189,7 @@ exports.level = {
"Połączmy brach `main` z branch `bugFix`:" "Połączmy brach `main` z branch `bugFix`:"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Ponieważ `bugFix` był przodkiem branch-a `main`, GIT nie musiał wykonywać żadnej pracy; po prostu przeniosł branch `bugFix` do tego samego commit-a, do którego był dołączony branch `master`.", "Ponieważ `bugFix` był przodkiem branch-a `main`, GIT nie musiał wykonywać żadnej pracy; po prostu przeniosł branch `bugFix` do tego samego commit-a, do którego był dołączony branch `main`.",
"", "",
"Teraz wszystkie commit-y mają ten sam kolor, co oznacza, że każdy branch zawiera całą pracę znajdującą się w repozytorium! Super!" "Teraz wszystkie commit-y mają ten sam kolor, co oznacza, że każdy branch zawiera całą pracę znajdującą się w repozytorium! Super!"
], ],

View file

@ -87,7 +87,7 @@ exports.level = {
"Now we are checked out on the `main` branch. Let's go ahead and rebase onto `bugFix`..." "Now we are checked out on the `main` branch. Let's go ahead and rebase onto `bugFix`..."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"There! Since `main` was an ancestor of `bugFix`, git simply moved the `master` branch reference forward in history." "There! Since `main` was an ancestor of `bugFix`, git simply moved the `main` branch reference forward in history."
], ],
"command": "git rebase bugFix", "command": "git rebase bugFix",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master"
@ -132,7 +132,7 @@ exports.level = {
"beforeMarkdowns": [ "beforeMarkdowns": [
"Hier haben wir wieder zwei Branches; wie du siehst ist `bugFix` aktuell ausgewählt (sieht man am `*`).", "Hier haben wir wieder zwei Branches; wie du siehst ist `bugFix` aktuell ausgewählt (sieht man am `*`).",
"", "",
"Wir würden jetzt gerne unsere Arbeit aus `bugFix` direkt auf den `main` packen. Das Ergebnis wäre, dass alle aktuellen Änderungen in `master` auch im Branch `bugFix` sind.", "Wir würden jetzt gerne unsere Arbeit aus `bugFix` direkt auf den `main` packen. Das Ergebnis wäre, dass alle aktuellen Änderungen in `main` auch im Branch `bugFix` sind.",
"", "",
"Das machen wir mit dem Befehl `git rebase`:" "Das machen wir mit dem Befehl `git rebase`:"
], ],
@ -154,7 +154,7 @@ exports.level = {
"Jetzt sind wir im `main`. Lass uns den mal auf `bugFix` rebasen ..." "Jetzt sind wir im `main`. Lass uns den mal auf `bugFix` rebasen ..."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"So! Da `main` ein Vorgänger von `bugFix` war konnte Git hier einfach den Bezeichner `master` auf denselben Commit schieben, auf den auch `bugFix` zeigt." "So! Da `main` ein Vorgänger von `bugFix` war konnte Git hier einfach den Bezeichner `main` auf denselben Commit schieben, auf den auch `bugFix` zeigt."
], ],
"command": "git rebase bugFix", "command": "git rebase bugFix",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master"
@ -221,7 +221,7 @@ exports.level = {
"masterブランチにチェックアウトしてあります。この状態からmasterブランチを`bugFix`へとリベースしてみましょう。" "masterブランチにチェックアウトしてあります。この状態からmasterブランチを`bugFix`へとリベースしてみましょう。"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"できた!`main`は`bugFix`の直前のコミットだったので、gitは単純に`master`ブランチのポインタを前に進めただけでした。" "できた!`main`は`bugFix`の直前のコミットだったので、gitは単純に`main`ブランチのポインタを前に進めただけでした。"
], ],
"command": "git rebase bugFix", "command": "git rebase bugFix",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master"
@ -288,7 +288,7 @@ exports.level = {
"Ahora estamos parados sobre la rama `main`. Avancemos y rebaseémosla sobre `bugFix`..." "Ahora estamos parados sobre la rama `main`. Avancemos y rebaseémosla sobre `bugFix`..."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"¡Ahí está! Como `main` era un ancestro de `bugFix`, git simplemente movió la referencia de `master` hacia adelante en la historia." "¡Ahí está! Como `main` era un ancestro de `bugFix`, git simplemente movió la referencia de `main` hacia adelante en la historia."
], ],
"command": "git rebase bugFix", "command": "git rebase bugFix",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master"
@ -355,7 +355,7 @@ exports.level = {
"Ahora estamos parados sobre la rama `main`. Avancemos y rebaseémosla sobre `bugFix`..." "Ahora estamos parados sobre la rama `main`. Avancemos y rebaseémosla sobre `bugFix`..."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"¡Ahí está! Como `main` era un ancestro de `bugFix`, git simplemente movió la referencia de `master` hacia adelante en la historia." "¡Ahí está! Como `main` era un ancestro de `bugFix`, git simplemente movió la referencia de `main` hacia adelante en la historia."
], ],
"command": "git rebase bugFix", "command": "git rebase bugFix",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master"
@ -422,7 +422,7 @@ exports.level = {
"Ahora estamos parados sobre la rama `main`. Avancemos y hagamos rebase sobre `bugFix`..." "Ahora estamos parados sobre la rama `main`. Avancemos y hagamos rebase sobre `bugFix`..."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"¡Ahí está! Como `main` era un ancestro de `bugFix`, git simplemente movió la referencia de `master` hacia adelante en la historia." "¡Ahí está! Como `main` era un ancestro de `bugFix`, git simplemente movió la referencia de `main` hacia adelante en la historia."
], ],
"command": "git rebase bugFix", "command": "git rebase bugFix",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master"
@ -489,7 +489,7 @@ exports.level = {
"Agora o ramo `main` está ativo. Vamos em frente, fazer rebase no `bugFix`..." "Agora o ramo `main` está ativo. Vamos em frente, fazer rebase no `bugFix`..."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Aí está! Como o `main` era um ancestral do `bugFix`, o git simplesmente moveu a referência do ramo `master` para frente na história." "Aí está! Como o `main` era um ancestral do `bugFix`, o git simplesmente moveu a referência do ramo `main` para frente na história."
], ],
"command": "git rebase bugFix", "command": "git rebase bugFix",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master"
@ -556,7 +556,7 @@ exports.level = {
"Agora a rama `main` está ativa. Continuamos facendo o rebase na `bugFix`..." "Agora a rama `main` está ativa. Continuamos facendo o rebase na `bugFix`..."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"¡Xa está! Como `main` era um ancestro de `bugFix`, git simplemente moveu a referencia da rama `master` máis adiante na historia." "¡Xa está! Como `main` era um ancestro de `bugFix`, git simplemente moveu a referencia da rama `main` máis adiante na historia."
], ],
"command": "git rebase bugFix", "command": "git rebase bugFix",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master"
@ -621,7 +621,7 @@ exports.level = {
"options": { "options": {
"beforeMarkdowns": [ "beforeMarkdowns": [
"Nous sommes désormais positionnés sur la branche `main`. Continuons en faisant le rebase sur `bugFix`…", "Nous sommes désormais positionnés sur la branche `main`. Continuons en faisant le rebase sur `bugFix`…",
"Et voilà ! Puisque `main` était un ascendant de `bugFix`, git a simplement déplacé la référence de la branche `master` en avant dans le temps." "Et voilà ! Puisque `main` était un ascendant de `bugFix`, git a simplement déplacé la référence de la branche `main` en avant dans le temps."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Voilà vous avez vu comment cela fonctionne", "Voilà vous avez vu comment cela fonctionne",
@ -694,7 +694,7 @@ exports.level = {
], ],
"command": "git rebase bugFix", "command": "git rebase bugFix",
"afterMarkdowns": [ "afterMarkdowns": [
"好了!由于 `bugFix` 继承自 `main`,所以 Git 只是简单的把 `master` 分支的引用向前移动了一下而已。" "好了!由于 `bugFix` 继承自 `main`,所以 Git 只是简单的把 `main` 分支的引用向前移动了一下而已。"
], ],
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master"
} }
@ -761,7 +761,7 @@ exports.level = {
], ],
"command": "git rebase bugFix", "command": "git rebase bugFix",
"afterMarkdowns": [ "afterMarkdowns": [
"完成!因為 `main` branch 是 `bugFix` 的 parent所以 git 只是把 `master` branch 往前移動到 `bugFix` 上。" "完成!因為 `main` branch 是 `bugFix` 的 parent所以 git 只是把 `main` branch 往前移動到 `bugFix` 上。"
], ],
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master"
} }
@ -894,7 +894,7 @@ exports.level = {
"Вот мы выбрали ветку `main`. Вперёд - сделаем rebase на `bugFix`." "Вот мы выбрали ветку `main`. Вперёд - сделаем rebase на `bugFix`."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Вуаля! Так как `main` был предком `bugFix`, git просто сдвинул ссылку на `master` вперёд." "Вуаля! Так как `main` был предком `bugFix`, git просто сдвинул ссылку на `main` вперёд."
], ],
"command": "git rebase bugFix", "command": "git rebase bugFix",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master"
@ -961,7 +961,7 @@ exports.level = {
"Тепер ми перейшли (checkout) до гілки `main`. Далі робимо rebase на `bugFix`..." "Тепер ми перейшли (checkout) до гілки `main`. Далі робимо rebase на `bugFix`..."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Вуаля! Так як `main` це предок `bugFix`, git просто просунув посилання гілки `master` вперед в історії." "Вуаля! Так як `main` це предок `bugFix`, git просто просунув посилання гілки `main` вперед в історії."
], ],
"command": "git rebase bugFix", "command": "git rebase bugFix",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master"
@ -1028,7 +1028,7 @@ exports.level = {
"Giờ thì ta đã chuyển sang nhánh `main`. Tiếp tục dán nó vào `bugFix` nào..." "Giờ thì ta đã chuyển sang nhánh `main`. Tiếp tục dán nó vào `bugFix` nào..."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Đó! Bởi vì `main` là cha ông của `bugFix`, git đơn giản chuyển tham chiếu của nhánh `master` tiến lên." "Đó! Bởi vì `main` là cha ông của `bugFix`, git đơn giản chuyển tham chiếu của nhánh `main` tiến lên."
], ],
"command": "git rebase bugFix", "command": "git rebase bugFix",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master"
@ -1094,7 +1094,7 @@ exports.level = {
"Sedaj smo checkoutani na `main` branchu. Pojdimo in rebaseajmo na `bugFix`..." "Sedaj smo checkoutani na `main` branchu. Pojdimo in rebaseajmo na `bugFix`..."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Tako! Ker je bil `main` prednik `bugFix`, je git enostavno premaknil `master` branch referenco naprej v zgodovini." "Tako! Ker je bil `main` prednik `bugFix`, je git enostavno premaknil `main` branch referenco naprej v zgodovini."
], ],
"command": "git rebase bugFix", "command": "git rebase bugFix",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master"
@ -1161,7 +1161,7 @@ exports.level = {
"Jesteśmy teraz na branch-u `main`. Przejdźmy dalej i zróbmy połączenie rebase z branch-em `bugFix`..." "Jesteśmy teraz na branch-u `main`. Przejdźmy dalej i zróbmy połączenie rebase z branch-em `bugFix`..."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Oto jest! Ponieważ `main` był przodkiem `bugFix`, GIT po prostu przesunął odniesienie do branch-a `master` do przodu w historii." "Oto jest! Ponieważ `main` był przodkiem `bugFix`, GIT po prostu przesunął odniesienie do branch-a `main` do przodu w historii."
], ],
"command": "git rebase bugFix", "command": "git rebase bugFix",
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master"

View file

@ -60,7 +60,7 @@ exports.level = {
"", "",
"All of these debugging / print statements are in their own commits. Finally I track down the bug, fix it, and rejoice!", "All of these debugging / print statements are in their own commits. Finally I track down the bug, fix it, and rejoice!",
"", "",
"Only problem is that I now need to get my `bugFix` back into the `main` branch. If I simply fast-forwarded `master`, then `master` would get all my debug statements which is undesirable. There has to be another way..." "Only problem is that I now need to get my `bugFix` back into the `main` branch. If I simply fast-forwarded `main`, then `main` would get all my debug statements which is undesirable. There has to be another way..."
] ]
} }
}, },
@ -136,7 +136,7 @@ exports.level = {
"", "",
"Todas estas cosas de imprimir y debuggear estan en su propia rama. Finalmente encuentro el problema, lo soluciono, ¡y disfruto!", "Todas estas cosas de imprimir y debuggear estan en su propia rama. Finalmente encuentro el problema, lo soluciono, ¡y disfruto!",
"", "",
"El único problema es que ahora necesito llevar mi `bugFix` a la rama `main`. Si simplemente fast-forwardeo `master`, entonces `master` va a tener todos mis agregados de debugging, que es indeseado. Tiene que haber otro modo..." "El único problema es que ahora necesito llevar mi `bugFix` a la rama `main`. Si simplemente fast-forwardeo `main`, entonces `main` va a tener todos mis agregados de debugging, que es indeseado. Tiene que haber otro modo..."
] ]
} }
}, },
@ -175,7 +175,7 @@ exports.level = {
"", "",
"Todas estas cosas de imprimir y debuggear estan en su propia rama. Finalmente encuentro el problema, lo soluciono, ¡y disfruto!", "Todas estas cosas de imprimir y debuggear estan en su propia rama. Finalmente encuentro el problema, lo soluciono, ¡y disfruto!",
"", "",
"El único problema es que ahora necesito llevar mi `bugFix` a la rama `main`. Si simplemente fast-forwardeo `master`, entonces `master` va a tener todos mis agregados de debugging, lo cual no es deseable. Tiene que haber otro modo..." "El único problema es que ahora necesito llevar mi `bugFix` a la rama `main`. Si simplemente fast-forwardeo `main`, entonces `main` va a tener todos mis agregados de debugging, lo cual no es deseable. Tiene que haber otro modo..."
] ]
} }
}, },
@ -214,7 +214,7 @@ exports.level = {
"", "",
"Todos esses comandos de debug e mensagens estão em seus próprios ramos. Finalmente eu encontro o bug, corrijo, e me regozijo!", "Todos esses comandos de debug e mensagens estão em seus próprios ramos. Finalmente eu encontro o bug, corrijo, e me regozijo!",
"", "",
"O único problema é que agora eu preciso devolver o meu `bugFix` ao ramo `main`. Se eu simplesmente der um fast-forward no `master`, então o `master` terminará contendo todos os comandos de debug, o que é indesejável. Deve existir alguma outra forma..." "O único problema é que agora eu preciso devolver o meu `bugFix` ao ramo `main`. Se eu simplesmente der um fast-forward no `main`, então o `main` terminará contendo todos os comandos de debug, o que é indesejável. Deve existir alguma outra forma..."
] ]
} }
}, },
@ -253,7 +253,7 @@ exports.level = {
"", "",
"¡Todos esos comandos de debug e mensaxes están nas súas ramas propias. Finalmente eu atopo o erro, arránxoo e reorganizo!", "¡Todos esos comandos de debug e mensaxes están nas súas ramas propias. Finalmente eu atopo o erro, arránxoo e reorganizo!",
"", "",
"O único problema é que agora eu preciso devolver o meu `bugFix` á rama `main`. Se eu fixera simplemente un fast-forward en `master`, entón o `master` rematará contendo tódolos comandos de debug, o que é indesexable. Debe existir algunha outra forma..." "O único problema é que agora eu preciso devolver o meu `bugFix` á rama `main`. Se eu fixera simplemente un fast-forward en `main`, entón o `main` rematará contendo tódolos comandos de debug, o que é indesexable. Debe existir algunha outra forma..."
] ]
} }
}, },
@ -292,7 +292,7 @@ exports.level = {
"", "",
"Die committe ich auch immer wieder, je weiter die Suche mich trägt; natürlich in einem lokalen Branch. Schließlich finde ich den Bug, fixe ihn und freue mich!", "Die committe ich auch immer wieder, je weiter die Suche mich trägt; natürlich in einem lokalen Branch. Schließlich finde ich den Bug, fixe ihn und freue mich!",
"", "",
"Einziges Problem ist, dass ich diesen `bugFix` jetzt zurück in den `main` kriegen muss. Wenn ich einfach den `master` vorspule oder meinen Branch hinein merge, bekäme der `master` auch die ganzen Debug-Befehle, was nicht gewünscht ist. Das muss anders gehen ..." "Einziges Problem ist, dass ich diesen `bugFix` jetzt zurück in den `main` kriegen muss. Wenn ich einfach den `main` vorspule oder meinen Branch hinein merge, bekäme der `main` auch die ganzen Debug-Befehle, was nicht gewünscht ist. Das muss anders gehen ..."
] ]
} }
}, },
@ -331,7 +331,7 @@ exports.level = {
"", "",
"これらのデバッグ用のコードはバグ修正用のブランチにコミットされています。そしてついにバグの原因を突き止めて、修正した!やった!", "これらのデバッグ用のコードはバグ修正用のブランチにコミットされています。そしてついにバグの原因を突き止めて、修正した!やった!",
"", "",
"あとは`bugFix`ブランチを`main`ブランチに統合できればOK。そこで単純に`master`をfast-forwardすればよいかというと、それでは`master`ブランチの中にデバッグ用のコードも混入してしまいます。" "あとは`bugFix`ブランチを`main`ブランチに統合できればOK。そこで単純に`main`をfast-forwardすればよいかというと、それでは`main`ブランチの中にデバッグ用のコードも混入してしまいます。"
] ]
} }
}, },
@ -372,7 +372,7 @@ exports.level = {
"", "",
"这些调试和打印语句都在它们各自的提交记录里。最后我终于找到了造成这个 Bug 的根本原因,解决掉以后觉得沾沾自喜!", "这些调试和打印语句都在它们各自的提交记录里。最后我终于找到了造成这个 Bug 的根本原因,解决掉以后觉得沾沾自喜!",
"", "",
"最后就差把 `bugFix` 分支里的工作合并回 `main` 分支了。你可以选择通过 fast-forward 快速合并到 `master` 分支上,但这样的话 `master` 分支就会包含我这些调试语句了。你肯定不想这样,应该还有更好的方式……" "最后就差把 `bugFix` 分支里的工作合并回 `main` 分支了。你可以选择通过 fast-forward 快速合并到 `main` 分支上,但这样的话 `main` 分支就会包含我这些调试语句了。你肯定不想这样,应该还有更好的方式……"
] ]
} }
}, },
@ -411,7 +411,7 @@ exports.level = {
"", "",
"所有的這些 debug 的指令都只在 `bugFix` 這個 branch 裡面。最後我終於找到這個 bug並且 fix 掉它,接著撒花慶祝一下!", "所有的這些 debug 的指令都只在 `bugFix` 這個 branch 裡面。最後我終於找到這個 bug並且 fix 掉它,接著撒花慶祝一下!",
"", "",
"現在唯一的問題就是要把我在 `bugFix` branch 裡面所做的修改 merge 回 `main` branch。我可以簡單地透過 fast-forward 來 merge ,但這樣的話 `master` branch 就會包含這些含有 debug 指令的 commit 了。我相信一定有其它方法..." "現在唯一的問題就是要把我在 `bugFix` branch 裡面所做的修改 merge 回 `main` branch。我可以簡單地透過 fast-forward 來 merge ,但這樣的話 `main` branch 就會包含這些含有 debug 指令的 commit 了。我相信一定有其它方法..."
] ]
} }
}, },
@ -450,7 +450,7 @@ exports.level = {
"", "",
"디버깅용 코드나 프린트 명령은 그 브랜치에 들어있습니다. 마침내 버그를 찾아서 고쳤고, 원래 작업하는 브랜치에 합치면 됩니다!", "디버깅용 코드나 프린트 명령은 그 브랜치에 들어있습니다. 마침내 버그를 찾아서 고쳤고, 원래 작업하는 브랜치에 합치면 됩니다!",
"", "",
"이제 `bugFix`브랜치의 내용을 `main`에 합쳐 넣으려 하지만, 한 가지 문제가 있습니다. 그냥 간단히 `master`브랜치를 최신 커밋으로 이동시킨다면(fast-forward) 그 불필요한 디버그용 코드들도 함께 들어가 버린다는 문제죠." "이제 `bugFix`브랜치의 내용을 `main`에 합쳐 넣으려 하지만, 한 가지 문제가 있습니다. 그냥 간단히 `main`브랜치를 최신 커밋으로 이동시킨다면(fast-forward) 그 불필요한 디버그용 코드들도 함께 들어가 버린다는 문제죠."
] ]
} }
}, },
@ -489,7 +489,7 @@ exports.level = {
"", "",
"Каждая отладочная команда (команды) вывода находится в своём коммите. В итоге мы нашли ошибку, исправили её и порадовались!", "Каждая отладочная команда (команды) вывода находится в своём коммите. В итоге мы нашли ошибку, исправили её и порадовались!",
"", "",
"Но проблема в том, что мы хотим добавить в `main` только исправление ошибки из ветки `bugFix`. Если мы воспользуемся простым fast-forward, то в `master` попадут также отладочные команды. Должен быть другой способ..." "Но проблема в том, что мы хотим добавить в `main` только исправление ошибки из ветки `bugFix`. Если мы воспользуемся простым fast-forward, то в `main` попадут также отладочные команды. Должен быть другой способ..."
] ]
} }
}, },
@ -528,7 +528,7 @@ exports.level = {
"", "",
"Всі ці команди для відлагодження та виводу данних знаходяться в своїх власних комітах. Врешті-решт я знаходжу баг, фікшу його та щиро радію!", "Всі ці команди для відлагодження та виводу данних знаходяться в своїх власних комітах. Врешті-решт я знаходжу баг, фікшу його та щиро радію!",
"", "",
"От тільки лишається проблема, що потрібно мій фікс перенести з `bugFix` назад в гілку `main`. Якщо я просто зроблю фастфорвард (fast-forwarded) в `master`, тоді в `master` потраплять всі мої println'и, що є зайвим. Має бути інший шлях..." "От тільки лишається проблема, що потрібно мій фікс перенести з `bugFix` назад в гілку `main`. Якщо я просто зроблю фастфорвард (fast-forwarded) в `main`, тоді в `main` потраплять всі мої println'и, що є зайвим. Має бути інший шлях..."
] ]
} }
}, },
@ -567,7 +567,7 @@ exports.level = {
"", "",
"Mấy lệnh gỡ lỗi và in này nằm yên trong commit của chúng. Cuối cùng thì tôi cũng tìm ra lỗi, gỡ xong, ngon rồi!", "Mấy lệnh gỡ lỗi và in này nằm yên trong commit của chúng. Cuối cùng thì tôi cũng tìm ra lỗi, gỡ xong, ngon rồi!",
"", "",
"Bây giờ thì lại phải đưa `bugFix` trở về nhánh `main`. Nếu mà đơn giản dùng fast-forwarded lên `master`, thì `master` lại có tất cả các lệnh gỡ lỗi kia(chẳng muốn chút nào). Phải có cách khác chứ nhỉ..." "Bây giờ thì lại phải đưa `bugFix` trở về nhánh `main`. Nếu mà đơn giản dùng fast-forwarded lên `main`, thì `main` lại có tất cả các lệnh gỡ lỗi kia(chẳng muốn chút nào). Phải có cách khác chứ nhỉ..."
] ]
} }
}, },
@ -606,7 +606,7 @@ exports.level = {
"", "",
"Vsi te ukazi za debuggiranje / izpisovanje so v svojih commitih. Končno odkrijem bug, ga popravim in se veselim!", "Vsi te ukazi za debuggiranje / izpisovanje so v svojih commitih. Končno odkrijem bug, ga popravim in se veselim!",
"", "",
"Edini problem je, da morem sedaj spraviti moj `bugFix` nazaj v `main` branch. Če uporabim samo fast-forward na `masterju`, potem bi `master` vseboval vse moje debug vrstice, česar si ne želim. Mora obstajati še neka druga pot ..." "Edini problem je, da morem sedaj spraviti moj `bugFix` nazaj v `main` branch. Če uporabim samo fast-forward na `masterju`, potem bi `main` vseboval vse moje debug vrstice, česar si ne želim. Mora obstajati še neka druga pot ..."
] ]
} }
}, },

View file

@ -290,7 +290,7 @@ exports.level = {
"", "",
"Beachte den geschilderten Zielzustand. Da wir die Commits zweimal umsortieren, bekommen sie jedes Mal ein Apostroph hinzugefügt (weil sie jedes Mal kopiert werden). Ein weiteres Apostroph entsteht durch den `git commit --amend`.", "Beachte den geschilderten Zielzustand. Da wir die Commits zweimal umsortieren, bekommen sie jedes Mal ein Apostroph hinzugefügt (weil sie jedes Mal kopiert werden). Ein weiteres Apostroph entsteht durch den `git commit --amend`.",
"", "",
"Zuguterletzt noch eine Bemerkung: ich kann Level nur auf Struktur und Apostroph-Differenz prüfen. So lange wie dein `main` am Ende dieselbe Struktur und Apostroph-Differenz aufweist wie der Ziel-`master`, ist der Level bestanden." "Zuguterletzt noch eine Bemerkung: ich kann Level nur auf Struktur und Apostroph-Differenz prüfen. So lange wie dein `main` am Ende dieselbe Struktur und Apostroph-Differenz aufweist wie der Ziel-`main`, ist der Level bestanden."
] ]
} }
}, },

View file

@ -171,7 +171,7 @@ exports.level = {
"", "",
"Puh! Wir haben ein ganz schön schweres Ziel für dieses Level.", "Puh! Wir haben ein ganz schön schweres Ziel für dieses Level.",
"", "",
"Wir haben hier einen `main`, der ein paar Commits weiter ist als die Branche `one`, `two` und `three`. Aus welchem Grund auch immer müssen wir diese drei anderen Branches mit modifizierten Versionen der paar letzten Commits von `master` aktualisieren.", "Wir haben hier einen `main`, der ein paar Commits weiter ist als die Branche `one`, `two` und `three`. Aus welchem Grund auch immer müssen wir diese drei anderen Branches mit modifizierten Versionen der paar letzten Commits von `main` aktualisieren.",
"", "",
"Branch `one` benötigt eine Umsortierung und `C5` muss gelöscht werden. `two` muss nur umsortiert werden und `three` braucht nur einen Commit!", "Branch `one` benötigt eine Umsortierung und `C5` muss gelöscht werden. `two` muss nur umsortiert werden und `three` braucht nur einen Commit!",
"", "",
@ -211,7 +211,7 @@ exports.level = {
"", "",
"哇塞大神!这关我们要来点不同的!", "哇塞大神!这关我们要来点不同的!",
"", "",
"现在我们的 `main` 分支是比 `one`、`two` 和 `three` 要多几个提交。出于某种原因,我们需要把 `master` 分支上最近的几次提交做不同的调整后,分别添加到各个的分支上。", "现在我们的 `main` 分支是比 `one`、`two` 和 `three` 要多几个提交。出于某种原因,我们需要把 `main` 分支上最近的几次提交做不同的调整后,分别添加到各个的分支上。",
"", "",
"`one` 需要重新排序并删除 `C5``two` 仅需要重排排序,而 `three` 只需要提交一次。", "`one` 需要重新排序并删除 `C5``two` 仅需要重排排序,而 `three` 只需要提交一次。",
"", "",
@ -311,7 +311,7 @@ exports.level = {
"", "",
"Chààà, anh bạn! Thử thách lần này hơi khoai đây.", "Chààà, anh bạn! Thử thách lần này hơi khoai đây.",
"", "",
"Hiện tại thì nhánh `main` đang có nhiều commit hơn các nhánh `one`, `two` và `three`. Vì một lý do nào đó, ta cần cập nhật những commit trên nhánh `master` lên các nhánh còn lại kèm với một vài điều chỉnh .", "Hiện tại thì nhánh `main` đang có nhiều commit hơn các nhánh `one`, `two` và `three`. Vì một lý do nào đó, ta cần cập nhật những commit trên nhánh `main` lên các nhánh còn lại kèm với một vài điều chỉnh .",
"", "",
"Nhánh `one` thì cần sắp xếp lại và xóa commit `C5`, trong khi đó nhánh `two` thì đơn giản sắp xếp, còn `three` thì chỉ cần một commit!", "Nhánh `one` thì cần sắp xếp lại và xóa commit `C5`, trong khi đó nhánh `two` thì đơn giản sắp xếp, còn `three` thì chỉ cần một commit!",
"", "",

View file

@ -530,7 +530,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"### fetch 沒有做的事情", "### fetch 沒有做的事情",
"", "",
"然而,`git fetch` 並不會影響到在你的 local repository 中的 `main` branch他並不會將你的 `master` branch 更新到最新的狀態。", "然而,`git fetch` 並不會影響到在你的 local repository 中的 `main` branch他並不會將你的 `main` branch 更新到最新的狀態。",
"", "",
"這個觀念很重要,因為很多程式設計師以為 `git fetch` 可以讓他們在 local repository 上面的工作跟 remote repository 的工作可以同步。它是會下載同步所需的資料,但是不會更新任何的檔案,我們會在後面的教學中提到如何做到這件事情。:D", "這個觀念很重要,因為很多程式設計師以為 `git fetch` 可以讓他們在 local repository 上面的工作跟 remote repository 的工作可以同步。它是會下載同步所需的資料,但是不會更新任何的檔案,我們會在後面的教學中提到如何做到這件事情。:D",
"", "",

View file

@ -157,7 +157,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Remote Rejected!", "## Remote Rejected!",
"", "",
"Когда вы работаете в составе большой команды разработчиков над проектом, то, вероятнее всего, ветвь `main` будет _заблокирована_. Для внесения изменений в неё в git существует понятие запроса на слияние `Pull Request`. В такой ситуации если вы закоммитите свои наработки непосредственно в `master` ветвь, а после выполните `git push`, то будет сгенерировано сообщение об ошибке:", "Когда вы работаете в составе большой команды разработчиков над проектом, то, вероятнее всего, ветвь `main` будет _заблокирована_. Для внесения изменений в неё в git существует понятие запроса на слияние `Pull Request`. В такой ситуации если вы закоммитите свои наработки непосредственно в `main` ветвь, а после выполните `git push`, то будет сгенерировано сообщение об ошибке:",
"", "",
"```", "```",
" ! [remote rejected] master -> master (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.)", " ! [remote rejected] master -> master (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.)",
@ -175,7 +175,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Почему произошло отклонение моих изменений?", "## Почему произошло отклонение моих изменений?",
"", "",
"Удалённый репозиторий отклонил загруженные коммиты непосредственно в `main` ветку потому, что на `master` _настроена политика_, которая требует использование `Pull request` вместо обычного `git push`.", "Удалённый репозиторий отклонил загруженные коммиты непосредственно в `main` ветку потому, что на `main` _настроена политика_, которая требует использование `Pull request` вместо обычного `git push`.",
"", "",
"Эта политика подразумевает процесс создания новой ветви разработки, внесение в неё всех необходимых коммитов, загрузка изменений в удалённый репозиторий и _открытие нового_ `Pull request`. Однако вы забыли про это и закоммитили наработки непосредственно в `main` ветвь. Теперь вы застряли и не можете запушить свои изменения :(. " "Эта политика подразумевает процесс создания новой ветви разработки, внесение в неё всех необходимых коммитов, загрузка изменений в удалённый репозиторий и _открытие нового_ `Pull request`. Однако вы забыли про это и закоммитили наработки непосредственно в `main` ветвь. Теперь вы застряли и не можете запушить свои изменения :(. "
] ]
@ -201,7 +201,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Remote Rejected!", "## Remote Rejected!",
"", "",
"Коли ви працюєте над проектом в складі великої команди розробників, то, швидше за все, гілка `main` буде _заблокована_. Для внесення до неї змін в git існує поняття запиту на злиття `Pull Request`. В такій ситуації, якщо ви закомітите свої зміни безпосередньо в гілку `master`, а потім виконаєте `git push`, то буде згенероване повідомлення про помилку:", "Коли ви працюєте над проектом в складі великої команди розробників, то, швидше за все, гілка `main` буде _заблокована_. Для внесення до неї змін в git існує поняття запиту на злиття `Pull Request`. В такій ситуації, якщо ви закомітите свої зміни безпосередньо в гілку `main`, а потім виконаєте `git push`, то буде згенероване повідомлення про помилку:",
"", "",
"```", "```",
" ! [remote rejected] master -> master (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.)", " ! [remote rejected] master -> master (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.)",
@ -219,7 +219,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Чому мої зміни були відхилені?", "## Чому мої зміни були відхилені?",
"", "",
"Віддалений репозиторій відхилив коміти завантажені безпосередньо в гілку `main` через те, що на `master` _налаштована політика_, яка вимагає використання `Pull request` замість звичайного `git push`.", "Віддалений репозиторій відхилив коміти завантажені безпосередньо в гілку `main` через те, що на `main` _налаштована політика_, яка вимагає використання `Pull request` замість звичайного `git push`.",
"", "",
"Ця політика має на увазі процес створення нової гілки розробки, внесення до неї всіх потрібних комітів, завантаження змін в віддалений репозиторій іідкриття нового_ `Pull request`. Але ви про це забули (чи не знали) і закомітили свої доробки безпосередньо в гілку `main`. Тепер ви застрягли і не можене запушити свої зміни :(. " "Ця політика має на увазі процес створення нової гілки розробки, внесення до неї всіх потрібних комітів, завантаження змін в віддалений репозиторій іідкриття нового_ `Pull request`. Але ви про це забули (чи не знали) і закомітили свої доробки безпосередньо в гілку `main`. Тепер ви застрягли і не можене запушити свої зміни :(. "
] ]
@ -246,7 +246,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Remote Rejected!", "## Remote Rejected!",
"", "",
"Si trabajas en un equipo colaborativo, es probable que la rama `main` esté bloqueada y requiera algún proceso de `Pull Request` para poder `mergear` los cambios. Si haces `commit` directamente a `master` e intentas realizar `push`, recibirás un mensaje similar a este:", "Si trabajas en un equipo colaborativo, es probable que la rama `main` esté bloqueada y requiera algún proceso de `Pull Request` para poder `mergear` los cambios. Si haces `commit` directamente a `main` e intentas realizar `push`, recibirás un mensaje similar a este:",
"", "",
"```", "```",
" ! [remote rejected] master -> master (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.)", " ! [remote rejected] master -> master (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.)",
@ -260,7 +260,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## ¿Por qué fue rechazado?", "## ¿Por qué fue rechazado?",
"", "",
"Se rechazó el `push` del `commit` a la rama `main` debido a la política en la rama `master` que requiere el uso de `Pull Requests`.", "Se rechazó el `push` del `commit` a la rama `main` debido a la política en la rama `main` que requiere el uso de `Pull Requests`.",
"", "",
"Trataste de crear una rama y luego hacer `pushs` creando un `Pull Request`, pero te olvidaste e hiciste `commit` directamente a `main`. Ahora estás atascado y no puedes hacer `push` de tus cambios." "Trataste de crear una rama y luego hacer `pushs` creando un `Pull Request`, pero te olvidaste e hiciste `commit` directamente a `main`. Ahora estás atascado y no puedes hacer `push` de tus cambios."
@ -341,7 +341,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Pourquoi est-ce rejeté?", "## Pourquoi est-ce rejeté?",
"", "",
"Le dépôt distant a rejeté le `push` de `commit` directement sur `main`, à cause de la stratégie mise en place sur `master`, imposant plutôt l'usage des `pull requests`.", "Le dépôt distant a rejeté le `push` de `commit` directement sur `main`, à cause de la stratégie mise en place sur `main`, imposant plutôt l'usage des `pull requests`.",
"", "",
"Vous étiez censé suivre le processus suivant : créer une branche, `push`, et faire une `pull request`. Mais vous avez oublié et avez fait un `commit` directement sur `main`. Maintenant vous êtes coincé et ne pouvez pas faire un `push` de vos modifications." "Vous étiez censé suivre le processus suivant : créer une branche, `push`, et faire une `pull request`. Mais vous avez oublié et avez fait un `commit` directement sur `main`. Maintenant vous êtes coincé et ne pouvez pas faire un `push` de vos modifications."
] ]
@ -367,7 +367,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## 원격저장소 거부! (Remote Rejected!)", "## 원격저장소 거부! (Remote Rejected!)",
"", "",
"규모가 큰 개발팀에서 일하는 경우, 보통 원격저장소의 `main` 브랜치는 잠겨있습니다(locked). 그래서 변경사항을 적용하려면 pull request 과정을 거쳐야하죠. 만약에 여러분이 로컬 저장소의 `master`브랜치에서 커밋을 한 후 `push`하려고 시도한다면, 다음과 같은 오류를 받게 될겁니다. :", "규모가 큰 개발팀에서 일하는 경우, 보통 원격저장소의 `main` 브랜치는 잠겨있습니다(locked). 그래서 변경사항을 적용하려면 pull request 과정을 거쳐야하죠. 만약에 여러분이 로컬 저장소의 `main`브랜치에서 커밋을 한 후 `push`하려고 시도한다면, 다음과 같은 오류를 받게 될겁니다. :",
"", "",
"```", "```",
" ! [remote rejected] master -> master (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.)", " ! [remote rejected] master -> master (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.)",
@ -381,7 +381,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## 왜 거부됐나요?", "## 왜 거부됐나요?",
"", "",
"원격 저장소는 자신의 `main` 브랜치에 대한 직접적인 커밋을 제한합니다. 왜냐하면 `push` 대신에 pull request가 쓰여야 한다는 규칙이 원격 저장소의 `master` 브랜치에는 적용되어 있기 때문이죠.", "원격 저장소는 자신의 `main` 브랜치에 대한 직접적인 커밋을 제한합니다. 왜냐하면 `push` 대신에 pull request가 쓰여야 한다는 규칙이 원격 저장소의 `main` 브랜치에는 적용되어 있기 때문이죠.",
"", "",
"여러분은 브랜치를 따로 만들어 작업한 다음, 그것을 `push`하고 pull request를 하려 했습니다. 하지만 그걸 잊고 실수로 `main` 브랜치에서 직접 커밋을 해버렸네요! 이제 변경 사항을 `push` 하지도 못하고 옴짝달싹 못하는 상황이 되어버렸습니다." "여러분은 브랜치를 따로 만들어 작업한 다음, 그것을 `push`하고 pull request를 하려 했습니다. 하지만 그걸 잊고 실수로 `main` 브랜치에서 직접 커밋을 해버렸네요! 이제 변경 사항을 `push` 하지도 못하고 옴짝달싹 못하는 상황이 되어버렸습니다."
] ]
@ -407,7 +407,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Remote Rejected!", "## Remote Rejected!",
"", "",
"Si trabajas en un equipo colaborativo, es probable que la rama `main` esté bloqueada y requiera algún proceso de `Pull Request` para poder `mergear` los cambios. Si haces `commit` directamente a `master` e intentas realizar `push`, recibirás un mensaje similar a este:", "Si trabajas en un equipo colaborativo, es probable que la rama `main` esté bloqueada y requiera algún proceso de `Pull Request` para poder `mergear` los cambios. Si haces `commit` directamente a `main` e intentas realizar `push`, recibirás un mensaje similar a este:",
"", "",
"```", "```",
" ! [remote rejected] master -> master (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.)", " ! [remote rejected] master -> master (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.)",
@ -421,7 +421,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## ¿Por qué fue rechazado?", "## ¿Por qué fue rechazado?",
"", "",
"Se rechazó el `push` del `commit` a la rama `main` debido a la política en la rama `master` que requiere el uso de `Pull Requests`.", "Se rechazó el `push` del `commit` a la rama `main` debido a la política en la rama `main` que requiere el uso de `Pull Requests`.",
"", "",
"Trataste de crear una rama y luego hacer `pushs` creando un `Pull Request`, pero te olvidaste e hiciste `commit` directamente a `main`. Ahora estás atascado y no puedes hacer `push` de tus cambios." "Trataste de crear una rama y luego hacer `pushs` creando un `Pull Request`, pero te olvidaste e hiciste `commit` directamente a `main`. Ahora estás atascado y no puedes hacer `push` de tus cambios."

View file

@ -82,7 +82,7 @@ exports.level = {
"If we specify the place to fetch, everything happens as before with fetch but we merge in whatever was just fetched." "If we specify the place to fetch, everything happens as before with fetch but we merge in whatever was just fetched."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"See! by specifying `main` we downloaded commits onto `o/master` just as normal. Then we merged `o/master` to our currently checked out location which is *not* the local branch `master`. For this reason it can actually make sense to run git pull multiple times (with the same args) from different locations in order to update multiple branches." "See! by specifying `main` we downloaded commits onto `o/master` just as normal. Then we merged `o/master` to our currently checked out location which is *not* the local branch `main`. For this reason it can actually make sense to run git pull multiple times (with the same args) from different locations in order to update multiple branches."
], ],
"command": "git pull origin master", "command": "git pull origin master",
"beforeCommand": "git clone; go -b bar; git commit; git fakeTeamwork" "beforeCommand": "git clone; go -b bar; git commit; git fakeTeamwork"
@ -970,7 +970,7 @@ exports.level = {
"Nếu ta chỉ định vị trí để nạp, mọi thứ diễn ra như với git fetch nhưng giờ đây có thêm một bước đó là ta hợp nhất những gì mà ta đã nạp" "Nếu ta chỉ định vị trí để nạp, mọi thứ diễn ra như với git fetch nhưng giờ đây có thêm một bước đó là ta hợp nhất những gì mà ta đã nạp"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Thấy chứ! Bằng cách chỉ định nhánh `main` ta tải các commit xuống nhánh `o/master` như thường lệ. Sau đó hợp nhất nhánh `o/master` vào nhánh cục bộ mà ta đang đứng, nhánh mà *không phải* nhánh cục bộ `master`. Nhờ vậy mà ta có thể chạy cùng một lệnh git pull(với cùng tham số) nhiều lần ở những vị trí khác nhau để áp dụng cùng cập nhật lên các nhánh khác nhau." "Thấy chứ! Bằng cách chỉ định nhánh `main` ta tải các commit xuống nhánh `o/master` như thường lệ. Sau đó hợp nhất nhánh `o/master` vào nhánh cục bộ mà ta đang đứng, nhánh mà *không phải* nhánh cục bộ `main`. Nhờ vậy mà ta có thể chạy cùng một lệnh git pull(với cùng tham số) nhiều lần ở những vị trí khác nhau để áp dụng cùng cập nhật lên các nhánh khác nhau."
], ],
"command": "git pull origin master", "command": "git pull origin master",
"beforeCommand": "git clone; go -b bar; git commit; git fakeTeamwork" "beforeCommand": "git clone; go -b bar; git commit; git fakeTeamwork"
@ -1044,7 +1044,7 @@ exports.level = {
"Če določimo mesto za fetchanje, se zgodi vse kot prej s fetchem, ampak tudi zmergamo, kar smo pravkar fetchali." "Če določimo mesto za fetchanje, se zgodi vse kot prej s fetchem, ampak tudi zmergamo, kar smo pravkar fetchali."
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Vidiš! Z določitvijo `main` smo prenesli commite na `o/master` kot ponavadi. Potem smo zmergali `o/master` v našo trenutno checkoutano lokacijo, ki *ni* lokalni branch `master`. Zaradi tega razloga je morda celo logično, da izvedemo git pull večkrat (z istimi argumenti) iz drugi lokacij, da posodobimo več branchev." "Vidiš! Z določitvijo `main` smo prenesli commite na `o/master` kot ponavadi. Potem smo zmergali `o/master` v našo trenutno checkoutano lokacijo, ki *ni* lokalni branch `main`. Zaradi tega razloga je morda celo logično, da izvedemo git pull večkrat (z istimi argumenti) iz drugi lokacij, da posodobimo več branchev."
], ],
"command": "git pull origin master", "command": "git pull origin master",
"beforeCommand": "git clone; go -b bar; git commit; git fakeTeamwork" "beforeCommand": "git clone; go -b bar; git commit; git fakeTeamwork"

View file

@ -403,7 +403,7 @@ exports.level = {
"Hier haben wir ein paar Änderungen, die auf dem Remote noch fehlen. Und hoch damit!" "Hier haben wir ein paar Änderungen, die auf dem Remote noch fehlen. Und hoch damit!"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"Na bitte -- das Remote hat den Commit `C2` bekommen, der `main` auf dem Remote ist entsprechend aktualisiert worden und unsere *eigene* Abbildung des `master` auf dem Remote namens `o/master` wurde auch aktualisiert. Alles im Lot!" "Na bitte -- das Remote hat den Commit `C2` bekommen, der `main` auf dem Remote ist entsprechend aktualisiert worden und unsere *eigene* Abbildung des `main` auf dem Remote namens `o/master` wurde auch aktualisiert. Alles im Lot!"
], ],
"command": "git push", "command": "git push",
"beforeCommand": "git clone; git commit" "beforeCommand": "git clone; git commit"

View file

@ -650,7 +650,7 @@ exports.level = {
"", "",
"Das bedeutet im Klartext:", "Das bedeutet im Klartext:",
"", "",
"\"Geh zum Branch namens `main` in meinem Repository, nimm all seine Commits, dann geh zum Branch `master` auf dem Remote namens `origin`. Lege da alle Commits ab, die fehlen und sage mir, wenn du fertig bist.\"", "\"Geh zum Branch namens `main` in meinem Repository, nimm all seine Commits, dann geh zum Branch `main` auf dem Remote namens `origin`. Lege da alle Commits ab, die fehlen und sage mir, wenn du fertig bist.\"",
"", "",
"Da wir `main` als \"Ort\" angegeben haben, weiß Git, *woher* die Commits kommen und *wohin* sie sollen. Es ist im Grunde der Name der Orte, die zwischen zwei Repositorys synchronisiert werden sollen.", "Da wir `main` als \"Ort\" angegeben haben, weiß Git, *woher* die Commits kommen und *wohin* sie sollen. Es ist im Grunde der Name der Orte, die zwischen zwei Repositorys synchronisiert werden sollen.",
"", "",

View file

@ -50,7 +50,7 @@ exports.level = {
"", "",
"It's common for developers on big projects to do all their work on feature branches (off of `main`) and then integrate that work only once it's ready. This is similar to the previous lesson (where side branches get pushed to the remote), but here we introduce one more step.", "It's common for developers on big projects to do all their work on feature branches (off of `main`) and then integrate that work only once it's ready. This is similar to the previous lesson (where side branches get pushed to the remote), but here we introduce one more step.",
"", "",
"Some developers only push and pull when on the `main` branch -- that way `master` always stays updated to what is on the remote (`o/master`).", "Some developers only push and pull when on the `main` branch -- that way `main` always stays updated to what is on the remote (`o/master`).",
"", "",
"So for this workflow we combine two things:", "So for this workflow we combine two things:",
"", "",
@ -103,7 +103,7 @@ exports.level = {
"", "",
"Il est commun pour les développeurs de gros projets de faire tout leur travail dans des \"feature branches\" dédiées à une fonctionnalité (en dehors de `main`) et d'intégrer ce travail au reste seulement une fois qu'il est prêt. C'est similaire à la leçon précédente (où les branches secondaires étaient pushées sur le dépôt distant), mais ici nous introduisons une étape supplémentaire.", "Il est commun pour les développeurs de gros projets de faire tout leur travail dans des \"feature branches\" dédiées à une fonctionnalité (en dehors de `main`) et d'intégrer ce travail au reste seulement une fois qu'il est prêt. C'est similaire à la leçon précédente (où les branches secondaires étaient pushées sur le dépôt distant), mais ici nous introduisons une étape supplémentaire.",
"", "",
"Certains développeurs utilisent la méthode \"push puis pull\" uniquement sur la branche `main` : de cette manière `master` reste toujours à jour avec ce qu'il y a sur le dépôt distant (`o/master`).", "Certains développeurs utilisent la méthode \"push puis pull\" uniquement sur la branche `main` : de cette manière `main` reste toujours à jour avec ce qu'il y a sur le dépôt distant (`o/master`).",
"", "",
"Cette approche combine donc deux choses :", "Cette approche combine donc deux choses :",
"", "",
@ -156,7 +156,7 @@ exports.level = {
"", "",
"Es bastante común que los desarrolladores en los grandes proyectos trabajen sobre ramas específicas para cada tarea (feature branches) basadas en `main`, y que las integren sólo cuando están listas. Esto es similar a la lección anterior, en que pusheabamos las ramas periféricas al remoto, pero acá tenemos un paso más.", "Es bastante común que los desarrolladores en los grandes proyectos trabajen sobre ramas específicas para cada tarea (feature branches) basadas en `main`, y que las integren sólo cuando están listas. Esto es similar a la lección anterior, en que pusheabamos las ramas periféricas al remoto, pero acá tenemos un paso más.",
"", "",
"Algunos desarrolladores sólo pushean y pullean cuando están en `main`: de ese modo, `master` siempre se mantiene actualizado con el remoto (`o/master`).", "Algunos desarrolladores sólo pushean y pullean cuando están en `main`: de ese modo, `main` siempre se mantiene actualizado con el remoto (`o/master`).",
"", "",
"Entonces, en este flujo de trabajo combinamos dos cosas:", "Entonces, en este flujo de trabajo combinamos dos cosas:",
"", "",
@ -209,7 +209,7 @@ exports.level = {
"", "",
"Es bastante común que los desarrolladores en los grandes proyectos trabajen sobre ramas específicas para cada tarea (feature branches o ramas de trabajo) basadas en `main`, y que las integren sólo cuando estén listas. Esto es similar a la lección anterior, en la que hicimos push de las ramas periféricas al remoto, pero aquí tenemos un paso más.", "Es bastante común que los desarrolladores en los grandes proyectos trabajen sobre ramas específicas para cada tarea (feature branches o ramas de trabajo) basadas en `main`, y que las integren sólo cuando estén listas. Esto es similar a la lección anterior, en la que hicimos push de las ramas periféricas al remoto, pero aquí tenemos un paso más.",
"", "",
"Algunos desarrolladores sólo pushean y pullean cuando están en `main`: de ese modo, `master` siempre se mantiene actualizado con el remoto (`o/master`).", "Algunos desarrolladores sólo pushean y pullean cuando están en `main`: de ese modo, `main` siempre se mantiene actualizado con el remoto (`o/master`).",
"", "",
"Entonces, en este flujo de trabajo combinamos dos cosas:", "Entonces, en este flujo de trabajo combinamos dos cosas:",
"", "",
@ -262,7 +262,7 @@ exports.level = {
"", "",
"É comum para desenvolvedores de grande projetos fazer todo o trabalho em ramos de funcionalidades (fora do `main`) e então integrar esse trabalho uma única vez quando ele estiver pronto. Isso é similar à lição anterior (onde ramos laterais eram enviados ao repositório remoto), mas introduzimos mais um passo.", "É comum para desenvolvedores de grande projetos fazer todo o trabalho em ramos de funcionalidades (fora do `main`) e então integrar esse trabalho uma única vez quando ele estiver pronto. Isso é similar à lição anterior (onde ramos laterais eram enviados ao repositório remoto), mas introduzimos mais um passo.",
"", "",
"Alguns desenvolvedores só fazem push e pull quando no ramo `main` -- desta forma o `master` sempre se mantém atualizado com aquilo que está no ramo remoto (`o/master`).", "Alguns desenvolvedores só fazem push e pull quando no ramo `main` -- desta forma o `main` sempre se mantém atualizado com aquilo que está no ramo remoto (`o/master`).",
"", "",
"Então, para este fluxo de trabalho, combinaremos duas coisas:", "Então, para este fluxo de trabalho, combinaremos duas coisas:",
"", "",
@ -315,7 +315,7 @@ exports.level = {
"", "",
"É bastante común que os desenvolvedores nos grandes proxectos traballen sobre ramas específicas para cada tarefa (feature branches) baseadas en `mater`, e que as integren só cando están preparadas. Esto é similar á lección anterior, na que empurrábamos as ramas periféricas ó remoto, pero acá temos un paso máis.", "É bastante común que os desenvolvedores nos grandes proxectos traballen sobre ramas específicas para cada tarefa (feature branches) baseadas en `mater`, e que as integren só cando están preparadas. Esto é similar á lección anterior, na que empurrábamos as ramas periféricas ó remoto, pero acá temos un paso máis.",
"", "",
"Algúns desenvovledores só empurran e descargan cando están en `main`: de ese xeito, `master` sempre mantén actualizado o seu estado co remoto (`o/master`).", "Algúns desenvovledores só empurran e descargan cando están en `main`: de ese xeito, `main` sempre mantén actualizado o seu estado co remoto (`o/master`).",
"", "",
"Entón, neste fluxo de traballo combinamos dúas cousas:", "Entón, neste fluxo de traballo combinamos dúas cousas:",
"", "",
@ -368,7 +368,7 @@ exports.level = {
"", "",
"在一個大型的專案裡面,程式設計師經常會在 feature branch有別於 master branch上面做開發之後等開發完之後在一次 merge 回去。這跟之前的課程是很類似的(其它的 branch 被 push 到 remote但是現在我們還要再多介紹一個步驟。", "在一個大型的專案裡面,程式設計師經常會在 feature branch有別於 master branch上面做開發之後等開發完之後在一次 merge 回去。這跟之前的課程是很類似的(其它的 branch 被 push 到 remote但是現在我們還要再多介紹一個步驟。",
"", "",
"某些程式設計師只針對 `main` branch 進行 push 或者是 pull。這樣子的話 `master` 一直都保持跟 remote `o/master` 同步。", "某些程式設計師只針對 `main` branch 進行 push 或者是 pull。這樣子的話 `main` 一直都保持跟 remote `o/master` 同步。",
"", "",
"所以針對這個問題我們結合了兩件事情:", "所以針對這個問題我們結合了兩件事情:",
"", "",
@ -421,7 +421,7 @@ exports.level = {
"", "",
"Für Entwickler in großen Projekten ist es nicht ungewöhnlich ihre Arbeit in Feature Branches (von `main` abgeleitet) zu erledigen und dann diese Inhalte zu reintegrieren, wenn sie fertig sind. Das ist ähnlich dem vorherigen Level (in dem ein Feature Branch auf den Server geschoben wird), nur mit einem zusätzlichen Schritt.", "Für Entwickler in großen Projekten ist es nicht ungewöhnlich ihre Arbeit in Feature Branches (von `main` abgeleitet) zu erledigen und dann diese Inhalte zu reintegrieren, wenn sie fertig sind. Das ist ähnlich dem vorherigen Level (in dem ein Feature Branch auf den Server geschoben wird), nur mit einem zusätzlichen Schritt.",
"", "",
"Einige Entwickler pushen und pullen nur auf dem `main` -- dadurch ist `master` immer aktuell zu seinem Gegenstück auf dem Server (`o/master`).", "Einige Entwickler pushen und pullen nur auf dem `main` -- dadurch ist `main` immer aktuell zu seinem Gegenstück auf dem Server (`o/master`).",
"", "",
"Für diesen Ablauf werden wir also zwei Dinge kombinieren:", "Für diesen Ablauf werden wir also zwei Dinge kombinieren:",
"", "",
@ -527,7 +527,7 @@ exports.level = {
"", "",
"Среди разработчиков, вовлечённых в большой проект, довольно распространённ приём — выполнять всю свою работу в так называемых фича-бранчах (вне `main`). А затем, как только работа выполнена, разработчик интегрирует всё, что было им сделано. Всё это, за исключением одного шага, похоже на предыдущий урок (там, где мы закачивали ветки на удалённый репозиторий)", "Среди разработчиков, вовлечённых в большой проект, довольно распространённ приём — выполнять всю свою работу в так называемых фича-бранчах (вне `main`). А затем, как только работа выполнена, разработчик интегрирует всё, что было им сделано. Всё это, за исключением одного шага, похоже на предыдущий урок (там, где мы закачивали ветки на удалённый репозиторий)",
"", "",
"Ряд разработчиков делают push и pull лишь на локальную ветку `main` - таким образом ветка `master` всегда синхронизирована с тем, что находится на удалённом репозитории (`o/master`).", "Ряд разработчиков делают push и pull лишь на локальную ветку `main` - таким образом ветка `main` всегда синхронизирована с тем, что находится на удалённом репозитории (`o/master`).",
"", "",
"Для этого рабочего процесса мы совместили две вещи:", "Для этого рабочего процесса мы совместили две вещи:",
"", "",
@ -580,7 +580,7 @@ exports.level = {
"", "",
"大きなプロジェクトの開発者にとって、フィーチャーブランチ(`main`を除く)上で全ての作業を行い、完成したら一度でその作業を統合するというような流れが一般的です。これは前のレッスンの内容(他のブランチからリモートにプッシュされるような状況のところが)に似ていますが、ここではもう一歩踏み込んで解説しましょう。", "大きなプロジェクトの開発者にとって、フィーチャーブランチ(`main`を除く)上で全ての作業を行い、完成したら一度でその作業を統合するというような流れが一般的です。これは前のレッスンの内容(他のブランチからリモートにプッシュされるような状況のところが)に似ていますが、ここではもう一歩踏み込んで解説しましょう。",
"", "",
"開発者は、`main`ブランチにいるときプッシュとプルしかしません -- `master`は常にリモート(`o/master`)に追従した状態のままにします。", "開発者は、`main`ブランチにいるときプッシュとプルしかしません -- `main`は常にリモート(`o/master`)に追従した状態のままにします。",
"", "",
"この作業の流れでは、私たちは二つのことを組み合わせています:", "この作業の流れでは、私たちは二つのことを組み合わせています:",
"", "",
@ -633,7 +633,7 @@ exports.level = {
"", "",
"개발자들은 주로 큰 프로젝트를 개발할때 작업을 feature 브랜치(=토픽브랜치 / `main`브랜치가 아닌 작업을위해 임시로 만든 브랜치를 말합니다)들에 하고 준비가 되면 그 작업을 통합합니다. 이전 강의와 비슷한 모습인데(사이드 브랜치들을 원격저장소로 push한것), 여기서 한 단계 더 나아가 봅시다. ", "개발자들은 주로 큰 프로젝트를 개발할때 작업을 feature 브랜치(=토픽브랜치 / `main`브랜치가 아닌 작업을위해 임시로 만든 브랜치를 말합니다)들에 하고 준비가 되면 그 작업을 통합합니다. 이전 강의와 비슷한 모습인데(사이드 브랜치들을 원격저장소로 push한것), 여기서 한 단계 더 나아가 봅시다. ",
"", "",
"어떤 개발자들은 `main` 브랜치에 있을때만 push와 pull을 수행합니다 -- 이렇게하면 `master`는 항상 원격 브랜치 (`o/master`)의 상태와 항상 최신의 상태로 유지될 수 있습니다.", "어떤 개발자들은 `main` 브랜치에 있을때만 push와 pull을 수행합니다 -- 이렇게하면 `main`는 항상 원격 브랜치 (`o/master`)의 상태와 항상 최신의 상태로 유지될 수 있습니다.",
"", "",
"이런 작업흐름은 두가지 작업을 같이하게됩니다 :", "이런 작업흐름은 두가지 작업을 같이하게됩니다 :",
"", "",
@ -686,7 +686,7 @@ exports.level = {
"", "",
"Зазвичай розробники працюють над якимось фічами в окремій гілці (не в `main`), а потім, коли роботу закінчено, інтегрують її. Це схоже на попередній урок (де окремі гілки пушили у віддалений репозиторій), але тут буде ще один додатковий крок.", "Зазвичай розробники працюють над якимось фічами в окремій гілці (не в `main`), а потім, коли роботу закінчено, інтегрують її. Це схоже на попередній урок (де окремі гілки пушили у віддалений репозиторій), але тут буде ще один додатковий крок.",
"", "",
"Деякі розробники виконують push і pull лише в гілці `main` -- тож `master` завжди буде актуальним і синхронізованим з віддаленою гілкою (`o/master`).", "Деякі розробники виконують push і pull лише в гілці `main` -- тож `main` завжди буде актуальним і синхронізованим з віддаленою гілкою (`o/master`).",
"", "",
"Отже для цього процесу ми об'єднуємо дві речі:", "Отже для цього процесу ми об'єднуємо дві речі:",
"", "",
@ -739,7 +739,7 @@ exports.level = {
"", "",
"Trong các dự án lớn, các nhà phát triển thường làm việc trên các nhánh tính năng (được phân nhánh từ `main`) và chỉ thực hiện tích hợp sau khi công việc hoàn thành. Điều này tương tự như mô tả trong bài học trước (đẩy nhánh bên sang kho lưu trữ từ xa), nhưng chúng ta sẽ đi sâu hơn một chút trong phần này.", "Trong các dự án lớn, các nhà phát triển thường làm việc trên các nhánh tính năng (được phân nhánh từ `main`) và chỉ thực hiện tích hợp sau khi công việc hoàn thành. Điều này tương tự như mô tả trong bài học trước (đẩy nhánh bên sang kho lưu trữ từ xa), nhưng chúng ta sẽ đi sâu hơn một chút trong phần này.",
"", "",
"Một vài nhà phát triển chỉ thực hiện đẩy và kéo khi ở trên nhánh `main` -- như vậy thì nhánh `master` luôn luôn được cập nhật với nhánh từ xa (`o/master`).", "Một vài nhà phát triển chỉ thực hiện đẩy và kéo khi ở trên nhánh `main` -- như vậy thì nhánh `main` luôn luôn được cập nhật với nhánh từ xa (`o/master`).",
"", "",
"Vậy nên với quy trình làm việc này chúng tôi đã kết hợp 2 việc:", "Vậy nên với quy trình làm việc này chúng tôi đã kết hợp 2 việc:",
"", "",
@ -792,7 +792,7 @@ exports.level = {
"", "",
"Za razvijalce na velikih projektih je pogosto, da delajo vse svoje stvari na funkcionalnih brancih (ne na `main`) in potem vključijo to delo, ko je končano. To je podobno prejšnjim lekcijam (kjer so bili pushani stranski branchi na oddaljen repo), a tu predstavljamo še en korak.", "Za razvijalce na velikih projektih je pogosto, da delajo vse svoje stvari na funkcionalnih brancih (ne na `main`) in potem vključijo to delo, ko je končano. To je podobno prejšnjim lekcijam (kjer so bili pushani stranski branchi na oddaljen repo), a tu predstavljamo še en korak.",
"", "",
"Nekateri razvijaci samo pushajo in pullajo na `main` branchu -- zato `master` vedno ostane posodobljen z oddaljenim masterjem (`o/master`).", "Nekateri razvijaci samo pushajo in pullajo na `main` branchu -- zato `main` vedno ostane posodobljen z oddaljenim masterjem (`o/master`).",
"", "",
"Torej za tak primer uporabe, združimo dve stvari:", "Torej za tak primer uporabe, združimo dve stvari:",
"", "",

View file

@ -45,10 +45,10 @@ exports.level = {
"markdowns": [ "markdowns": [
"### Remote-Tracking branches", "### Remote-Tracking branches",
"", "",
"One thing that might have seemed \"magical\" about the last few lessons is that git knew the `main` branch was related to `o/master`. Sure these branches have similar names and it might make logical sense to connect the `master` branch on the remote to the local `master` branch, but this connection is demonstrated clearly in two scenarios:", "One thing that might have seemed \"magical\" about the last few lessons is that git knew the `main` branch was related to `o/master`. Sure these branches have similar names and it might make logical sense to connect the `main` branch on the remote to the local `main` branch, but this connection is demonstrated clearly in two scenarios:",
"", "",
"* During a pull operation, commits are downloaded onto `o/master` and then *merged* into the `main` branch. The implied target of the merge is determined from this connection.", "* During a pull operation, commits are downloaded onto `o/master` and then *merged* into the `main` branch. The implied target of the merge is determined from this connection.",
"* During a push operation, work from the `main` branch was pushed onto the remote's `master` branch (which was then represented by `o/master` locally). The *destination* of the push is determined from the connection between `master` and `o/master`.", "* During a push operation, work from the `main` branch was pushed onto the remote's `main` branch (which was then represented by `o/master` locally). The *destination* of the push is determined from the connection between `main` and `o/master`.",
"" ""
] ]
} }
@ -59,7 +59,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Remote tracking", "## Remote tracking",
"", "",
"Long story short, this connection between `main` and `o/master` is explained simply by the \"remote tracking\" property of branches. The `master` branch is set to track `o/master` -- this means there is an implied merge target and implied push destination for the `master` branch.", "Long story short, this connection between `main` and `o/master` is explained simply by the \"remote tracking\" property of branches. The `main` branch is set to track `o/master` -- this means there is an implied merge target and implied push destination for the `main` branch.",
"", "",
"You may be wondering how this property got set on the `main` branch when you didn't run any commands to specify it. Well, when you clone a repository with git, this property is actually set for you automatically. ", "You may be wondering how this property got set on the `main` branch when you didn't run any commands to specify it. Well, when you clone a repository with git, this property is actually set for you automatically. ",
"", "",
@ -79,7 +79,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"### Can I specify this myself?", "### Can I specify this myself?",
"", "",
"Yes you can! You can make any arbitrary branch track `o/master`, and if you do so, that branch will have the same implied push destination and merge target as `main`. This means you can run `git push` on a branch named `totallyNotMaster` and have your work pushed to the `master` branch on the remote!", "Yes you can! You can make any arbitrary branch track `o/master`, and if you do so, that branch will have the same implied push destination and merge target as `main`. This means you can run `git push` on a branch named `totallyNotMaster` and have your work pushed to the `main` branch on the remote!",
"", "",
"There are two ways to set this property. The first is to checkout a new branch by using a remote branch as the specified ref. Running", "There are two ways to set this property. The first is to checkout a new branch by using a remote branch as the specified ref. Running",
"", "",
@ -149,7 +149,7 @@ exports.level = {
"type": "ModalAlert", "type": "ModalAlert",
"options": { "options": {
"markdowns": [ "markdowns": [
"Ok! For this level let's push work onto the `main` branch on remote while *not* checked out on `master` locally. I'll let you figure out the rest since this is the advanced course :P" "Ok! For this level let's push work onto the `main` branch on remote while *not* checked out on `main` locally. I'll let you figure out the rest since this is the advanced course :P"
] ]
} }
} }
@ -163,10 +163,10 @@ exports.level = {
"markdowns": [ "markdowns": [
"### Le suivi des branches distantes", "### Le suivi des branches distantes",
"", "",
"Dans les dernières leçons, git savait que la branche `main` était reliée à `o/master`, et cela a pu vous paraître \"magique\". Il est certain que ces deux branches ont des noms similaires et il peut être logique de croire que la branche locale `master` est liée à la branche distante `master`, mais la relation n'est prouvée que dans deux scénarios :", "Dans les dernières leçons, git savait que la branche `main` était reliée à `o/master`, et cela a pu vous paraître \"magique\". Il est certain que ces deux branches ont des noms similaires et il peut être logique de croire que la branche locale `main` est liée à la branche distante `main`, mais la relation n'est prouvée que dans deux scénarios :",
"", "",
"* Pendant un pull, les commits sont téléchargés dans `o/master` et ensuite *fusionnés* (merge) dans la branche `main`. La cible impliquée dans cette fusion est déterminée par cette relation.", "* Pendant un pull, les commits sont téléchargés dans `o/master` et ensuite *fusionnés* (merge) dans la branche `main`. La cible impliquée dans cette fusion est déterminée par cette relation.",
"* Pendant un push, le travail de la branche `main` a été envoyé sur la branche distante `master` (qui est localement représentée par `o/master`). La *destination* du push est déterminée par la relation entre `master` and `o/master`.", "* Pendant un push, le travail de la branche `main` a été envoyé sur la branche distante `main` (qui est localement représentée par `o/master`). La *destination* du push est déterminée par la relation entre `main` and `o/master`.",
"" ""
] ]
} }
@ -177,7 +177,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Remote tracking", "## Remote tracking",
"", "",
"Pour faire court, cette relation entre `main` et `o/master` est simplement portée par la propriété \"remote tracking\" (suivi distant) des branches. La branche `master` est configurée pour suivre `o/master` : cela signifie qu'il y a une cible de fusion et une destination d'envoi implicites pour la branche `master`.", "Pour faire court, cette relation entre `main` et `o/master` est simplement portée par la propriété \"remote tracking\" (suivi distant) des branches. La branche `main` est configurée pour suivre `o/master` : cela signifie qu'il y a une cible de fusion et une destination d'envoi implicites pour la branche `main`.",
"", "",
"Vous vous demandez peut-être comment cette propriété a été configurée pour la branche `main` alors que vous n'avez exécuté aucune commande pour le faire. Eh bien, quand vous clonez un dépôt avec git, cette propriété est configurée automatiquement. ", "Vous vous demandez peut-être comment cette propriété a été configurée pour la branche `main` alors que vous n'avez exécuté aucune commande pour le faire. Eh bien, quand vous clonez un dépôt avec git, cette propriété est configurée automatiquement. ",
"", "",
@ -197,7 +197,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"### Puis-je configurer cette relation moi-même ?", "### Puis-je configurer cette relation moi-même ?",
"", "",
"Absolument ! Vous pouvez suivre `o/master` depuis n'importe quelle branche, et si vous le faîtes, cette branche va avoir la même destination de push et cible de merge que pour `main`. Cela signifie que vous pouvez exécuter `git push` sur une branche nommée `totallyNotMaster` mais envoyer tout de même votre travail sur la branche `master` du dépôt distant !", "Absolument ! Vous pouvez suivre `o/master` depuis n'importe quelle branche, et si vous le faîtes, cette branche va avoir la même destination de push et cible de merge que pour `main`. Cela signifie que vous pouvez exécuter `git push` sur une branche nommée `totallyNotMaster` mais envoyer tout de même votre travail sur la branche `main` du dépôt distant !",
"", "",
"Il y a deux façons de configurer cette propriété. La première est de créer une nouvelle branche en la branchant immédiatement sur la branche distante, à l'aide de `git checkout -b` :", "Il y a deux façons de configurer cette propriété. La première est de créer une nouvelle branche en la branchant immédiatement sur la branche distante, à l'aide de `git checkout -b` :",
"", "",
@ -267,7 +267,7 @@ exports.level = {
"type": "ModalAlert", "type": "ModalAlert",
"options": { "options": {
"markdowns": [ "markdowns": [
"Ok ! Pour ce niveau, envoyons notre travail sur la branche distante `main` en ne se trouvant *pas* sur la branche `master` locale. Je vous laisse chercher comment faire, puisque c'est une leçon de niveau avancé :P" "Ok ! Pour ce niveau, envoyons notre travail sur la branche distante `main` en ne se trouvant *pas* sur la branche `main` locale. Je vous laisse chercher comment faire, puisque c'est une leçon de niveau avancé :P"
] ]
} }
} }
@ -281,10 +281,10 @@ exports.level = {
"markdowns": [ "markdowns": [
"### Ramas que trackean remotos", "### Ramas que trackean remotos",
"", "",
"Una de las cosas que pueden haber parecido \"mágicas\" de las últimas lecciones es que git sabía que la rama `main` estaba relacionada con `o/master`. Obviamente, estas ramas tienen nombres parecidos, y podría parecer lógico conectar la rama `master` del remoto con la rama `master` local, pero esta conexión es bien evidente en dos escenarios:", "Una de las cosas que pueden haber parecido \"mágicas\" de las últimas lecciones es que git sabía que la rama `main` estaba relacionada con `o/master`. Obviamente, estas ramas tienen nombres parecidos, y podría parecer lógico conectar la rama `main` del remoto con la rama `main` local, pero esta conexión es bien evidente en dos escenarios:",
"", "",
"* Durante una operación de pull, los commits se descargan a `o/master` y después se *mergean* a la rama `main`. El objetivo implícito del merge se determina con esta conexión.", "* Durante una operación de pull, los commits se descargan a `o/master` y después se *mergean* a la rama `main`. El objetivo implícito del merge se determina con esta conexión.",
"* Durante un push, el trabajo de la rama `main` se sube a la rama `master` del remoto (que estaba representada localmente por `o/master`). El *destino* del push se determina con esta conexión entre `master` y `o/master`.", "* Durante un push, el trabajo de la rama `main` se sube a la rama `main` del remoto (que estaba representada localmente por `o/master`). El *destino* del push se determina con esta conexión entre `main` y `o/master`.",
"" ""
] ]
} }
@ -295,7 +295,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Trackeando remotos", "## Trackeando remotos",
"", "",
"Haciéndola corta, esta conexión entre `main` y `o/master` se explica simplemente por la propiedad de \"trackear (seguir) remotos\" de las ramas. La rama `master` está configurada para trackear `o/master` -- osea, que hay un objetivo implícito para el merge y un destino implícito para de la rama `master`.", "Haciéndola corta, esta conexión entre `main` y `o/master` se explica simplemente por la propiedad de \"trackear (seguir) remotos\" de las ramas. La rama `main` está configurada para trackear `o/master` -- osea, que hay un objetivo implícito para el merge y un destino implícito para de la rama `main`.",
"", "",
"Podrías estar pensando cómo esa propiedad apareció en tu rama `main` si vos no corriste ningún comando para especificarlo. Bueno, cuando clonás un repositorio con git, esta propiedad se asigna por vos automáticamente.", "Podrías estar pensando cómo esa propiedad apareció en tu rama `main` si vos no corriste ningún comando para especificarlo. Bueno, cuando clonás un repositorio con git, esta propiedad se asigna por vos automáticamente.",
"", "",
@ -317,7 +317,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"### ¿Puedo especificarlo yo?", "### ¿Puedo especificarlo yo?",
"", "",
"¡Claro que sí! Podés hacer que cualquier rama que quieras trackee `o/master`, y si lo hicieras, esa rama va a tener el mismo destino implícito de push y objetivo implícito de merge que `main`. Eso significa que podés correr `git push` en una rama llamada `absolutamenteNoEsMaster` y ¡que tu trabajo se pushee a la rama `master` del remoto!", "¡Claro que sí! Podés hacer que cualquier rama que quieras trackee `o/master`, y si lo hicieras, esa rama va a tener el mismo destino implícito de push y objetivo implícito de merge que `main`. Eso significa que podés correr `git push` en una rama llamada `absolutamenteNoEsMaster` y ¡que tu trabajo se pushee a la rama `main` del remoto!",
"", "",
"Hay dos formas de establecer esta propiedad. La primera es checkoutear una nueva rama usando una rama remota como la referencia especificada. Ejecutar", "Hay dos formas de establecer esta propiedad. La primera es checkoutear una nueva rama usando una rama remota como la referencia especificada. Ejecutar",
"", "",
@ -387,7 +387,7 @@ exports.level = {
"type": "ModalAlert", "type": "ModalAlert",
"options": { "options": {
"markdowns": [ "markdowns": [
"¡Ok! Para este nivel, pusheá tu trabajo a la rama `main` del remoto *sin* estar parado sobre `master` localmente. Te dejo que te des cuenta del resto solo, que para algo este es el curso avanzado :P" "¡Ok! Para este nivel, pusheá tu trabajo a la rama `main` del remoto *sin* estar parado sobre `main` localmente. Te dejo que te des cuenta del resto solo, que para algo este es el curso avanzado :P"
] ]
} }
} }
@ -401,10 +401,10 @@ exports.level = {
"markdowns": [ "markdowns": [
"### Ramas que trackean remotos", "### Ramas que trackean remotos",
"", "",
"Una de las cosas que te pueden haber parecido \"mágicas\" de las últimas lecciones es que git sabía que la rama `main` estaba relacionada con `o/master`. Obviamente, estas ramas tienen nombres parecidos, y podría parecer lógico conectar la rama `master` del remoto con la rama `master` local, pero esta conexión es bien evidente en dos escenarios:", "Una de las cosas que te pueden haber parecido \"mágicas\" de las últimas lecciones es que git sabía que la rama `main` estaba relacionada con `o/master`. Obviamente, estas ramas tienen nombres parecidos, y podría parecer lógico conectar la rama `main` del remoto con la rama `main` local, pero esta conexión es bien evidente en dos escenarios:",
"", "",
"* Durante una operación de pull, los commits se descargan a `o/master` y después se *mergean* a la rama `main`. El objetivo implícito del merge se determina con esta conexión.", "* Durante una operación de pull, los commits se descargan a `o/master` y después se *mergean* a la rama `main`. El objetivo implícito del merge se determina con esta conexión.",
"* Durante un push, el trabajo de la rama `main` se sube a la rama `master` del remoto (que estaba representada localmente por `o/master`). El *destino* del push se determina con esta conexión entre `master` y `o/master`.", "* Durante un push, el trabajo de la rama `main` se sube a la rama `main` del remoto (que estaba representada localmente por `o/master`). El *destino* del push se determina con esta conexión entre `main` y `o/master`.",
"" ""
] ]
} }
@ -415,7 +415,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Trackeando remotos", "## Trackeando remotos",
"", "",
"Resumiendo, esta conexión entre `main` y `o/master` se explica simplemente por la propiedad de \"trackear (seguir) remotos\" de las ramas. La rama `master` está configurada para trackear `o/master` -- osea, que hay un objetivo implícito para el merge y un destino implícito para de la rama `master`.", "Resumiendo, esta conexión entre `main` y `o/master` se explica simplemente por la propiedad de \"trackear (seguir) remotos\" de las ramas. La rama `main` está configurada para trackear `o/master` -- osea, que hay un objetivo implícito para el merge y un destino implícito para de la rama `main`.",
"", "",
"Podrías estar pensando cómo esa propiedad apareció en tu rama `main` si no ejecutaste ningún comando para especificarlo. Bueno, cuando clonas un repositorio con git, esta propiedad es asignada por ti automáticamente.", "Podrías estar pensando cómo esa propiedad apareció en tu rama `main` si no ejecutaste ningún comando para especificarlo. Bueno, cuando clonas un repositorio con git, esta propiedad es asignada por ti automáticamente.",
"", "",
@ -437,7 +437,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"### ¿Puedo especificarlo yo?", "### ¿Puedo especificarlo yo?",
"", "",
"¡Claro que sí! Puedes hacer que cualquier rama que quieras trackee `o/master`, y si lo hicieras, esa rama va a tener el mismo destino implícito de push y objetivo implícito de merge que `main`. Eso significa que puedes ejecutar `git push` en una rama llamada `absolutamenteNoEsMaster` y ¡que tu trabajo se pushee a la rama `master` del remoto!", "¡Claro que sí! Puedes hacer que cualquier rama que quieras trackee `o/master`, y si lo hicieras, esa rama va a tener el mismo destino implícito de push y objetivo implícito de merge que `main`. Eso significa que puedes ejecutar `git push` en una rama llamada `absolutamenteNoEsMaster` y ¡que tu trabajo se pushee a la rama `main` del remoto!",
"", "",
"Hay dos formas de establecer esta propiedad. La primera es hacer checkout sobre una nueva rama usando una rama remota como la referencia especificada. Ejecutar", "Hay dos formas de establecer esta propiedad. La primera es hacer checkout sobre una nueva rama usando una rama remota como la referencia especificada. Ejecutar",
"", "",
@ -507,7 +507,7 @@ exports.level = {
"type": "ModalAlert", "type": "ModalAlert",
"options": { "options": {
"markdowns": [ "markdowns": [
"¡Perfecto! Para este nivel, haz push de tu trabajo a la rama `main` del remoto *sin* estar parado sobre `master` localmente. Te dejo que te des cuenta del resto solo, que para algo este es el curso avanzado :P" "¡Perfecto! Para este nivel, haz push de tu trabajo a la rama `main` del remoto *sin* estar parado sobre `main` localmente. Te dejo que te des cuenta del resto solo, que para algo este es el curso avanzado :P"
] ]
} }
} }
@ -521,10 +521,10 @@ exports.level = {
"markdowns": [ "markdowns": [
"### Seguindo ramos remotos", "### Seguindo ramos remotos",
"", "",
"Uma coisa que pode ter parecido \"mágica\" nas lições passadas é que o Git sabia que o ramo `main` estava relacionado com o `o/master`. Certamente esses ramos possuem nomes similares, e tem todo sentido lógico conectar o ramo `master` do lado remoto com o ramo `master` local, mas essa conexão é demonstrada claramente em dois cenários:", "Uma coisa que pode ter parecido \"mágica\" nas lições passadas é que o Git sabia que o ramo `main` estava relacionado com o `o/master`. Certamente esses ramos possuem nomes similares, e tem todo sentido lógico conectar o ramo `main` do lado remoto com o ramo `main` local, mas essa conexão é demonstrada claramente em dois cenários:",
"", "",
"* Durante uma operação de pull, os commits são baixados em `o/master` e então são *mergidos* no ramo `main`. O alvo do merge é determinado a partir dessa conexão.", "* Durante uma operação de pull, os commits são baixados em `o/master` e então são *mergidos* no ramo `main`. O alvo do merge é determinado a partir dessa conexão.",
"* Durante uma operação de push, o trabalho do ramo `main` local é enviado para o ramo `master` remoto (que é representado localmente por `o/master`). O *destino* do push é determinado da conexão entre `master` e `o/master`.", "* Durante uma operação de push, o trabalho do ramo `main` local é enviado para o ramo `main` remoto (que é representado localmente por `o/master`). O *destino* do push é determinado da conexão entre `main` e `o/master`.",
"" ""
] ]
} }
@ -535,7 +535,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Remote tracking", "## Remote tracking",
"", "",
"Resumindo a história, essa conexão entre `main` e `o/master` é explicada pela propriedade de \"remote tracking\" dos ramos. O ramo `master` é configurado para seguir o ramo `o/master` -- isso significa que existe um alvo implícito de merge e um destino implícito de push para o ramo `master`.", "Resumindo a história, essa conexão entre `main` e `o/master` é explicada pela propriedade de \"remote tracking\" dos ramos. O ramo `main` é configurado para seguir o ramo `o/master` -- isso significa que existe um alvo implícito de merge e um destino implícito de push para o ramo `main`.",
"", "",
"Você pode estar se perguntando como essa propriedade foi configurada no ramo `main` se você não executou nenhum comando ordenando que isso fosse feito. Bem, quando você clona um repositório com o Git, essa propriedade é configurada para você automaticamente. ", "Você pode estar se perguntando como essa propriedade foi configurada no ramo `main` se você não executou nenhum comando ordenando que isso fosse feito. Bem, quando você clona um repositório com o Git, essa propriedade é configurada para você automaticamente. ",
"", "",
@ -555,7 +555,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"### Posso eu mesmo especificar isso?", "### Posso eu mesmo especificar isso?",
"", "",
"Sim, você pode! Você pode fazer com que qualquer ramo arbitrário siga o `o/master`, e se você fizer isso, esse ramo terá o mesmo destino de push implícito que e o mesmo alvo de merge que o `main`. Isso significa que você pode executar `git push` em um ramo chamado `realmenteNaoSouOMaster` e ainda assim ter seu trabalho enviado ao ramo `master` do repositório remoto!", "Sim, você pode! Você pode fazer com que qualquer ramo arbitrário siga o `o/master`, e se você fizer isso, esse ramo terá o mesmo destino de push implícito que e o mesmo alvo de merge que o `main`. Isso significa que você pode executar `git push` em um ramo chamado `realmenteNaoSouOMaster` e ainda assim ter seu trabalho enviado ao ramo `main` do repositório remoto!",
"", "",
"Há duas formas de configurar essa propriedade. A primeira consiste em fazer checkout de um novo ramo usando o ramo remoto como especificação de referência. Executar", "Há duas formas de configurar essa propriedade. A primeira consiste em fazer checkout de um novo ramo usando o ramo remoto como especificação de referência. Executar",
"", "",
@ -625,7 +625,7 @@ exports.level = {
"type": "ModalAlert", "type": "ModalAlert",
"options": { "options": {
"markdowns": [ "markdowns": [
"Ok! Para este nível, vamos fazer push no ramo remoto `main` *sem estar* em um checkout do `master` local. Vou deixar você descobrir o resto, já que isto é um curso avançado :P" "Ok! Para este nível, vamos fazer push no ramo remoto `main` *sem estar* em um checkout do `main` local. Vou deixar você descobrir o resto, já que isto é um curso avançado :P"
] ]
} }
} }
@ -639,10 +639,10 @@ exports.level = {
"markdowns": [ "markdowns": [
"### Ramas que trackean os remotos", "### Ramas que trackean os remotos",
"", "",
"Unha das cousas que poden semellar \"máxicas\" das últimas leccións é que git sabía que a rama `main` estaba relacionada co `o/master`. Obviamente, estas ramas teñen nomes semellantes, e podería semellar lóxico conectar a rama `master` do remoto ca rama `master` local, pero esta conexión é ben evidente nos dous escenarios:", "Unha das cousas que poden semellar \"máxicas\" das últimas leccións é que git sabía que a rama `main` estaba relacionada co `o/master`. Obviamente, estas ramas teñen nomes semellantes, e podería semellar lóxico conectar a rama `main` do remoto ca rama `main` local, pero esta conexión é ben evidente nos dous escenarios:",
"", "",
"* Durante unha operación de pull, os commits descarganse ó `o/master` e logo *mesturanse* á rama `main`. O obxectivo implícito do merge determinase con esta conexión.", "* Durante unha operación de pull, os commits descarganse ó `o/master` e logo *mesturanse* á rama `main`. O obxectivo implícito do merge determinase con esta conexión.",
"* Durante un push, o traballo da rama `main` súbese á rama `master` do remoto (que estaba representada localmente por `o/master`). O *destino* do push determinouse con esta conexión entre `master` e `o/master`.", "* Durante un push, o traballo da rama `main` súbese á rama `main` do remoto (que estaba representada localmente por `o/master`). O *destino* do push determinouse con esta conexión entre `main` e `o/master`.",
"" ""
] ]
} }
@ -653,7 +653,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Trackeando remotos", "## Trackeando remotos",
"", "",
"Facéndoa curta, esta conexión entre `main` e `o/master` ensínase pola propiedade de \"trackear (seguir) remotos\" das ramas. A rama `master` está configurada para trackear `o/master` -- o que quere dicir, que hai un obxectivo implícito para o merge e un destino implícito para a rama `master`.", "Facéndoa curta, esta conexión entre `main` e `o/master` ensínase pola propiedade de \"trackear (seguir) remotos\" das ramas. A rama `main` está configurada para trackear `o/master` -- o que quere dicir, que hai un obxectivo implícito para o merge e un destino implícito para a rama `main`.",
"", "",
"Poderías estar pensando cómo esa propiedade apareceu na túa rama `main` se ti non executaches ningún comando para especificalo. Bueno, cando clonas un repositorio co git, esta propiedade asignase por ti automáticamente.", "Poderías estar pensando cómo esa propiedade apareceu na túa rama `main` se ti non executaches ningún comando para especificalo. Bueno, cando clonas un repositorio co git, esta propiedade asignase por ti automáticamente.",
"", "",
@ -675,7 +675,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"### ¿Podo especificalo eu?", "### ¿Podo especificalo eu?",
"", "",
"¡Claro que sí! Podes facer que calquera rama que quixeras seguir `o/master`, e se o fixeras, esa rama vai ter o mesmo destino implícito de push e obxectivo implícito de merge que `main`. Eso significa que podes executar `git push` nunha rama chamada `nonMaster` e ¡que o teu traballo se empurre á rama `master` do remoto!", "¡Claro que sí! Podes facer que calquera rama que quixeras seguir `o/master`, e se o fixeras, esa rama vai ter o mesmo destino implícito de push e obxectivo implícito de merge que `main`. Eso significa que podes executar `git push` nunha rama chamada `nonMaster` e ¡que o teu traballo se empurre á rama `main` do remoto!",
"", "",
"Hai dúas formas de establecer esta propiedade. A primeira é facer checkout a unha nova rama empregando unha rama remota como a referencia especificada. Executar", "Hai dúas formas de establecer esta propiedade. A primeira é facer checkout a unha nova rama empregando unha rama remota como a referencia especificada. Executar",
"", "",
@ -745,7 +745,7 @@ exports.level = {
"type": "ModalAlert", "type": "ModalAlert",
"options": { "options": {
"markdowns": [ "markdowns": [
"¡Ok! Para este nivel, empurra o teu traballo á rama `main` do remoto *sen* estar parado sobre `master` localmente. Déixote que te decates do resto ti só, que para algo estás nun nivel avanzado :P" "¡Ok! Para este nivel, empurra o teu traballo á rama `main` do remoto *sen* estar parado sobre `main` localmente. Déixote que te decates do resto ti só, que para algo estás nun nivel avanzado :P"
] ]
} }
} }
@ -759,10 +759,10 @@ exports.level = {
"markdowns": [ "markdowns": [
"### remote tracking branch", "### remote tracking branch",
"", "",
"在之前的課程中,有一件事情看起來很\"神奇\",那就是 git 知道 `main` branch 是對應到 `o/master` branch。當然這些 branch 有類似的名稱,所以可以大概猜到, local 的 `master` branch 可以對應到 remote 的 `master branch`,但是我們是在兩種情況下可以確定有這個對應關係:", "在之前的課程中,有一件事情看起來很\"神奇\",那就是 git 知道 `main` branch 是對應到 `o/master` branch。當然這些 branch 有類似的名稱,所以可以大概猜到, local 的 `main` branch 可以對應到 remote 的 `master branch`,但是我們是在兩種情況下可以確定有這個對應關係:",
"", "",
"* 在使用 `pull` 的時候,下載 commit 到 `o/master`,並且 `merge` 這些 commit 到 `main` branch這就表示這個 merge 的目標是決定於這個對應關係。", "* 在使用 `pull` 的時候,下載 commit 到 `o/master`,並且 `merge` 這些 commit 到 `main` branch這就表示這個 merge 的目標是決定於這個對應關係。",
"* 在使用 `push` 的時候,在 `main` branch 上面的 commit 被 push 到 remote 上面的 `master` branch (它在 local 被表示成 `o/master`),這就表示 push 的目標是決定於 `master` 以及 `o/master` 之間的對應關係。", "* 在使用 `push` 的時候,在 `main` branch 上面的 commit 被 push 到 remote 上面的 `main` branch (它在 local 被表示成 `o/master`),這就表示 push 的目標是決定於 `main` 以及 `o/master` 之間的對應關係。",
"" ""
] ]
} }
@ -773,7 +773,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Remote tracking", "## Remote tracking",
"", "",
"長話短說,我們可以用 branch 上面的 \"remote tracking\" 特性來表示介於 `main` 以及 `o/master` 的對應關係,`master` branch 被設定用來追蹤track `o/master`,這就表示對於 `master` branch 來說的話,有一個 merge 的目標以及 push 的目標。", "長話短說,我們可以用 branch 上面的 \"remote tracking\" 特性來表示介於 `main` 以及 `o/master` 的對應關係,`main` branch 被設定用來追蹤track `o/master`,這就表示對於 `main` branch 來說的話,有一個 merge 的目標以及 push 的目標。",
"", "",
"你可能會覺得很奇怪,當你沒有下任何指令去設定的時候,關於 `main` branch 的對應關係是如何被設定的。喔!其實當你 clone 一個 repo 的時候,其實就已經自動幫你做設定了。 ", "你可能會覺得很奇怪,當你沒有下任何指令去設定的時候,關於 `main` branch 的對應關係是如何被設定的。喔!其實當你 clone 一個 repo 的時候,其實就已經自動幫你做設定了。 ",
"", "",
@ -793,7 +793,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"### 我可以自己設定嗎?", "### 我可以自己設定嗎?",
"", "",
"是的你可以!你可以設定任何的 branch 來 track `o/master` 假如你真的這麼做的話,那麼該 branch 的 push 及 merge 的目標就會跟 `main` 一樣。這就表示說你可以在 `totallyNotMaster` branch 上面執行 `git push`,並且 push 你的 commit 到 remote 的 `master` branch", "是的你可以!你可以設定任何的 branch 來 track `o/master` 假如你真的這麼做的話,那麼該 branch 的 push 及 merge 的目標就會跟 `main` 一樣。這就表示說你可以在 `totallyNotMaster` branch 上面執行 `git push`,並且 push 你的 commit 到 remote 的 `main` branch",
"", "",
"有兩個方式可以設定,第一個就是藉由參考一個 remote branch 來 checkout 一個新的 branch。執行", "有兩個方式可以設定,第一個就是藉由參考一個 remote branch 來 checkout 一個新的 branch。執行",
"", "",
@ -863,7 +863,7 @@ exports.level = {
"type": "ModalAlert", "type": "ModalAlert",
"options": { "options": {
"markdowns": [ "markdowns": [
"好!在這個關卡中,我們要 push 我們的 commit 到 remote 上面的 `main` branch但是我們*不* checkout 到 local 的 `master` branch。因為這是一個進階的課程所以我會讓你明白其它的東西。:P" "好!在這個關卡中,我們要 push 我們的 commit 到 remote 上面的 `main` branch但是我們*不* checkout 到 local 的 `main` branch。因為這是一個進階的課程所以我會讓你明白其它的東西。:P"
] ]
} }
} }
@ -880,7 +880,7 @@ exports.level = {
"在前几节课程中有件事儿挺神奇的Git 好像知道 `main` 与 `o/master` 是相关的。当然这些分支的名字是相似的,可能会让你觉得是依此将远程分支 master 和本地的 master 分支进行了关联。这种关联在以下两种情况下可以清楚地得到展示:", "在前几节课程中有件事儿挺神奇的Git 好像知道 `main` 与 `o/master` 是相关的。当然这些分支的名字是相似的,可能会让你觉得是依此将远程分支 master 和本地的 master 分支进行了关联。这种关联在以下两种情况下可以清楚地得到展示:",
"", "",
"* pull 操作时, 提交记录会被先下载到 o/master 上,之后再合并到本地的 master 分支。隐含的合并目标由这个关联确定的。", "* pull 操作时, 提交记录会被先下载到 o/master 上,之后再合并到本地的 master 分支。隐含的合并目标由这个关联确定的。",
"* push 操作时, 我们把工作从 `main` 推到远程仓库中的 `master` 分支(同时会更新远程分支 `o/master`) 。这个推送的目的地也是由这种关联确定的!", "* push 操作时, 我们把工作从 `main` 推到远程仓库中的 `main` 分支(同时会更新远程分支 `o/master`) 。这个推送的目的地也是由这种关联确定的!",
"" ""
] ]
} }
@ -891,7 +891,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## 远程跟踪", "## 远程跟踪",
"", "",
"直接了当地讲,`main` 和 `o/master` 的关联关系就是由分支的“remote tracking”属性决定的。`master` 被设定为跟踪 `o/master` —— 这意味着为 `master` 分支指定了推送的目的地以及拉取后合并的目标。", "直接了当地讲,`main` 和 `o/master` 的关联关系就是由分支的“remote tracking”属性决定的。`main` 被设定为跟踪 `o/master` —— 这意味着为 `main` 分支指定了推送的目的地以及拉取后合并的目标。",
"", "",
"你可能想知道 `main` 分支上这个属性是怎么被设定的,你并没有用任何命令指定过这个属性呀!好吧, 当你克隆仓库的时候, Git 就自动帮你把这个属性设置好了。", "你可能想知道 `main` 分支上这个属性是怎么被设定的,你并没有用任何命令指定过这个属性呀!好吧, 当你克隆仓库的时候, Git 就自动帮你把这个属性设置好了。",
"", "",
@ -912,7 +912,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"### 我能自己指定这个属性吗?", "### 我能自己指定这个属性吗?",
"", "",
"当然可以啦!你可以让任意分支跟踪 `o/master`, 然后该分支会像 `main` 分支一样得到隐含的 push 目的地以及 merge 的目标。 这意味着你可以在分支 `totallyNotMaster` 上执行 `git push`,将工作推送到远程仓库的 `master` 分支上。", "当然可以啦!你可以让任意分支跟踪 `o/master`, 然后该分支会像 `main` 分支一样得到隐含的 push 目的地以及 merge 的目标。 这意味着你可以在分支 `totallyNotMaster` 上执行 `git push`,将工作推送到远程仓库的 `main` 分支上。",
"", "",
"有两种方法设置这个属性,第一种就是通过远程分支检出一个新的分支,执行: ", "有两种方法设置这个属性,第一种就是通过远程分支检出一个新的分支,执行: ",
"", "",
@ -942,7 +942,7 @@ exports.level = {
"git push 同样适用" "git push 同样适用"
], ],
"afterMarkdowns": [ "afterMarkdowns": [
"我们将一个并不叫 `main` 的分支上的工作推送到了远程仓库中的 `master` 分支上" "我们将一个并不叫 `main` 的分支上的工作推送到了远程仓库中的 `main` 分支上"
], ],
"command": "git checkout -b foo o/master; git commit; git push", "command": "git checkout -b foo o/master; git commit; git push",
"beforeCommand": "git clone" "beforeCommand": "git clone"
@ -982,7 +982,7 @@ exports.level = {
"type": "ModalAlert", "type": "ModalAlert",
"options": { "options": {
"markdowns": [ "markdowns": [
"OK! 本节我们在**不**检出 `main` 分支的情况下将工作推送到的远程仓库中的 `master` 分支上。因为这是高级课程, 就不做过多的提示了! :P" "OK! 本节我们在**不**检出 `main` 分支的情况下将工作推送到的远程仓库中的 `main` 分支上。因为这是高级课程, 就不做过多的提示了! :P"
] ]
} }
} }
@ -999,7 +999,7 @@ exports.level = {
"In den letzten paar Leveln wirkte es womöglich etwas \"magisch\", dass Git automatisch wusste, dass der Branch `main` irgendwie mit `o/master` verwandt ist. Klar, sie haben ähnliche Namen und daher mag es logisch erscheinen sie in Verbindung zu bringen, aber offensichtlich wird es in zwei Szenarien:", "In den letzten paar Leveln wirkte es womöglich etwas \"magisch\", dass Git automatisch wusste, dass der Branch `main` irgendwie mit `o/master` verwandt ist. Klar, sie haben ähnliche Namen und daher mag es logisch erscheinen sie in Verbindung zu bringen, aber offensichtlich wird es in zwei Szenarien:",
"", "",
"* Beim `pull` werden Commits in `o/master` heruntergeladen und dann per *Merge* in den Branch `main` gebracht. Aus der Verbindung zwischen den beiden Branches leitet sich das Ziel des Merges ab.", "* Beim `pull` werden Commits in `o/master` heruntergeladen und dann per *Merge* in den Branch `main` gebracht. Aus der Verbindung zwischen den beiden Branches leitet sich das Ziel des Merges ab.",
"* Beim `push` werden Commits vom `main` auf den `master` des Remote Servers geschoben (und die Änderung _danach_ im lokalen `o/master` Branch abgebildet). Das *Ziel* des Push wird aus der Verbindung zwischen `master` und `o/master` abgeleitet.", "* Beim `push` werden Commits vom `main` auf den `main` des Remote Servers geschoben (und die Änderung _danach_ im lokalen `o/master` Branch abgebildet). Das *Ziel* des Push wird aus der Verbindung zwischen `main` und `o/master` abgeleitet.",
"" ""
] ]
} }
@ -1008,9 +1008,9 @@ exports.level = {
"type": "ModalAlert", "type": "ModalAlert",
"options": { "options": {
"markdowns": [ "markdowns": [
"Langer Rede kurzer Sinn, die Verbindung zwischen `main` und `o/master` ist einfach die Eigenschaft des \"Remote Tracking\" von Branches. `master` ist so eingestellt, dass er `o/master` trackt -- das heißt es gibt ein implizites Ziel für `pull` und `push` Operationen auf dem `master` Branch.", "Langer Rede kurzer Sinn, die Verbindung zwischen `main` und `o/master` ist einfach die Eigenschaft des \"Remote Tracking\" von Branches. `main` ist so eingestellt, dass er `o/master` trackt -- das heißt es gibt ein implizites Ziel für `pull` und `push` Operationen auf dem `main` Branch.",
"", "",
"Du fragst dich vielleicht wieso diese Eigenschaft auf dem `main` definiert ist, wenn du das doch gar nicht explizit gemacht hast. Naja, beim Clonen eines Repository macht Git das für den `master` automatisch.", "Du fragst dich vielleicht wieso diese Eigenschaft auf dem `main` definiert ist, wenn du das doch gar nicht explizit gemacht hast. Naja, beim Clonen eines Repository macht Git das für den `main` automatisch.",
"", "",
"Während des Clonens erstellt Git einen Remote Branch für jeden Branch, den es auf dem Remote Server findet (also Branches wie `o/master`); dann erstellt es für den Branch, auf den auf dem entfernten Server `HEAD` zeigt (meistens `main`) automatisch einen lokalen Branch und stellt ihn so ein, dass er sein Gegenstück auf dem Server trackt. Deswegen hast du beim clonen vielleicht schon mal dies gesehen:", "Während des Clonens erstellt Git einen Remote Branch für jeden Branch, den es auf dem Remote Server findet (also Branches wie `o/master`); dann erstellt es für den Branch, auf den auf dem entfernten Server `HEAD` zeigt (meistens `main`) automatisch einen lokalen Branch und stellt ihn so ein, dass er sein Gegenstück auf dem Server trackt. Deswegen hast du beim clonen vielleicht schon mal dies gesehen:",
"", "",
@ -1024,7 +1024,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"### Kann ich das auch selbst machen?", "### Kann ich das auch selbst machen?",
"", "",
"Na klar! Du kannst jeden beliebigen Branch so einstellen, dass er `o/master` trackt, und wenn du das tust wird der Branch dieselben impliziten Zielangaben für `push` und `pull` haben wie `main`. Du kannst also `git push` auf dem Branch `absolut_nicht_master` ausführen und deine Commits auf `master` des entfernten Servers schieben lassen.", "Na klar! Du kannst jeden beliebigen Branch so einstellen, dass er `o/master` trackt, und wenn du das tust wird der Branch dieselben impliziten Zielangaben für `push` und `pull` haben wie `main`. Du kannst also `git push` auf dem Branch `absolut_nicht_master` ausführen und deine Commits auf `main` des entfernten Servers schieben lassen.",
"", "",
"Es gibt zwei Möglichkeiten diese Eigenschaft zu definieren. Die erste ist, einen neuen lokalen Branch von einem Remote Branch auszuchecken. Wenn man", "Es gibt zwei Möglichkeiten diese Eigenschaft zu definieren. Die erste ist, einen neuen lokalen Branch von einem Remote Branch auszuchecken. Wenn man",
"", "",
@ -1094,7 +1094,7 @@ exports.level = {
"type": "ModalAlert", "type": "ModalAlert",
"options": { "options": {
"markdowns": [ "markdowns": [
"Ok. In diesem Level musst du Commits auf den `main` auf dem Server schieben, *ohne* den lokalen `master` ausgecheckt zu haben. Den Rest kannst du selbst herausfinden, schließlich ist das hier für Fortgeschrittene. :P" "Ok. In diesem Level musst du Commits auf den `main` auf dem Server schieben, *ohne* den lokalen `main` ausgecheckt zu haben. Den Rest kannst du selbst herausfinden, schließlich ist das hier für Fortgeschrittene. :P"
] ]
} }
} }
@ -1108,10 +1108,10 @@ exports.level = {
"markdowns": [ "markdowns": [
"### Удалённые-отслеживаемые ветки", "### Удалённые-отслеживаемые ветки",
"", "",
"Единственное, что могло бы показаться вам \"магией\" в нескольких предыдущих уроках - это то, как git знает, что ветка `main` соответствует `o/master`. Конечно, эти ветки имеют схожие имена и связь между локальной и удалённой ветками `master` выглядит вполне логично, однако, эта связь наглядно продемонстрирована в двух сценариях:", "Единственное, что могло бы показаться вам \"магией\" в нескольких предыдущих уроках - это то, как git знает, что ветка `main` соответствует `o/master`. Конечно, эти ветки имеют схожие имена и связь между локальной и удалённой ветками `main` выглядит вполне логично, однако, эта связь наглядно продемонстрирована в двух сценариях:",
"", "",
"* Во время операции pull коммиты скачиваются в ветку `o/master` и затем *соединяются* в ветку `main`. Подразумеваемая цель слияния определяется исходя из этой связи.", "* Во время операции pull коммиты скачиваются в ветку `o/master` и затем *соединяются* в ветку `main`. Подразумеваемая цель слияния определяется исходя из этой связи.",
"* Во время операции push наработки из ветки `main` закачиваются на удалённую ветку `master` (которая в локальном представлении выглядит как `o/master`). *Пункт назначения* операции push определяется исходя из связи между `master` и `o/master`.", "* Во время операции push наработки из ветки `main` закачиваются на удалённую ветку `main` (которая в локальном представлении выглядит как `o/master`). *Пункт назначения* операции push определяется исходя из связи между `main` и `o/master`.",
"" ""
] ]
} }
@ -1122,7 +1122,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Удалённые-отслеживаемые ветки", "## Удалённые-отслеживаемые ветки",
"", "",
"Короче, связь между `main` и `o/master` объясняется не иначе как свойство \"удалённое отслеживание\" веток. Ветка `master` настроена так, чтобы следить за `o/master` -- это подразумевает наличие источника для merge и пункта назначения для push в контексте ветки `master`.", "Короче, связь между `main` и `o/master` объясняется не иначе как свойство \"удалённое отслеживание\" веток. Ветка `main` настроена так, чтобы следить за `o/master` -- это подразумевает наличие источника для merge и пункта назначения для push в контексте ветки `main`.",
"", "",
"Вы, должно быть, удивлены, как это отслеживание появилось на ветке `main`, если мы не запускали ни одной специфической команды. На самом деле, когда вы клонируете репозиторий, это слежение включается автоматически.", "Вы, должно быть, удивлены, как это отслеживание появилось на ветке `main`, если мы не запускали ни одной специфической команды. На самом деле, когда вы клонируете репозиторий, это слежение включается автоматически.",
"", "",
@ -1144,7 +1144,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"### А могу ли я сделать это самостоятельно?", "### А могу ли я сделать это самостоятельно?",
"", "",
"Само собой! Вы можете сказать любой из веток, чтобы она отслеживала `o/master`, и если вы так сделаете, эта ветка будет иметь такой же пункт назначения для push и merge как и локальная ветка `main`. Это значит, что вы можете выполнить `git push`, находясь на ветке `totallyNotMaster`, и все ваши наработки с ветки `totallyNotMaster` будут закачены на ветку `master` удалённого репозитория!", "Само собой! Вы можете сказать любой из веток, чтобы она отслеживала `o/master`, и если вы так сделаете, эта ветка будет иметь такой же пункт назначения для push и merge как и локальная ветка `main`. Это значит, что вы можете выполнить `git push`, находясь на ветке `totallyNotMaster`, и все ваши наработки с ветки `totallyNotMaster` будут закачены на ветку `main` удалённого репозитория!",
"", "",
"Есть два способа сделать это. Первый - это выполнить checkout для новой ветки, указав удалённую ветку в качестве ссылки. Для этого необходимо выполнить команду", "Есть два способа сделать это. Первый - это выполнить checkout для новой ветки, указав удалённую ветку в качестве ссылки. Для этого необходимо выполнить команду",
"", "",
@ -1214,7 +1214,7 @@ exports.level = {
"type": "ModalAlert", "type": "ModalAlert",
"options": { "options": {
"markdowns": [ "markdowns": [
"Отлично! Для выполнения этого уровня давайте выполним push наших наработок в ветку `main` на удалённом репозитории, при этом *не* скачивая и не создавая ветку `master` локально. Я объясню вам оставшееся чуть позже, т.к. это продвинутый курс :P" "Отлично! Для выполнения этого уровня давайте выполним push наших наработок в ветку `main` на удалённом репозитории, при этом *не* скачивая и не создавая ветку `main` локально. Я объясню вам оставшееся чуть позже, т.к. это продвинутый курс :P"
] ]
} }
} }
@ -1228,10 +1228,10 @@ exports.level = {
"markdowns": [ "markdowns": [
"### リモートトラッキングブランチ", "### リモートトラッキングブランチ",
"", "",
"もしかしたら直近の幾つかの章で、あることが「魔法」に見えたかもしれません。それは、gitが`main`ブランチは`o/master`に関連していることを知っていたということです。確かにこれらのブランチは似た名前を持っていて、それは、リモートの`master`ブランチとローカルの`master`ブランチを繋ぐ論理的な意味を成すかもしれません。しかし、リモートトラッキングの関係が、次のような2つの手順を明確にしています:", "もしかしたら直近の幾つかの章で、あることが「魔法」に見えたかもしれません。それは、gitが`main`ブランチは`o/master`に関連していることを知っていたということです。確かにこれらのブランチは似た名前を持っていて、それは、リモートの`main`ブランチとローカルの`main`ブランチを繋ぐ論理的な意味を成すかもしれません。しかし、リモートトラッキングの関係が、次のような2つの手順を明確にしています:",
"", "",
"* プルの実行時は、コミットを`o/master`上にダウンロードし、`main`ブランチにそれを*マージ*します。マージの暗黙のターゲットは、リモートトラッキングの関係によって決められます。", "* プルの実行時は、コミットを`o/master`上にダウンロードし、`main`ブランチにそれを*マージ*します。マージの暗黙のターゲットは、リモートトラッキングの関係によって決められます。",
"* プッシュの実行時は、`main`ブランチの作業はリモートの`master`ブランチ(ローカルでは`o/master`によって表現されています)にプッシュされます。プッシュ動作の決定は、`master`と`o/master`のリモートトラッキングな関係から決定されます。", "* プッシュの実行時は、`main`ブランチの作業はリモートの`main`ブランチ(ローカルでは`o/master`によって表現されています)にプッシュされます。プッシュ動作の決定は、`main`と`o/master`のリモートトラッキングな関係から決定されます。",
"" ""
] ]
} }
@ -1242,7 +1242,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## リモートトラッキング", "## リモートトラッキング",
"", "",
"かいつまんでは、`main`と`o/master`の関係は、単にそれぞれのブランチの\"remote traking\"というプロパティによって説召されます。`master`ブランチには`o/master`を追跡しているというように設定されているのです。これは、`master`ブランチのための暗黙のプッシュ先と暗黙の取り込み先が存在することを意味します。", "かいつまんでは、`main`と`o/master`の関係は、単にそれぞれのブランチの\"remote traking\"というプロパティによって説召されます。`main`ブランチには`o/master`を追跡しているというように設定されているのです。これは、`main`ブランチのための暗黙のプッシュ先と暗黙の取り込み先が存在することを意味します。",
"", "",
"あなたは特に何も指定せずにコマンドを走らせていたのに、`main`ブランチにこのプロパティが設定されていたことに疑問を持つかもしれません。そう、gitによってリポジトリを複製した時、gitは実はこのプロパティを自動的に設定してくれるのです。", "あなたは特に何も指定せずにコマンドを走らせていたのに、`main`ブランチにこのプロパティが設定されていたことに疑問を持つかもしれません。そう、gitによってリポジトリを複製した時、gitは実はこのプロパティを自動的に設定してくれるのです。",
"", "",
@ -1262,7 +1262,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"### 私は自分でトラッキングを設定できますか?", "### 私は自分でトラッキングを設定できますか?",
"", "",
"はい、できます!あなたは、全てのブランチについて`o/master`との追跡を設定でき、もしそうした時は、同じ暗黙のプッシュ先と取り込み先を`main`として設定します。これは、例えば`tottallyNotMaster`という名前のブランチで`git push`を走らせ、作業をリモートの`master`ブランチにプッシュするといったことができるということを意味しています!", "はい、できます!あなたは、全てのブランチについて`o/master`との追跡を設定でき、もしそうした時は、同じ暗黙のプッシュ先と取り込み先を`main`として設定します。これは、例えば`tottallyNotMaster`という名前のブランチで`git push`を走らせ、作業をリモートの`main`ブランチにプッシュするといったことができるということを意味しています!",
"", "",
"このプロパティを設定するには2つの方法があります。一つ目は、リモートブランチのリファレンスを使用して新しいブランチをチェックアウトするというものです。例えば次のコマンドを走らせてます", "このプロパティを設定するには2つの方法があります。一つ目は、リモートブランチのリファレンスを使用して新しいブランチをチェックアウトするというものです。例えば次のコマンドを走らせてます",
"", "",
@ -1332,7 +1332,7 @@ exports.level = {
"type": "ModalAlert", "type": "ModalAlert",
"options": { "options": {
"markdowns": [ "markdowns": [
"OKこのレベルでは、ローカルで`main`にチェックアウトしていない状態で、リモートの`master`ブランチに作業をプッシュしてみましょう。これは高度な課題ですから、理解するのに少し時間をおく必要があると言っておきます:P" "OKこのレベルでは、ローカルで`main`にチェックアウトしていない状態で、リモートの`main`ブランチに作業をプッシュしてみましょう。これは高度な課題ですから、理解するのに少し時間をおく必要があると言っておきます:P"
] ]
} }
} }
@ -1346,10 +1346,10 @@ exports.level = {
"markdowns": [ "markdowns": [
"### 원격-추적 브랜치", "### 원격-추적 브랜치",
"", "",
"지난 몇개의 레슨에서 \"마법\"처럼 보일 수 있는게 하나 있었는데, git이 `main`브랜치가 `o/master`와 연관 되어있는걸 안다는 것입니다. 물론 이 두 브랜치가 이름이 비슷하기 때문에 로컬 `master`브랜치가 원격의 `master`브랜치와 연결 되어있다고 하자면 어찌 논리적으로 말이 되긴 합니다만..., 이 연결은 두가지 시나리오를 통해 뚜렷하게 확인이 됩니다:", "지난 몇개의 레슨에서 \"마법\"처럼 보일 수 있는게 하나 있었는데, git이 `main`브랜치가 `o/master`와 연관 되어있는걸 안다는 것입니다. 물론 이 두 브랜치가 이름이 비슷하기 때문에 로컬 `main`브랜치가 원격의 `main`브랜치와 연결 되어있다고 하자면 어찌 논리적으로 말이 되긴 합니다만..., 이 연결은 두가지 시나리오를 통해 뚜렷하게 확인이 됩니다:",
"", "",
"* pull 작업을 하는 도중, 커밋들은 `o/master`에 내려받아 지고 그다음 `main` 브랜치로 *merge*됩니다. merge에서 내재된 타겟은 이 연결에서 결정합니다.", "* pull 작업을 하는 도중, 커밋들은 `o/master`에 내려받아 지고 그다음 `main` 브랜치로 *merge*됩니다. merge에서 내재된 타겟은 이 연결에서 결정합니다.",
"* push 작업을 하는 도중, `main` 브랜치의 작업은 원격의 `master`브랜치(로컬에서 `o/master`로 표현되는)로 push 됩니다. push의 *목적지*는 master와 `o/master`의 연결에서 결정됩니다.", "* push 작업을 하는 도중, `main` 브랜치의 작업은 원격의 `main`브랜치(로컬에서 `o/master`로 표현되는)로 push 됩니다. push의 *목적지*는 master와 `o/master`의 연결에서 결정됩니다.",
"" ""
] ]
} }
@ -1360,7 +1360,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## 원격 추적", "## 원격 추적",
"", "",
"간단히 말해서, 이 `main`와 `o/master`사이의 연결은 브랜치의 \"원격 추적\" 속성을 통해 간단하게 설명됩니다. `master`브랜치는 `o/master`브랜치를 추적하도록 설정되어 있습니다 -- 이것은 `master`가 merge와 push할 내재된 목적지가 생겼다는 뜻 입니다.", "간단히 말해서, 이 `main`와 `o/master`사이의 연결은 브랜치의 \"원격 추적\" 속성을 통해 간단하게 설명됩니다. `main`브랜치는 `o/master`브랜치를 추적하도록 설정되어 있습니다 -- 이것은 `main`가 merge와 push할 내재된 목적지가 생겼다는 뜻 입니다.",
"", "",
"여러분은 어떻게 이 속성을 지정해주는 그 어떤 명령어 없이 `main` 브랜치에 설정되있는지 궁금할것 입니다. 사실, 여러분이 git으로 저장소를 clone할때 이 속성이 여러분을 위해 자동으로 설정 됩니다.", "여러분은 어떻게 이 속성을 지정해주는 그 어떤 명령어 없이 `main` 브랜치에 설정되있는지 궁금할것 입니다. 사실, 여러분이 git으로 저장소를 clone할때 이 속성이 여러분을 위해 자동으로 설정 됩니다.",
"", "",
@ -1380,7 +1380,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"### 내 스스로 지정할수도 있나요?", "### 내 스스로 지정할수도 있나요?",
"", "",
"당연하죠! 여러분은 아무 임의의 브랜치를 `o/master`를 추적하게 만들 수 있습니다. 이렇게 하면 이 브랜치 또한 내재된 push,merge 목적지를 `main`로 할 것입니다. 여러분은 이제 `totallyNotMaster`라는 브랜치에서 `git push`를 수행해서 원격 저장소의 브랜치 `master`로 작업을 push할 수 있습니다!", "당연하죠! 여러분은 아무 임의의 브랜치를 `o/master`를 추적하게 만들 수 있습니다. 이렇게 하면 이 브랜치 또한 내재된 push,merge 목적지를 `main`로 할 것입니다. 여러분은 이제 `totallyNotMaster`라는 브랜치에서 `git push`를 수행해서 원격 저장소의 브랜치 `main`로 작업을 push할 수 있습니다!",
"", "",
"이 속성을 설정하는데에는 두가지 방법이 있습니다. 첫 번째는 지정한 원격 브랜치를 참조해서 새로운 브랜치를 생성하여 checkout 하는 방법 입니다. 다음을 실행하면", "이 속성을 설정하는데에는 두가지 방법이 있습니다. 첫 번째는 지정한 원격 브랜치를 참조해서 새로운 브랜치를 생성하여 checkout 하는 방법 입니다. 다음을 실행하면",
"", "",
@ -1450,7 +1450,7 @@ exports.level = {
"type": "ModalAlert", "type": "ModalAlert",
"options": { "options": {
"markdowns": [ "markdowns": [
" 이번 레벨에서는 로컬의 `main`브랜치가 아닌 다른 브랜치에서 작업을 원격 저장소의 `master`브랜치로 push하세요. 고급 과정이니 더 길게 설명하지는 않을게요 :p" " 이번 레벨에서는 로컬의 `main`브랜치가 아닌 다른 브랜치에서 작업을 원격 저장소의 `main`브랜치로 push하세요. 고급 과정이니 더 길게 설명하지는 않을게요 :p"
] ]
} }
} }
@ -1464,10 +1464,10 @@ exports.level = {
"markdowns": [ "markdowns": [
"### Гілки віддаленого стеження", "### Гілки віддаленого стеження",
"", "",
"Одна з речей в попередніх уроках, яка могла виглядати, наче \"магія\" -- це те, що гіт якось знає, що локальна гілка `main` відповідає віддаленій `o/master`. Звичайно, ці гілки мають схожі назви, і виглядає логічним співставити віддалену гілку `master` з локальною `master`, однак цей зв'язок найкраще видно в двох випадках:", "Одна з речей в попередніх уроках, яка могла виглядати, наче \"магія\" -- це те, що гіт якось знає, що локальна гілка `main` відповідає віддаленій `o/master`. Звичайно, ці гілки мають схожі назви, і виглядає логічним співставити віддалену гілку `main` з локальною `main`, однак цей зв'язок найкраще видно в двох випадках:",
"", "",
"* Під час операції `pull`, коміти попадають в `o/master`, а вже потім *мерджаться* в локальний `main`. Гілка в яку відбудеться мердж якраз і визначається цим зв'язком.", "* Під час операції `pull`, коміти попадають в `o/master`, а вже потім *мерджаться* в локальний `main`. Гілка в яку відбудеться мердж якраз і визначається цим зв'язком.",
"* Під час операції `push`, коміти з гілки `main` переносяться у віддалений `master` (який локально представлений як `o/master`). *Гілка-призначення* для `push` визначена зв'язком між `master` і `o/master`.", "* Під час операції `push`, коміти з гілки `main` переносяться у віддалений `main` (який локально представлений як `o/master`). *Гілка-призначення* для `push` визначена зв'язком між `main` і `o/master`.",
"" ""
] ]
} }
@ -1478,7 +1478,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Гілки віддаленого стеження", "## Гілки віддаленого стеження",
"", "",
"В двох словах, цей зв'язок між `main` та `o/master` і є тим \"віддаленим стеженням\", визначеним для гілки. Гілка `master` налаштована стежити за `o/master` -- це визначає неявну ціль для мерджу і неявне призначення під час операції `push` для гілки `master`.", "В двох словах, цей зв'язок між `main` та `o/master` і є тим \"віддаленим стеженням\", визначеним для гілки. Гілка `main` налаштована стежити за `o/master` -- це визначає неявну ціль для мерджу і неявне призначення під час операції `push` для гілки `main`.",
"", "",
"Ви можете подумати, а як же такий зв'язок було встановлено, якщо я не виконував жодної команди? Ну, коли гіт клонує репозиторій, він встановлює цей зв'язок автоматично.", "Ви можете подумати, а як же такий зв'язок було встановлено, якщо я не виконував жодної команди? Ну, коли гіт клонує репозиторій, він встановлює цей зв'язок автоматично.",
"", "",
@ -1498,7 +1498,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"### А можу я сам вибирати?", "### А можу я сам вибирати?",
"", "",
"Так, можеш! Ти можеш вибрати довільну гілку, яка слідкуватиме за `o/master`, і тоді для цієї гілки `push` та `merge` автоматично працюватимуть з `main`. Це означає, що виконання `git push` в гілці з назвою `totallyNotMaster` (зовсім не master) може зберегти локальні коміти у віддалену гілку `master`!", "Так, можеш! Ти можеш вибрати довільну гілку, яка слідкуватиме за `o/master`, і тоді для цієї гілки `push` та `merge` автоматично працюватимуть з `main`. Це означає, що виконання `git push` в гілці з назвою `totallyNotMaster` (зовсім не master) може зберегти локальні коміти у віддалену гілку `main`!",
"", "",
"Є два шляхи встановити такий зв'язок. Перший - створити нову гілку з явним вказанням зв'язку (за ким слідкувати). Виконання", "Є два шляхи встановити такий зв'язок. Перший - створити нову гілку з явним вказанням зв'язку (за ким слідкувати). Виконання",
"", "",
@ -1568,7 +1568,7 @@ exports.level = {
"type": "ModalAlert", "type": "ModalAlert",
"options": { "options": {
"markdowns": [ "markdowns": [
"Гаразд! На цьому рівні збережімо свою роботу у віддалену гілку `main` *без* переходу на локальну `master`. Про решту здогадайся сам, раз ти вже дойшов до цього рівня :P" "Гаразд! На цьому рівні збережімо свою роботу у віддалену гілку `main` *без* переходу на локальну `main`. Про решту здогадайся сам, раз ти вже дойшов до цього рівня :P"
] ]
} }
} }
@ -1582,10 +1582,10 @@ exports.level = {
"markdowns": [ "markdowns": [
"### Theo dõi nhánh từ xa", "### Theo dõi nhánh từ xa",
"", "",
"Trong những bài học vừa qua có một điểu có vẻ như là \"ma thuật\" đó là git lại biết được nhánh `main` có liên kết đến nhánh `o/master`. Đúng là chúng có tên tương tự và nhánh `master` ở kho chứa từ xa có kết nối đến nhánh `master` ở kho chứa địa phương có vẻ như là hợp lý, nhưng kết nối này được thể hiện rõ ràng trong 2 trường hợp:", "Trong những bài học vừa qua có một điểu có vẻ như là \"ma thuật\" đó là git lại biết được nhánh `main` có liên kết đến nhánh `o/master`. Đúng là chúng có tên tương tự và nhánh `main` ở kho chứa từ xa có kết nối đến nhánh `main` ở kho chứa địa phương có vẻ như là hợp lý, nhưng kết nối này được thể hiện rõ ràng trong 2 trường hợp:",
"", "",
"* Trong quá trình thực hiện thao tác kéo, các commit được tải xuống nhánh `o/master` và sau đó *hợp nhất* vào nhánh `main`. Mục tiêu hợp nhất dược ngầm định bởi kết nối này.", "* Trong quá trình thực hiện thao tác kéo, các commit được tải xuống nhánh `o/master` và sau đó *hợp nhất* vào nhánh `main`. Mục tiêu hợp nhất dược ngầm định bởi kết nối này.",
"* Trong quá trình thực hiện thao tác đẩy, thảnh quả trên nhánh `main` được đẩy lên nhánh `master` từ xa (sau dó được biểu thị bằng nhánh `o/master` ở kho chứa địa phương). *Đích đến* của lệnh đẩy được xác định bằng kết nối giữa nhánh `master` và nhánh `o/master`.", "* Trong quá trình thực hiện thao tác đẩy, thảnh quả trên nhánh `main` được đẩy lên nhánh `main` từ xa (sau dó được biểu thị bằng nhánh `o/master` ở kho chứa địa phương). *Đích đến* của lệnh đẩy được xác định bằng kết nối giữa nhánh `main` và nhánh `o/master`.",
"" ""
] ]
} }
@ -1596,7 +1596,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Theo dõi từ xa", "## Theo dõi từ xa",
"", "",
"Nói tóm lại, kết nối giữa nhánh `main` và nhánh `o/master` đơn giản được giải thích bằng thuộc tính \"theo dõi từ xa\" (\"remote tracking\") của các nhánh. Nhánh `master` được thiết lập để theo dõi nhánh `o/master` -- Điều này có nghĩa là nhánh `master` được chỉ định đích của lệnh đẩy và mục tiêu hợp nhất sau khi kéo.", "Nói tóm lại, kết nối giữa nhánh `main` và nhánh `o/master` đơn giản được giải thích bằng thuộc tính \"theo dõi từ xa\" (\"remote tracking\") của các nhánh. Nhánh `main` được thiết lập để theo dõi nhánh `o/master` -- Điều này có nghĩa là nhánh `main` được chỉ định đích của lệnh đẩy và mục tiêu hợp nhất sau khi kéo.",
"", "",
"Có thể bạn sẽ thắc mắc rằng tại sao thuộc tính này được thiết lập lên nhánh `main` trong khi bạn chẳng hề chạy một câu lệnh nào chỉ định điều này. Chà, khi bạn dùng git để nhân bản kho chứa, thì thuộc tính này đã được tự động thiết lập cho bạn rồi. ", "Có thể bạn sẽ thắc mắc rằng tại sao thuộc tính này được thiết lập lên nhánh `main` trong khi bạn chẳng hề chạy một câu lệnh nào chỉ định điều này. Chà, khi bạn dùng git để nhân bản kho chứa, thì thuộc tính này đã được tự động thiết lập cho bạn rồi. ",
"", "",
@ -1616,7 +1616,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"### Tôi có thể tự chỉ định chứ?", "### Tôi có thể tự chỉ định chứ?",
"", "",
"Tất nhiên là được chứ! Bạn có thế khiến bất kỳ nhánh nào theo dõi nhánh `o/master`, và nếu bạn làm vậy, nhánh đó sẽ được được chỉ định đích của lệnh đẩy và mục tiêu hợp nhất giống như nhánh `main`. Điều này có nghĩa là bạn có thể chạy lệnh `git push` trên nhánh có tên là `totallyNotMaster` và thành quả của bạn sẽ được đẩy lên nhánh `master` ở kho chứa từ xa!", "Tất nhiên là được chứ! Bạn có thế khiến bất kỳ nhánh nào theo dõi nhánh `o/master`, và nếu bạn làm vậy, nhánh đó sẽ được được chỉ định đích của lệnh đẩy và mục tiêu hợp nhất giống như nhánh `main`. Điều này có nghĩa là bạn có thể chạy lệnh `git push` trên nhánh có tên là `totallyNotMaster` và thành quả của bạn sẽ được đẩy lên nhánh `main` ở kho chứa từ xa!",
"", "",
"Có 2 cách để thiết lập thuộc tính này. Cách đầu tiên là chuyển sang một nhánh mới từ một nhánh từ xa bằng cách thực hiện", "Có 2 cách để thiết lập thuộc tính này. Cách đầu tiên là chuyển sang một nhánh mới từ một nhánh từ xa bằng cách thực hiện",
"", "",
@ -1686,7 +1686,7 @@ exports.level = {
"type": "ModalAlert", "type": "ModalAlert",
"options": { "options": {
"markdowns": [ "markdowns": [
"Được rồi! Ở cấp độ này hãy để thành quả lên nhánh `main` trên kho lưu trữ từ xa mà không chuyển sang nhánh `master` tại kho địa phương. Hãy tự tìm ra cách nhé, giờ là khóa học nâng cao rồi :P" "Được rồi! Ở cấp độ này hãy để thành quả lên nhánh `main` trên kho lưu trữ từ xa mà không chuyển sang nhánh `main` tại kho địa phương. Hãy tự tìm ra cách nhé, giờ là khóa học nâng cao rồi :P"
] ]
} }
} }
@ -1700,10 +1700,10 @@ exports.level = {
"markdowns": [ "markdowns": [
"### Sledenje oddaljenih branchev", "### Sledenje oddaljenih branchev",
"", "",
"Stvar, ki se je morda zdela \"čarobna\" v zadnjih lekcijah je, da je git vedel, da je `main` branch povezan z `o/master`. Seveda imata brancha podobno ime in morda deluje logično, da se poveže `master` branch na oddaljenem repotu z lokalnim `master` branchem, toda ta povezava je jasno predstavljena v dveh scenarijih:", "Stvar, ki se je morda zdela \"čarobna\" v zadnjih lekcijah je, da je git vedel, da je `main` branch povezan z `o/master`. Seveda imata brancha podobno ime in morda deluje logično, da se poveže `main` branch na oddaljenem repotu z lokalnim `main` branchem, toda ta povezava je jasno predstavljena v dveh scenarijih:",
"", "",
"* Med pull operacijo so commiti preneseni na `o/master` in nato *zmergani* v `main` branch. Implicirana tarča merga je določena iz te povezave.", "* Med pull operacijo so commiti preneseni na `o/master` in nato *zmergani* v `main` branch. Implicirana tarča merga je določena iz te povezave.",
"* Med push operacijo je delo iz `main` brancha naloženo na oddaljen `master` branch (ki je bil prej predstavljen kot `o/master` lokalno). *Destinacija* pusha je določena iz povezave med `master` in `o/master`.", "* Med push operacijo je delo iz `main` brancha naloženo na oddaljen `main` branch (ki je bil prej predstavljen kot `o/master` lokalno). *Destinacija* pusha je določena iz povezave med `main` in `o/master`.",
"" ""
] ]
} }
@ -1714,7 +1714,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"## Sledenje oddaljenega repota", "## Sledenje oddaljenega repota",
"", "",
"Če povzamem, ta povezava med `main` in `o/master` je preprosto razložena z lastnostnjo \"oddaljenega sledenja\" branchev. `master` branch je nastavljen, da sledi `o/master` -- to pomeni, da obstaja impliciran cilj merga in impliciran cilj pusha za `master` branch.", "Če povzamem, ta povezava med `main` in `o/master` je preprosto razložena z lastnostnjo \"oddaljenega sledenja\" branchev. `main` branch je nastavljen, da sledi `o/master` -- to pomeni, da obstaja impliciran cilj merga in impliciran cilj pusha za `main` branch.",
"", "",
"Morda se sprašuješ, kako se je nastavila ta lastnost na `main` branchu, čeprav nisi izvedel nobenega ukaza za to. No, ko kloniraš repo z gitom, je ta lastnost v bistvu nastavljena zate avtomatično. ", "Morda se sprašuješ, kako se je nastavila ta lastnost na `main` branchu, čeprav nisi izvedel nobenega ukaza za to. No, ko kloniraš repo z gitom, je ta lastnost v bistvu nastavljena zate avtomatično. ",
"", "",
@ -1734,7 +1734,7 @@ exports.level = {
"markdowns": [ "markdowns": [
"### Ali ga lahko določim sam?", "### Ali ga lahko določim sam?",
"", "",
"Seveda se da! Narediš lahko, da bilokateri branch sledi `o/master`. V tem primeru bo imel ta branch enak impliciran cilj za push in merge kot `main`. To pomeni, da lahko poženeš `git push` na branchu poimenovanem `splohNiMaster` in pushas svoje delo na `master` branch na oddaljenem repotu!", "Seveda se da! Narediš lahko, da bilokateri branch sledi `o/master`. V tem primeru bo imel ta branch enak impliciran cilj za push in merge kot `main`. To pomeni, da lahko poženeš `git push` na branchu poimenovanem `splohNiMaster` in pushas svoje delo na `main` branch na oddaljenem repotu!",
"", "",
"Obstajata dva načina, da nastaviš to lastnost. Prvi je, da checkoutaš nov branch z uporabo oddaljenega brancha kot določeno referenca. Izvedba", "Obstajata dva načina, da nastaviš to lastnost. Prvi je, da checkoutaš nov branch z uporabo oddaljenega brancha kot določeno referenca. Izvedba",
"", "",