PL translation added

This commit is contained in:
krzysiekwie@gmail.com 2021-10-23 15:55:59 +02:00
parent 1774eac7cb
commit bf5ad7b493
9 changed files with 779 additions and 110 deletions

View file

@ -10,14 +10,15 @@ exports.level = {
"es_AR": "Parámetros de fetch", "es_AR": "Parámetros de fetch",
"es_ES": "Parámetros de fetch", "es_ES": "Parámetros de fetch",
"pt_BR": "Parâmetros do fetch", "pt_BR": "Parâmetros do fetch",
"gl" : "Parámetros de fetch", "gl": "Parámetros de fetch",
"de_DE": "Optionen für Fetch", "de_DE": "Optionen für Fetch",
"ja" : "Fetchの引数", "ja": "Fetchの引数",
"ru_RU": "Аргументы для fetch", "ru_RU": "Аргументы для fetch",
"ko" : "Fetch의 인자들", "ko": "Fetch의 인자들",
"uk" : "Аргументи для fetch", "uk": "Аргументи для fetch",
"vi" : "Tham số fetch", "vi": "Tham số fetch",
"sl_SI": "Fetch argumenti" "sl_SI": "Fetch argumenti",
"pl": "Argumenty fetch"
}, },
"hint": { "hint": {
"en_US": "Pay attention how the commit ids may have swapped! You can read slides again with \"help level\"", "en_US": "Pay attention how the commit ids may have swapped! You can read slides again with \"help level\"",
@ -27,14 +28,15 @@ exports.level = {
"es_AR": "¡Prestá atención a cómo podrían haberse invertido los ids de los commits! Podés volver a leer toda la lección usando \"help level\"", "es_AR": "¡Prestá atención a cómo podrían haberse invertido los ids de los commits! Podés volver a leer toda la lección usando \"help level\"",
"es_ES": "¡Presta atención a cómo podrían haberse invertido los ids de los commits! Puedes volver a leer toda la lección usando \"help level\"", "es_ES": "¡Presta atención a cómo podrían haberse invertido los ids de los commits! Puedes volver a leer toda la lección usando \"help level\"",
"pt_BR": "Preste atenção em como os identificadores dos commits podem ter trocado! Você pode ler os slides novamente com \"help level\"", "pt_BR": "Preste atenção em como os identificadores dos commits podem ter trocado! Você pode ler os slides novamente com \"help level\"",
"gl" : "Preste atención en como poderían invertirse os ids dos commits! Podes volver ler toda a lección usando \"help level\"", "gl": "Preste atención en como poderían invertirse os ids dos commits! Podes volver ler toda a lección usando \"help level\"",
"de_DE": "Beachte wie die Commit IDs getauscht wurden! Du kannst den Einführungsdialog mit \"help level\" erneut anzeigen", "de_DE": "Beachte wie die Commit IDs getauscht wurden! Du kannst den Einführungsdialog mit \"help level\" erneut anzeigen",
"ja" : "コミットIDの入れ替わりに注意スライドを復習するには`help level`を実行", "ja": "コミットIDの入れ替わりに注意スライドを復習するには`help level`を実行",
"ru_RU": "Обратите внимание на то, как номера коммитов могут меняться! Вы можете прочесть слайды вновь, воспользовавшись командой \"help level\"", "ru_RU": "Обратите внимание на то, как номера коммитов могут меняться! Вы можете прочесть слайды вновь, воспользовавшись командой \"help level\"",
"ko" : "커밋 ID가 바뀔수도있으니 주의하세요! \"help level\"을 입력하면 슬라이드들을 다시 읽어볼수 있습니다.", "ko": "커밋 ID가 바뀔수도있으니 주의하세요! \"help level\"을 입력하면 슬라이드들을 다시 읽어볼수 있습니다.",
"uk" : "Зверни увагу на те, що номери комітів можуть змінюватися! Слайди уроку можна переглянути ще раз командою \"help level\"", "uk": "Зверни увагу на те, що номери комітів можуть змінюватися! Слайди уроку можна переглянути ще раз командою \"help level\"",
"vi" : "Lưu ý id của các commit bị tráo đổi, bạn có thể dùng \"help level\" để đọc lại hội thoại", "vi": "Lưu ý id của các commit bị tráo đổi, bạn có thể dùng \"help level\" để đọc lại hội thoại",
"sl_SI": "Bodi pozoren kako so se commit id-ji morda zamenjali! Ponovno lahko prebereš navodila z \"help level\"." "sl_SI": "Bodi pozoren kako so se commit id-ji morda zamenjali! Ponovno lahko prebereš navodila z \"help level\".",
"pl": "Zauważ, że identyfikatory commitów mogły zostać zamienione! Slajdy możesz przeczytać jeszcze raz po wpisaniu: \"help level\""
}, },
"startDialog": { "startDialog": {
"en_US": { "en_US": {
@ -1896,6 +1898,129 @@ exports.level = {
} }
} }
] ]
},
"pl": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Argumenty git fetch",
"",
"No to właśnie nauczyliśmy się o argumentach git push, o tym fajnym parametrze `<place>`, a nawet o refspec z dwukropkiem (`<źródło>:<cel>`). Czy możemy tę samą wiedzę zastosować też przy `git fetch`?",
"",
"No ba... Argumenty `git fetch` są w gruncie rzeczy *bardzo, bardzo* podobne do tych z `git push`. To ta sama idea, tyle że zastosowana w odwrotną stronę (przecież nie wysyłasz commitów, tylko je pobierasz).",
"",
"Powtórzmy krok po kroku na czym to polega..."
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"### Parametr `<place>` (miejsce)",
"",
"Jeśli w git fetch określisz miejsce, tak jak w tym poleceniu:",
"",
"`git fetch origin foo`",
"",
"Git przejdzie do gałęzi `foo` w zdalnym repozytorium, weźmie wszystkie commity, których brakuje lokalnie i zrzuci je nam na lokalną gałąź `o/foo`.",
"",
"Zobaczmy, jak to działa (tylko dla odświeżenia pamięci)."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Określając miejsce..."
],
"afterMarkdowns": [
"pobraliśmy tylko commity z `foo` i umieściliśmy je na `o/foo`."
],
"command": "git fetch origin foo",
"beforeCommand": "git branch foo; git clone; git fakeTeamwork foo 2"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Może się zastanawiasz, dlaczego Git zrzucił te commity na zdalną gałąź `o/foo`, a nie tylko na lokalną gałąź `foo`? Wydawało się, że parametr `<place>` to miejsce istniejące zarówno lokalnie, jak i na zdalnym repozytorium.",
"",
"Cóż... Git robi w tym miejscu bardzo wyjątkowy wyjątek, bo wie, że możesz mieć na gałęzi `foo` pracę, w której nie chcesz namieszać!!! Łączy się to z wcześniejszą lekcją o `git fetch`. To polecenie nie aktualizuje twoich lokalnych gałęzi - ono tylko pobiera commity (a ty możesz je sobie obejrzeć i scalić później).",
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"\"No to co się w takim razie stanie, jeśli samodzielnie określę źródło i cel za pomocą `<source>:<destination>`?\"",
"",
"Jeśli naprawdę czujesz wewnętrzną potrzebę, żeby robić fetch *bezpośrednio* na lokalną gałąź, to proszę bardzo, możesz wykorzystać refspec z dwukropkiem. Nie możesz tylko ściągnąć przy użyciu fetch commitów na aktualnie wybraną za pomocą checkout gałąź. Poza tym Git pozwoli ci zrobić, co chcesz..",
"",
"Jest jednak jeden haczyk -- `<źródło>` to teraz *zdalne* miejsce, a `<cel>` jest *lokalnym* miejscem, na które trafią commity. To dokładne przeciwieństwo git push, i to ma sens, skoro przenosimy teraz dane w odwrotnym kierunku!",
"",
"No ale w praktyce mało kto tak robi. Tłumaczę to głównie po to, żeby uzmysłowić ci, że `fetch` i `push` są dość podobne, tylko działają w odwrotne strony."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Zobaczmy, jak to szaleństwo działa:"
],
"afterMarkdowns": [
"Nieźle! Spójrz. Git zinterpretował `foo~1` jako miejsce na origin i pobrał z niego commity do `bar` (czyli lokalną gałąź). Zauważ, że ani `foo` ani `o/foo` nie zostały zaktualizowane, ponieważ określiliśmy cel."
],
"command": "git fetch origin foo~1:bar",
"beforeCommand": "git branch foo; git clone; git branch bar; git fakeTeamwork foo 2"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"A co, jeśli cel nie istnieje przed wykonaniem polecenia? Spójrzmy jeszcze na ostatni slajd, na którym `bar` na początku nie ma."
],
"afterMarkdowns": [
"Widzisz, to działa DOKŁADNIE jak git push. Git stworzył lokalnie cel przed wykonaniem fetch, dokładnie tak samo jak zrobiłby to na zdalnym repozytorium przed zrobieniem push (gdyby cel tam nie istniał)."
],
"command": "git fetch origin foo~1:bar",
"beforeCommand": "git branch foo; git clone; git fakeTeamwork foo 2"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Bez argumentów?",
"",
"Jeśli `git fetch` nie dostanie żadnych argumentów, to po prostu ściągnie wszystkie commity ze zdalnego repozytorium do wszystkich zdalnych gałęzi..."
],
"afterMarkdowns": [
"Niby proste, ale warto to zobaczyć chociaż raz."
],
"command": "git fetch",
"beforeCommand": "git branch foo; git clone; git fakeTeamwork foo; git fakeTeamwork main"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Dobra, dość gadania! Żeby ukończyć ten poziom, użyj fetch tylko do commitów określonych w wizualizacji celu. Pokombinuj trochę z tymi poleceniami!",
"",
"Dla obu poleceń fetch musisz określić źródło i cel. Przyjrzyj się dokładnie wizualizacji celu; identyfikatory mogą być zamienione miejscami!"
]
}
}
]
} }
} }
}; };

View file

@ -12,10 +12,11 @@ exports.level = {
"es_ES": "Crea la rama feature desde la rama main en local antes de restablecerlo para que sea el mismo que la rama main de origen", "es_ES": "Crea la rama feature desde la rama main en local antes de restablecerlo para que sea el mismo que la rama main de origen",
"pt_BR": "Crie o ramo feature a partir do ramo main no local antes de reestabelecê-lo para que seja o mesmo que o ramo main de origem", "pt_BR": "Crie o ramo feature a partir do ramo main no local antes de reestabelecê-lo para que seja o mesmo que o ramo main de origem",
"fr_FR": "Créer la branche feature à partir du main local, avant de la restaurer dans le même état que o/main", "fr_FR": "Créer la branche feature à partir du main local, avant de la restaurer dans le même état que o/main",
"ko" : "로컬 저장소의 main 브랜치로부터 feature 브랜치를 만드세요. 그리고 o/main과 같아질 수 있도록 로컬 저장소의 main 브랜치를 reset 하세요.", "ko": "로컬 저장소의 main 브랜치로부터 feature 브랜치를 만드세요. 그리고 o/main과 같아질 수 있도록 로컬 저장소의 main 브랜치를 reset 하세요.",
"sl_SI": "Naredi feature branch iz lokalnega masterja preden ga ponastaviš, da bo enak kot origin main.", "sl_SI": "Naredi feature branch iz lokalnega masterja preden ga ponastaviš, da bo enak kot origin main.",
"es_AR": "Crea la rama feature desde la rama main en local antes de restablecerlo para que sea el mismo que la rama main de origen.", "es_AR": "Crea la rama feature desde la rama main en local antes de restablecerlo para que sea el mismo que la rama main de origen.",
"ja": "mainブランチをoriginのmainと同じ状態になるようにリセットする前に、ローカルのmainからfeatureブランチを作成します。" "ja": "mainブランチをoriginのmainと同じ状態になるようにリセットする前に、ローカルのmainからfeatureブランチを作成します。",
"pl": "Stwórz boczną gałąź tematyczną (feature) z lokalnego main, a późnej zsynchronizuj ją z main na origin"
}, },
"name": { "name": {
"en_US": "Locked Main", "en_US": "Locked Main",
@ -27,10 +28,11 @@ exports.level = {
"es_ES": "Main bloqueado", "es_ES": "Main bloqueado",
"pt_BR": "Main bloqueado", "pt_BR": "Main bloqueado",
"fr_FR": "Main verrouillé", "fr_FR": "Main verrouillé",
"ko" : "잠겨버린 main 브랜치", "ko": "잠겨버린 main 브랜치",
"sl_SI": "Zaklenjen Main", "sl_SI": "Zaklenjen Main",
"es_AR": "Main bloqueado", "es_AR": "Main bloqueado",
"ja": "ロックされたmain" "ja": "ロックされたmain",
"pl": "Zablokowany main"
}, },
"startDialog": { "startDialog": {
"en_US": { "en_US": {
@ -564,5 +566,45 @@ exports.level = {
} }
] ]
}, },
"pl": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Remote odrzuca!",
"",
"Jeśli pracujesz w dużym zespole, to może się zdarzyć, że main będzie zablokowany i przed scaleniem zmian trzeba będzie zrobić pull request. Jeśli commitujesz bezpośrednio do lokalnego main i spróbujesz zrobić push, to możesz dostać wiadomość podobną do tej:",
"",
"```",
" ! [remote rejected] main -> main (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.)",
"```"
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Skąd to odrzucenie?",
"",
"Remote odrzuca pushowanie twoich commitów bezpośrednio do main ze względu na regułę wymagającą korzystania z pull requestów.",
"",
"Twoim zamiarem było najpierw stworzyć gałąź, a potem wypchnąć ją do zdalnego repozytorium i zrobić pull request, ale zamiast tego commitujesz bezpośrednio do main. Dlatego masz problem i nie możesz wypchnąć swoich zmian."
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Rozwiązanie",
"",
"Stwórz inną gałąź, nazywaną często boczną albo tematyczną, a po angielsku: feature (funkcyjną) i wypchnij ją do remote. Zresetuj również swój main, tak aby był zsynchronizowany ze zdalnym repozytorium. Jeśli tego nie zrobisz, to możesz mieć problem następnym razem, kiedy zrobisz pull, a czyjś commit będzie miał konflikt z twoim."
]
}
}
]
},
} }
}; };

View file

@ -9,15 +9,16 @@ exports.level = {
"es_AR": "Mergeando con los remotos", "es_AR": "Mergeando con los remotos",
"es_ES": "Haciendo merge con los remotos", "es_ES": "Haciendo merge con los remotos",
"pt_BR": "Merge com remotos", "pt_BR": "Merge com remotos",
"gl" : "Merge cos repos remotos", "gl": "Merge cos repos remotos",
"de_DE": "Änderungen vom Remote zusammenführen", "de_DE": "Änderungen vom Remote zusammenführen",
"ja" : "リモートとのmerge", "ja": "リモートとのmerge",
"fr_FR": "Fusionner avec les branches distantes", "fr_FR": "Fusionner avec les branches distantes",
"ru_RU": "Слияние с удалённым репозиторием", "ru_RU": "Слияние с удалённым репозиторием",
"ko" : "원격 작업과 merge하기", "ko": "원격 작업과 merge하기",
"uk" : "Мердж з віддаленим репозиторієм", "uk": "Мердж з віддаленим репозиторієм",
"vi" : "Hợp nhất nhánh từ xa", "vi": "Hợp nhất nhánh từ xa",
"sl_SI": "Merganje z oddaljenim repozitorijem" "sl_SI": "Merganje z oddaljenim repozitorijem",
"pl": "Scalanie z remote"
}, },
"hint": { "hint": {
"en_US": "Pay attention to the goal tree!", "en_US": "Pay attention to the goal tree!",
@ -26,15 +27,16 @@ exports.level = {
"es_AR": "¡Prestá atención al árbol final!", "es_AR": "¡Prestá atención al árbol final!",
"es_ES": "¡Presta atención al árbol final!", "es_ES": "¡Presta atención al árbol final!",
"pt_BR": "Preste atenção na árvore do objetivo!", "pt_BR": "Preste atenção na árvore do objetivo!",
"gl" : "Presta atención á arbore final!", "gl": "Presta atención á arbore final!",
"de_DE": "Beachte den Ziel-Baum!", "de_DE": "Beachte den Ziel-Baum!",
"ja" : "ゴールツリーをよく見てください!", "ja": "ゴールツリーをよく見てください!",
"fr_FR": "Respectez l'arbre représentant l'objectif !", "fr_FR": "Respectez l'arbre représentant l'objectif !",
"ru_RU": "Внимательно посмотрите на цель уровня!", "ru_RU": "Внимательно посмотрите на цель уровня!",
"ko" : "goal을 잘 살펴보세요!", "ko": "goal을 잘 살펴보세요!",
"uk" : "Уважно подивись як має виглядати результат!", "uk": "Уважно подивись як має виглядати результат!",
"vi" : "Hãy để ý đến cây mục tiêu!", "vi": "Hãy để ý đến cây mục tiêu!",
"sl_SI": "Poglej si ciljno drevo!" "sl_SI": "Poglej si ciljno drevo!",
"pl": "Zwróć uwagę, jak wygląda docelowe drzewo!"
}, },
"compareOnlyMain": true, "compareOnlyMain": true,
"startDialog": { "startDialog": {
@ -398,7 +400,7 @@ exports.level = {
} }
] ]
}, },
"zh_CN":{ "zh_CN": {
"childViews": [ "childViews": [
{ {
"type": "ModalAlert", "type": "ModalAlert",
@ -712,6 +714,51 @@ exports.level = {
} }
} }
] ]
},
"pl": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Dlaczego nie merge?",
"",
"Aby wypchnąć nowe wersje, musisz tylko *nanieść* najnowsze zmiany ze zdalnego repozytorium. A to znaczy, że możesz zrobić albo rebase, *albo* merge gałęzi w zdalnym repozytorium (np. `o/main`).",
"",
"Skoro można to zrobić na oba sposoby, to dlaczego lekcje skupiały się do tej pory na przebazowaniu? Dlaczego `merge` nie jest lubianym poleceniem przy pracy na zdalnych repo?",
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Wśród osób zajmujących się programowaniem toczą się spory, co jest lepsze: merge czy rebase. Oto ogólne za i przeciw rebase'owania:",
"",
"Za:",
"",
"* Przebazowanie sprawi, że twoje drzewo commitów będzie wyglądać bardzo czysto, ponieważ wszystko znajdzie się w jednej linii",
"",
"Przeciw:",
"",
"* Rebase zmienia (pozornie) historię drzewa commitów.",
"",
"Na przykład: commit `C1` można przebazować *za* `C3`. Pozornie będzie to wyglądać tak, jakby praca na `C1'` została wykonana później niż na `C3`, a w rzeczywistości było zupełnie odwrotnie.",
"",
"Część osób ceni sobie oryginalną historię i dlatego woli merdżować. Inni (w tym ja) wolą mieć czyste drzewo commitów i dlatego używają rebase. To po prostu kwestia osobistych preferencji :D"
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Na tym poziomie spróbujemy rozwiązać zadanie z poprzedniego, ale tym razem użyjemy *merge*. Może się to wydawać lekko pogmatwane, ale dobrze pokazuje tę metodę."
]
}
}
]
} }
} }
}; };

View file

@ -9,15 +9,16 @@ exports.level = {
"es_AR": "Parámetros de pull", "es_AR": "Parámetros de pull",
"es_ES": "Parámetros de pull", "es_ES": "Parámetros de pull",
"pt_BR": "Parâmetros do pull", "pt_BR": "Parâmetros do pull",
"gl" : "Parámetros de pull", "gl": "Parámetros de pull",
"de_DE": "Optionen für Pull", "de_DE": "Optionen für Pull",
"ja" : "Pullの引数", "ja": "Pullの引数",
"fr_FR": "Arguments de pull", "fr_FR": "Arguments de pull",
"ru_RU": "Аргументы для pull", "ru_RU": "Аргументы для pull",
"ko" : "pull 인자들", "ko": "pull 인자들",
"uk" : "Аргументи pull", "uk": "Аргументи pull",
"vi" : "Tham số pull", "vi": "Tham số pull",
"sl_SI": "Pull argumenti" "sl_SI": "Pull argumenti",
"pl": "Argumenty pull"
}, },
"hint": { "hint": {
"en_US": "Remember that you can create new local branches with fetch/pull arguments", "en_US": "Remember that you can create new local branches with fetch/pull arguments",
@ -26,15 +27,16 @@ exports.level = {
"es_AR": "Acordate de que podés crear nuevas ramas locales usando los parámetros de fetch/pull", "es_AR": "Acordate de que podés crear nuevas ramas locales usando los parámetros de fetch/pull",
"es_ES": "Recuerda que puedes crear nuevas ramas locales usando los parámetros de fetch/pull", "es_ES": "Recuerda que puedes crear nuevas ramas locales usando los parámetros de fetch/pull",
"pt_BR": "Lembre-se que você pode criar novos ramos locais com parâmetros de fetch/pull", "pt_BR": "Lembre-se que você pode criar novos ramos locais com parâmetros de fetch/pull",
"gl" : "Lémbrate que podes crear novas ramas locais con parámetros de fetch/pull", "gl": "Lémbrate que podes crear novas ramas locais con parámetros de fetch/pull",
"de_DE": "Du kannst neue lokale Branches mittels fetch / pull erstellen", "de_DE": "Du kannst neue lokale Branches mittels fetch / pull erstellen",
"ja" : "Fetchとpullの引数を利用してローカルで新規ブランチを作成できるのをお忘れなく", "ja": "Fetchとpullの引数を利用してローカルで新規ブランチを作成できるのをお忘れなく",
"fr_FR": "Vous pouvez aussi créer une nouvelle branche locale avec les arguments de fetch/pull", "fr_FR": "Vous pouvez aussi créer une nouvelle branche locale avec les arguments de fetch/pull",
"ru_RU": "Напоминаю, что новые ветки можно создавать и с помощью команд fetch/pull", "ru_RU": "Напоминаю, что новые ветки можно создавать и с помощью команд fetch/pull",
"ko" : "fetch/pull 과 인자들로 새 로컬 브랜치를 생성할수 있다는것을 기억하세요.", "ko": "fetch/pull 과 인자들로 새 로컬 브랜치를 생성할수 있다는것을 기억하세요.",
"uk" : "Пам'ятай, що ти можеш створювати нові гілки, використовуючи fetch/pull з аргументами", "uk": "Пам'ятай, що ти можеш створювати нові гілки, використовуючи fetch/pull з аргументами",
"vi" : "Nhớ rằng,bạn có thể tạo nhánh cục bộ mới với tham số của fetch/pull", "vi": "Nhớ rằng,bạn có thể tạo nhánh cục bộ mới với tham số của fetch/pull",
"sl_SI": "Zapomni si, da lahko ustvariš nove lokalne branche s fetch/pull argumenti." "sl_SI": "Zapomni si, da lahko ustvariš nove lokalne branche s fetch/pull argumenti.",
"pl": "Pamiętaj, że za pomocą argumentów fetch/pull możesz tworzyć nowe lokalne gałęzie"
}, },
"startDialog": { "startDialog": {
"en_US": { "en_US": {
@ -555,7 +557,7 @@ exports.level = {
} }
] ]
}, },
"zh_CN":{ "zh_CN": {
"childViews": [ "childViews": [
{ {
"type": "ModalAlert", "type": "ModalAlert",
@ -1155,6 +1157,80 @@ exports.level = {
} }
} }
] ]
},
"pl": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Argumenty git pull",
"",
"Teraz, kiedy wiesz już właściwie *wszystko*, co można wiedzieć o argumentach `git fetch` oraz `git push`, naprawdę nie zostało już prawie nic do omówienia przy `git pull` :)",
"",
"To dlatego, że w zasadzie git pull to *naprawdę* tylko skrót polecenia fetch i scalania wszystkiego, co zostało nim pobrane. Możesz to sobie wyobrazić jako uruchomienie git fetch z określonymi *tymi samymi* argumentami, a potem scalenie pobranych commitów *tam*, dokąd trafiły.",
"",
"I działa to w ten sposób, nawet jeśli określisz kompletnie szalone argumenty. Zobaczmy kilka przykładów:"
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Oto kilka równoważnych poleceń w Gicie:",
"",
"`git pull origin foo` nie różni się od:",
"",
"`git fetch origin foo; git merge o/foo`",
"",
"A...",
"",
"`git pull origin bar~1:bugFix` daje taki sam efekt jak:",
"",
"`git fetch origin bar~1:bugFix; git merge bugFix`",
"",
"Widzisz? git pull to naprawdę tylko skrót dla fetch + merge i jedyne, co się liczy dla git pull, to gdzie trafią commity (argument `celu`, który Git zinterpretuje sobie, wykonując fetch).",
"",
"Zobaczmy demo:"
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Jeśli określimy dla fetch miejsce, to wszystko potoczy się tak jak wcześniej, ale scalimy wszystko, co zostało pobrane przez fetch."
],
"afterMarkdowns": [
"Zobacz! Określając `main`, pobraliśmy commity do `o/main` tak jak zawsze. Potem scaliliśmy `o/main` z aktualnie wybranym miejscem, którym *nie* jest lokalna gałąź `main`. Właśnie z tego powodu może mieć sens wykonanie git pull wiele razy (z tymi samymi argumentami) z różnych lokalizacji, aby zaktualizować wiele gałęzi."
],
"command": "git pull origin main",
"beforeCommand": "git clone; go -b bar; git commit; git fakeTeamwork"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Czy w przypadku źródła i celu będzie tak samo? Jasne, że tak! Zobaczmy:"
],
"afterMarkdowns": [
"No nieźle, jedno polecenie, a tyle się dzieje. Stworzyliśmy nową lokalną gałąź `foo`, pobraliśmy commity ze zdalnej gałęzi `main` do `foo`, a potem jeszcze scaliliśmy ją z aktualnie wybraną gałęzią `bar`. Grubo ponad osiem tysięcy!"
],
"command": "git pull origin main:foo",
"beforeCommand": "git clone; git fakeTeamwork; go -b bar; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Oki, żeby ukończyć poziom, doprowadź drzewo do takiego stanu jak na wizualizacji. Musisz pobrać parę commitów, stworzyć kilka gałęzi i scalić je z innymi, ale nie powinno to wymagać zbyt wielu poleceń :P"
]
}
}
]
} }
} }
}; };

View file

@ -13,15 +13,16 @@ exports.level = {
"es_AR": "Parámetros de git push", "es_AR": "Parámetros de git push",
"es_ES": "Parámetros de git push", "es_ES": "Parámetros de git push",
"pt_BR": "Parâmetros do git push", "pt_BR": "Parâmetros do git push",
"gl" : "Parámetros de git push", "gl": "Parámetros de git push",
"de_DE": "Optionen für Git Push", "de_DE": "Optionen für Git Push",
"ja" : "Git pushの引数", "ja": "Git pushの引数",
"fr_FR": "Arguments de git push", "fr_FR": "Arguments de git push",
"ru_RU": "Аргументы git push", "ru_RU": "Аргументы git push",
"ko" : "git push의 인자들", "ko": "git push의 인자들",
"uk" : "Аргументи git push", "uk": "Аргументи git push",
"vi" : "Tham số git push", "vi": "Tham số git push",
"sl_SI": "Git push argumenti" "sl_SI": "Git push argumenti",
"pl": "Argumenty git push"
}, },
"hint": { "hint": {
"en_US": "You can always look at the last slide of the dialog with \"objective\"", "en_US": "You can always look at the last slide of the dialog with \"objective\"",
@ -30,15 +31,16 @@ exports.level = {
"es_AR": "Siempre podés ver el último mensaje tipeando \"objective\"", "es_AR": "Siempre podés ver el último mensaje tipeando \"objective\"",
"es_ES": "Siempre puedes ver el último mensaje escribiendo \"objective\"", "es_ES": "Siempre puedes ver el último mensaje escribiendo \"objective\"",
"pt_BR": "Você sempre pode rever o último slide com o comando \"objective\"", "pt_BR": "Você sempre pode rever o último slide com o comando \"objective\"",
"gl" : "Ti sempre podes desfacer último mensaxe escribindo \"objective\"", "gl": "Ti sempre podes desfacer último mensaxe escribindo \"objective\"",
"de_DE": "Du kannst dir die Zielsetzung des Levels immer wieder mit \"objective\" anzeigen lassen", "de_DE": "Du kannst dir die Zielsetzung des Levels immer wieder mit \"objective\" anzeigen lassen",
"ja" : "ダイアログの最後のスライドを参照するには\"objective\"を実行", "ja": "ダイアログの最後のスライドを参照するには\"objective\"を実行",
"fr_FR": "Vous pouvez toujours regarder le dernier slide des dialogues en tapant \"objective\".", "fr_FR": "Vous pouvez toujours regarder le dernier slide des dialogues en tapant \"objective\".",
"ru_RU": "Вы всегда можете ознакомиться с последним слайдом, воспользовавшись \"objective\".", "ru_RU": "Вы всегда можете ознакомиться с последним слайдом, воспользовавшись \"objective\".",
"ko" : "대화창의 마지막 슬라이드를 \"objective\"로 다시 볼 수 있습니다.", "ko": "대화창의 마지막 슬라이드를 \"objective\"로 다시 볼 수 있습니다.",
"uk" : "Завжди можна подивитися останній слайд діалогу за допомогою \"objective\"", "uk": "Завжди можна подивитися останній слайд діалогу за допомогою \"objective\"",
"vi" : "Bạn có thể sử dụng \"objective\" để đọc trang cuối của cửa sổ hộp thoại", "vi": "Bạn có thể sử dụng \"objective\" để đọc trang cuối của cửa sổ hộp thoại",
"sl_SI": "Vedno lahko pogledaš zadnji dialog z \"objective\"." "sl_SI": "Vedno lahko pogledaš zadnji dialog z \"objective\".",
"pl": "Możesz wpisać \"objective\", żeby zobaczyć ostatni slajd z każdego poziomu"
}, },
"startDialog": { "startDialog": {
"en_US": { "en_US": {
@ -548,7 +550,7 @@ exports.level = {
} }
] ]
}, },
"zh_CN":{ "zh_CN": {
"childViews": [ "childViews": [
{ {
"type": "ModalAlert", "type": "ModalAlert",
@ -1144,6 +1146,81 @@ exports.level = {
} }
} }
] ]
},
"en_US": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Argumenty push",
"",
"Świetnie! Teraz, kiedy wiesz już, jak działa śledzenie zdalnych gałęzi, możemy zacząć zgłębiać tajemnice pracy z git push, fetch i pull. Zmierzymy się z tymi poleceniami po kolei, ale idea działania każdego z nich jest bardzo podobna.",
"",
"Najpierw spójrzmy na `git push`. Z lekcji o remote tracking wiesz, że Git określa zdalne repozytorium *oraz* gałąź docelową dzięki właściwościom aktualnie wybranej gałęzi (\"śledzącej\" zdalną). Tak to działa, jeśli nie określisz żadnych argumentów, ale git push może też przyjąć opcjonalnie następujące argumenty:",
"",
"`git push <remote> <place>`",
"",
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Pytasz, czego dotyczy parametr `<place>`? Zaraz zajmiemy się tym konkretnie, ale najpierw przykład. Polecenie Gita:",
"",
"`git push origin main`",
"",
"to, mówiąc po ludzku:",
"",
"*Przejdź do gałęzi o nazwie \"main\" w moim repozytorium, weź wszystkie commity, a potem idź do gałęzi \"main\" na zdalnym repozytorium, które nazywa się \"origin\". Umieść na tej gałęzi wszystkie commity, których tam jeszcze nie ma, i daj znać, jak skończysz.*",
"",
"Wpisując `main` w miejscu argumentu \"place\" (miejsce), powiedzieliśmy Gitowi, *skąd ma wziąć* commity i *gdzie je umieścić*. To w zasadzie właśnie \"miejsce\", czyli \"lokalizacja\" do zsynchronizowania na obu repozytoriach.",
"",
"Pamiętaj, że skoro powiedzieliśmy Gitowi wszystko, co musi wiedzieć (podając oba argumenty), będzie kompletnie ignorować, jakie miejsce mamy aktualnie wybrane!"
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Spójrzmy na przykład określający argumenty. Zwróć uwagę na wybrany commit (checkout)."
],
"afterMarkdowns": [
"No i proszę! Zaktualizowaliśmy `main` na zdalnym repozytorium, ponieważ określiliśmy argumenty."
],
"command": "git checkout C0; git push origin main",
"beforeCommand": "git clone; git commit"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"A gdybyśmy nie określili argumentów? Co by się stało?"
],
"afterMarkdowns": [
"Polecenie (jak widzisz) nie działa, ponieważ `HEAD` nie jest wybrany na gałęzi śledzącej."
],
"command": "git checkout C0; git push",
"beforeCommand": "git clone; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Oki, na tym poziomie uaktualnijmy zarówno `foo`, jak i `main` na zdalnym repozytorium. Haczyk polega na tym, że zablokowaliśmy na tym poziomie `git checkout`!",
"",
"*Uwaga: Zdalne gałęzie mają przedrostek `o/`, ponieważ pełna nazwa `origin/` nie mieści się w naszym interfejsie. Nie przejmuj się tym... ",
"po prostu użyj `origin` jako nazwy zdalnego repozytorium.*"
]
}
}
]
} }
} }
}; };

View file

@ -9,15 +9,16 @@ exports.level = {
"es_AR": "¡Más! Parámetros de git push", "es_AR": "¡Más! Parámetros de git push",
"es_ES": "¡Más! Parámetros de git push", "es_ES": "¡Más! Parámetros de git push",
"pt_BR": "Parâmetros do git push -- expandido", "pt_BR": "Parâmetros do git push -- expandido",
"gl" : "Parámetros de git push -- ampliado", "gl": "Parámetros de git push -- ampliado",
"de_DE": "Optionen für Git Push -- noch mehr!", "de_DE": "Optionen für Git Push -- noch mehr!",
"ja" : "Git pushの引数 -- 拡張編!", "ja": "Git pushの引数 -- 拡張編!",
"fr_FR": "Arguments de git push -- toujours plus !", "fr_FR": "Arguments de git push -- toujours plus !",
"ru_RU": "Аргументы для push -- расширенная версия!", "ru_RU": "Аргументы для push -- расширенная версия!",
"ko" : "git push 인자 -- 확장판!", "ko": "git push 인자 -- 확장판!",
"uk" : "Розширені аргументи git push!", "uk": "Розширені аргументи git push!",
"vi" : "Tham số git push -- bản mở rộng!", "vi": "Tham số git push -- bản mở rộng!",
"sl_SI": "Git push argumenti -- Razširjeni!" "sl_SI": "Git push argumenti -- Razširjeni!",
"pl": "Argumenty git push -- Głębiej!"
}, },
"hint": { "hint": {
"en_US": "Remember you can admit defeat and type in \"show solution\" :P", "en_US": "Remember you can admit defeat and type in \"show solution\" :P",
@ -26,15 +27,16 @@ exports.level = {
"es_AR": "Recordá que podés admitir tu derrota y tipear \"show solution\" para ver la solución :P", "es_AR": "Recordá que podés admitir tu derrota y tipear \"show solution\" para ver la solución :P",
"es_ES": "Recuerda que puedes admitir tu derrota y escribir \"show solution\" para ver la solución :P", "es_ES": "Recuerda que puedes admitir tu derrota y escribir \"show solution\" para ver la solución :P",
"pt_BR": "Lembre-se que você pode admitir que foi derrotado e digitar \"show solution\" :P", "pt_BR": "Lembre-se que você pode admitir que foi derrotado e digitar \"show solution\" :P",
"gl" : "Lembrate que podes admitir que fuches derrotado e escribir \"show solution\" para amosala solución :P", "gl": "Lembrate que podes admitir que fuches derrotado e escribir \"show solution\" para amosala solución :P",
"de_DE": "Vergiss nicht dass du aufgeben kannst, indem du \"show solution\" eingibst :P", "de_DE": "Vergiss nicht dass du aufgeben kannst, indem du \"show solution\" eingibst :P",
"ja" : "降参して解説を見るには\"show solution\"を実行できるのをお忘れなく", "ja": "降参して解説を見るには\"show solution\"を実行できるのをお忘れなく",
"fr_FR": "N'oubliez pas que vous pouvez toujours déclarer forfait avec \"show solution\" :P", "fr_FR": "N'oubliez pas que vous pouvez toujours déclarer forfait avec \"show solution\" :P",
"ru_RU": "Помните, Вы всегда можете признать своё поражение, набрав команду \"show solution\" (показать решение) :P", "ru_RU": "Помните, Вы всегда можете признать своё поражение, набрав команду \"show solution\" (показать решение) :P",
"ko" : "혹시 아세요? 패배를 인정하고 \"show solution\"을 입력할 수 있다는 걸요 :P", "ko": "혹시 아세요? 패배를 인정하고 \"show solution\"을 입력할 수 있다는 걸요 :P",
"uk" : "Пам'ятай, ти завжди можеш визнати поразку і підглянути рішення командою \"show solution\" :P", "uk": "Пам'ятай, ти завжди можеш визнати поразку і підглянути рішення командою \"show solution\" :P",
"vi" : "Nhớ rằng, bạn có thể thừa nhận thất bại và gõ \"show solution\" :P", "vi": "Nhớ rằng, bạn có thể thừa nhận thất bại và gõ \"show solution\" :P",
"sl_SI": "Vedno se lahko predaš in napišeš \"show solution\". :P" "sl_SI": "Vedno se lahko predaš in napišeš \"show solution\". :P",
"pl": "Pamiętaj, że możesz się poddać i zobaczyć gotowe rozwiązanie, wpisując \"show solution\" :P",
}, },
"startDialog": { "startDialog": {
"en_US": { "en_US": {
@ -1096,6 +1098,76 @@ exports.level = {
} }
} }
] ]
},
"pl": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Szczegóły argumentu `<place>`",
"",
"Przypomnij sobie, że na poprzedniej lekcji określając `main` jako argument miejsca dla polecenia git push, wybraliśmy zarówno *źródło*, z którego mają pochodzić commity, jak i *cel*, do którego mają trafić.",
"",
"No i może zastanawiasz się teraz-- co by było, gdybyśmy chcieli, żeby źródło i cel były różne od siebie? Co, gdybyśmy chcieli wypchać commity z lokalnej gałęzi `foo` do zdalnej gałęzi `bar`?",
"",
"Cóż... niestety w Gicie nie da się tego zrobić... Żart! Jasne, że się da :) Git jest bardzo, bardzo elastyczny (może aż za bardzo).",
"",
"Zobaczmy, jak bardzo, na następnym slajdzie..."
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Aby określić zarówno źródło, jak i cel dla `<place>`, po prostu połącz je dwukropkiem:",
"",
"`git push origin <source>:<destination>`",
"",
"To nic innego jak refspec z dwukropkiem. Refspec to tylko wymyślny termin oznaczający lokalizację, którą Git potrafi zidentyfikować (na przykład gałąź `foo` albo po prostu `HEAD~1`).",
"",
"Kiedy już zaczniesz określać niezależnie źródła i cele, to możesz trochę zaszaleć na zdalnych repozytoriach. Zobaczmy demo!"
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Pamiętaj, że `source` (źródło) to dowolna lokalizacja, którą Git zrozumie:"
],
"afterMarkdowns": [
"Łaaał! Niezły odlot, ale jest w tym poleceniu jakiś sens -- Git zinterpretował `foo^` jako konkretną lokalizację, wrzucił tam wszystkie commity, jakich brakowało jeszcze w zdalnym repo, i na koniec zaktualizował cel."
],
"command": "git push origin foo^:main",
"beforeCommand": "git clone; go -b foo; git commit; git commit"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"A co, jeśli miejsce, do którego chcesz zrobić push, nie istnieje? Żaden problem! Wybierz tylko nazwę dla gałęzi, a Git stworzy ją dla ciebie w zdalnym repozytorium."
],
"afterMarkdowns": [
"Pięknie! Całkiem sprytne! :D"
],
"command": "git push origin main:newBranch",
"beforeCommand": "git clone; git commit"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Na tym poziomie postaraj się uzyskać drzewo, takie jak na wizualizacji, i pamiętaj o formacie:",
"",
"`<źródło>:<cel>`"
]
}
}
]
} }
} }
}; };

View file

@ -9,15 +9,16 @@ exports.level = {
"es_AR": "Acordate que siempre podés usar los comandos reset y undo", "es_AR": "Acordate que siempre podés usar los comandos reset y undo",
"es_ES": "Recuerda que siempre puedes usar los comandos reset y undo", "es_ES": "Recuerda que siempre puedes usar los comandos reset y undo",
"pt_BR": "Lembre-se que você sempre pode usar undo ou reset", "pt_BR": "Lembre-se que você sempre pode usar undo ou reset",
"gl" : "Lembra que sempre podes usar undo ou reset", "gl": "Lembra que sempre podes usar undo ou reset",
"de_DE": "Denk dran, du kannst immer undo oder reset benutzen, um deine Befehle zurück zu nehmen.", "de_DE": "Denk dran, du kannst immer undo oder reset benutzen, um deine Befehle zurück zu nehmen.",
"ja" : "undoやresetコマンドをいつでも使用することができるのをお忘れなく", "ja": "undoやresetコマンドをいつでも使用することができるのをお忘れなく",
"fr_FR": "Rappelez-vous que vous pouvez toujours utiliser les commandes undo et reset.", "fr_FR": "Rappelez-vous que vous pouvez toujours utiliser les commandes undo et reset.",
"ru_RU": "Помни - ты всегда можешь отменить команды с помощью undo или reset", "ru_RU": "Помни - ты всегда можешь отменить команды с помощью undo или reset",
"ko" : "명령어를 undo와 reset으로 되돌릴 수 있다는 것을 잊지마세요", "ko": "명령어를 undo와 reset으로 되돌릴 수 있다는 것을 잊지마세요",
"uk" : "Пам'ятай, ти в будь-який момент можеш використовувати команди undo або reset", "uk": "Пам'ятай, ти в будь-який момент можеш використовувати команди undo або reset",
"vi" : "Nhớ rằng bạn luôn luôn có thể hoàn tác hoặc soạn lại câu lệnh ", "vi": "Nhớ rằng bạn luôn luôn có thể hoàn tác hoặc soạn lại câu lệnh ",
"sl_SI": "Vedno lahko razveljaviš ukaz ali ponastaviš stopnjo." "sl_SI": "Vedno lahko razveljaviš ukaz ali ponastaviš stopnjo.",
"pl": "Pamiętaj, że zawsze możesz skorzystać z poleceń undo i reset",
}, },
"name": { "name": {
"en_US": "Push Main!", "en_US": "Push Main!",
@ -26,15 +27,16 @@ exports.level = {
"es_AR": "¡Push Main!", "es_AR": "¡Push Main!",
"es_ES": "¡Push Main!", "es_ES": "¡Push Main!",
"pt_BR": "Push Main!", "pt_BR": "Push Main!",
"gl" : "Empurra ó Main!", "gl": "Empurra ó Main!",
"de_DE": "Push Main!", "de_DE": "Push Main!",
"ja" : "Push Main!", "ja": "Push Main!",
"fr_FR": "Maître du push !", "fr_FR": "Maître du push !",
"ru_RU": "Push Мастер!", "ru_RU": "Push Мастер!",
"ko" : "Push Main!", "ko": "Push Main!",
"uk" : "Push Maйстер!", "uk": "Push Maйстер!",
"vi" : "Push Main!", "vi": "Push Main!",
"sl_SI": "Push Main!" "sl_SI": "Push Main!",
"pl": "Wypychanie dla wytrwałych!"
}, },
"compareOnlyMainHashAgnostic": true, "compareOnlyMainHashAgnostic": true,
"startDialog": { "startDialog": {
@ -462,7 +464,7 @@ exports.level = {
} }
] ]
}, },
"zh_CN":{ "zh_CN": {
"childViews": [ "childViews": [
{ {
"type": "ModalAlert", "type": "ModalAlert",
@ -832,6 +834,59 @@ exports.level = {
} }
} }
] ]
},
"pl": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Scalanie gałęzi feature",
"",
"Teraz, kiedy fetch, pull ani push nie mają już przed tobą tajemnic, sprawdźmy, jak poradzisz sobie z inną kolejnością działań.",
"",
"W dużych projektach często pracuje się na gałęziach tematycznych (zazwyczaj nazywanych `feature`), a nie na `main`, i scala się je dopiero po ukończeniu pracy. To sytuacja zbliżona do tej z poprzedniej lekcji (gałęzie boczne wypychaliśmy do remote), ale tu dodamy jeszcze jeden krok.",
"",
"Niektórzy używają push i pull, tylko będąc na gałęzi `main` - dzięki temu `main` zawsze odzwierciedla to, co jest na zdalnej gałęzi (`o/main`).",
"",
"Dlatego tym razem połączymy dwie rzeczy:",
"",
"* integrację pracy na gałęzi `feature` z `main` oraz",
"* push i pull ze zdalnego repozytorium"
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Przypomnijmy sobie w skrócie, jak uaktualnić `main` i wypchnąć naszą pracę."
],
"afterMarkdowns": [
"Wykonaliśmy dwa polecenia, które:",
"",
"* przebazowały naszą pracę ponad nowymi commitami ze zdalnego repozytorium oraz",
"* opublikowały naszą pracę na remote"
],
"command": "git pull --rebase; git push",
"beforeCommand": "git clone; git commit; git fakeTeamwork"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Ten poziom jest dość ciężki: oto ogólny zarys problemu do rozwiązania:",
"",
"* Mamy trzy boczne gałęzie: `side1` `side2` i `side3`",
"* Każdą z nich chcemy kolejno wypchnąć do zdalnego repozytorium",
"* Zdalne repo było w tym czasie zmieniane, więc te zmiany również musimy nanieść",
"",
":O Ciężka sprawa... Powodzenia! Ukończenie tego poziomu to duży krok naprzód."
]
}
}
]
} }
} }
}; };

View file

@ -15,15 +15,16 @@ exports.level = {
"es_AR": "Origen de nada", "es_AR": "Origen de nada",
"es_ES": "Origen de nada", "es_ES": "Origen de nada",
"pt_BR": "Origem vazia", "pt_BR": "Origem vazia",
"gl" : "Orixen de nada", "gl": "Orixen de nada",
"de_DE": "Die Quelle des Nichts", "de_DE": "Die Quelle des Nichts",
"ja" : "無のsource", "ja": "無のsource",
"fr_FR": "Source de rien du tout", "fr_FR": "Source de rien du tout",
"ru_RU": "Пустой источник", "ru_RU": "Пустой источник",
"ko" : "Source가 없다", "ko": "Source가 없다",
"uk" : "Нема джерела", "uk": "Нема джерела",
"vi" : "Không có nguồn", "vi": "Không có nguồn",
"sl_SI": "Izvor Ničesar" "sl_SI": "Izvor Ničesar",
"pl": "Źródło nicości"
}, },
"hint": { "hint": {
"en_US": "The branch command is disabled for this level so you'll have to use fetch!", "en_US": "The branch command is disabled for this level so you'll have to use fetch!",
@ -32,15 +33,16 @@ exports.level = {
"es_AR": "El comando branch está deshabilitado para este nivel, así que ¡vas a tener que usar fetch!", "es_AR": "El comando branch está deshabilitado para este nivel, así que ¡vas a tener que usar fetch!",
"es_ES": "El comando branch está deshabilitado para este nivel, así que ¡vas a tener que usar fetch!", "es_ES": "El comando branch está deshabilitado para este nivel, así que ¡vas a tener que usar fetch!",
"pt_BR": "O comando branch está desabilitado para este nível, então você terá de usar o fetch!", "pt_BR": "O comando branch está desabilitado para este nível, então você terá de usar o fetch!",
"gl" : "O comando branch está deshabilitado para este nivel, entón terás que empregar o comando fetch!", "gl": "O comando branch está deshabilitado para este nivel, entón terás que empregar o comando fetch!",
"de_DE": "Der branch Befehl ist für diesen Level inaktiv, du musst also fetch benutzen", "de_DE": "Der branch Befehl ist für diesen Level inaktiv, du musst also fetch benutzen",
"ja" : "このレベルではbranchコマンドが無効になっているのでfetchを使うしかない", "ja": "このレベルではbranchコマンドが無効になっているのでfetchを使うしかない",
"fr_FR": "La commande branch est désactivée pour ce niveau, vous devrez donc utiliser fetch !", "fr_FR": "La commande branch est désactivée pour ce niveau, vous devrez donc utiliser fetch !",
"ru_RU": "Команда branch недоступна на этом упражнении, пользуйтесь командой fetch!", "ru_RU": "Команда branch недоступна на этом упражнении, пользуйтесь командой fetch!",
"ko" : "branch 명령이 비활성화 되어있습니다. fetch를 사용해야 되요!", "ko": "branch 명령이 비활성화 되어있습니다. fetch를 사용해야 되요!",
"uk" : "Команда branch недоступна на цьому уроці, користуйся командою fetch!", "uk": "Команда branch недоступна на цьому уроці, користуйся командою fetch!",
"vi" : "Lệnh branch đã bị vô hiệu hóa ở cấp độ này nên bạn sẽ phải dùng fetch!", "vi": "Lệnh branch đã bị vô hiệu hóa ở cấp độ này nên bạn sẽ phải dùng fetch!",
"sl_SI": "Ukaz za branchanje je v tej stopnji onemogočen, zato boš moral uporabiti fetch!" "sl_SI": "Ukaz za branchanje je v tej stopnji onemogočen, zato boš moral uporabiti fetch!",
"pl": "Polecenie branch jest zablokowane na tym poziomie, musisz skorzystać z fetch!"
}, },
"startDialog": { "startDialog": {
"en_US": { "en_US": {
@ -414,7 +416,7 @@ exports.level = {
} }
] ]
}, },
"zh_CN":{ "zh_CN": {
"childViews": [ "childViews": [
{ {
"type": "ModalAlert", "type": "ModalAlert",
@ -841,6 +843,59 @@ exports.level = {
} }
} }
] ]
},
"pl": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"### Osobliwości `<source>`",
"",
"Git pozwala wykorzystać parametr `<source>` (źródło) na dwa osobliwe sposoby. Oba są dziwaczne dlatego, że - technicznie rzecz biorąc - możesz określić \"nic\" jako poprawne `źródło` zarówno dla git push, jak i git fetch. Tę \"nicość\" określasz za pomocą pustego argumentu:",
"",
"* `git push origin :side`",
"* `git fetch origin :bugFix`",
"",
"Zobaczmy, co z tego wyniknie..."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Co daje wypchnięcie \"nicości\" na zdalną gałąź? Usuwa ją!"
],
"afterMarkdowns": [
"Oto właśnie usunęliśmy skutecznie gałąź `foo` na zdalnym repozytorium, wypychając do niej ideę \"nicości\". To nawet ma jakiś sens..."
],
"command": "git push origin :foo",
"beforeCommand": "git clone; git push origin main:foo"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Natomiast ściągnięcie \"nicości\" za pomocą fetch do lokalnego miejsca tworzy nową gałąź."
],
"afterMarkdowns": [
"Osobliwe i dziwaczne, ale nic nie poradzisz... Git tak ma!"
],
"command": "git fetch origin :bar",
"beforeCommand": "git clone"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"To jest krótki poziom -- żeby go ukończyć, po prostu usuń jedną zdalną gałąź i stwórz jedną nową, używając `git fetch`!"
]
}
}
]
} }
} }
}; };

View file

@ -9,15 +9,16 @@ exports.level = {
"es_AR": "Trackeando remotos", "es_AR": "Trackeando remotos",
"es_ES": "Trackeando remotos", "es_ES": "Trackeando remotos",
"pt_BR": "Seguindo remotos", "pt_BR": "Seguindo remotos",
"gl" : "Traceando os remotos", "gl": "Traceando os remotos",
"de_DE": "Remote Tracking", "de_DE": "Remote Tracking",
"ja" : "リモートのトラッキング", "ja": "リモートのトラッキング",
"fr_FR": "Suivi de branche distante", "fr_FR": "Suivi de branche distante",
"ru_RU": "Слежка за удалённым репозиторием", "ru_RU": "Слежка за удалённым репозиторием",
"ko" : "원격 저장소 추적하기", "ko": "원격 저장소 추적하기",
"uk" : "Слідкуємо за віддаленим репозиторієм", "uk": "Слідкуємо за віддаленим репозиторієм",
"vi" : "Theo dõi từ xa", "vi": "Theo dõi từ xa",
"sl_SI": "Sledenje Oddaljenega Repota" "sl_SI": "Sledenje Oddaljenega Repota",
"pl": "Śledzenie zdalnych repo"
}, },
"hint": { "hint": {
"en_US": "Remember there are two ways to set remote tracking!", "en_US": "Remember there are two ways to set remote tracking!",
@ -26,15 +27,16 @@ exports.level = {
"es_AR": "¡Acordate de que hay dos formas de trackear un remoto!", "es_AR": "¡Acordate de que hay dos formas de trackear un remoto!",
"es_ES": "¡Recuerda que hay dos formas de trackear un remoto!", "es_ES": "¡Recuerda que hay dos formas de trackear un remoto!",
"pt_BR": "Lembre-se que há duas formas de seguir um ramo remoto!", "pt_BR": "Lembre-se que há duas formas de seguir um ramo remoto!",
"gl" : "¡Lembrate de que hai dúas formas de seguir unha rama remota!", "gl": "¡Lembrate de que hai dúas formas de seguir unha rama remota!",
"de_DE": "Nicht vergessen, es gibt zwei Arten Remote Tracking einzurichten!", "de_DE": "Nicht vergessen, es gibt zwei Arten Remote Tracking einzurichten!",
"ja" : "リモートトラッキングを設定する方法が二つあるのをお忘れなく!", "ja": "リモートトラッキングを設定する方法が二つあるのをお忘れなく!",
"fr_FR": "Rappelez-vous qu'il existe deux façons de configurer le suivi de branche distante !", "fr_FR": "Rappelez-vous qu'il existe deux façons de configurer le suivi de branche distante !",
"ru_RU": "Помни, есть два способа установить слежку за удалённым репозиторием!", "ru_RU": "Помни, есть два способа установить слежку за удалённым репозиторием!",
"ko" : "원격 추적하기를 설정하는데에는 두가지 방법이 있습니다!", "ko": "원격 추적하기를 설정하는데에는 두가지 방법이 있습니다!",
"uk" : "Пам'ятай, є два способи слідкувати за віддаленим репозиорієм!", "uk": "Пам'ятай, є два способи слідкувати за віддаленим репозиорієм!",
"vi" : "Hãy nhớ rằng, có 2 cách để thiết lập theo dõi từ xa!", "vi": "Hãy nhớ rằng, có 2 cách để thiết lập theo dõi từ xa!",
"sl_SI": "Spomni se, da obstajata dva načina za sledenje oddaljenega repota." "sl_SI": "Spomni se, da obstajata dva načina za sledenje oddaljenega repota.",
"pl": "Pamiętaj, zdalne repo można śledzić na dwa sposoby!"
}, },
"startDialog": { "startDialog": {
"en_US": { "en_US": {
@ -869,7 +871,7 @@ exports.level = {
} }
] ]
}, },
"zh_CN":{ "zh_CN": {
"childViews": [ "childViews": [
{ {
"type": "ModalAlert", "type": "ModalAlert",
@ -1927,6 +1929,124 @@ exports.level = {
} }
} }
] ]
},
"pl": {
"childViews": [
{
"type": "ModalAlert",
"options": {
"markdowns": [
"### Gałęzie śledzące",
"",
"Może ci się wydawać od kilku lekcji, że Git jakoś \"magicznie\" wie, że gałąź `main` jest powiązana z `o/main`. Co prawda nazwy tych gałęzi są podobne i, logicznie rzecz biorąc, `main` na zdalnym repo można skojarzyć z lokalną gałęzią `main`, ale na dwóch przykładach pokażemy, jak to działa w rzeczywistości:",
"",
"* Podczas operacji pull, commity są pobierane do `o/main`, a następnie za pomocą *merge* scalane z gałęzią `main`. Na podstawie tego połączenia określa się pośrednio cel scalania.",
"* Podczas operacji push praca z gałęzi `main` jest wypychana do zdalnej gałęzi `main` (lokalnie reprezentowanej przez `o/main`). *Cel* polecenia push jest określony przez połączenie pomiędzy `main` a `o/main`.",
""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"## Remote tracking",
"",
"Żeby nie przedłużać: połączenie pomiędzy `main` i `o/main` da się wyjaśnić po prostu jedną z właściwości gałęzi: \"remote tracking\". Gałąź `main` ma ustawione śledzenie gałęzi `o/main` -- a to oznacza, że dla operacji merge i push określony jest domyślny cel.",
"",
"Może się zastanawiasz, jak to się stało, że `main` ma już ustawione śledzenie, skoro nie robiliśmy tego żadnym poleceniem. Otóż, kiedy klonujesz repozytorium w Gicie, ta właściwość jest ustawiana za ciebie automatycznie. ",
"",
"Przy klonowaniu Git tworzy zdalną gałąź dla każdej z gałęzi zdalnego repozytorium (czyli gałęzie takie jak `o/main`). Następnie tworzy lokalną gałąź, która śledzi aktualnie aktywną gałąź na zdalnym repo - czyli najczęściej `main`.",
"",
"Po zakończeniu klonowania lokalnie masz tylko jedną gałąź (żeby nie zawracać sobie niepotrzebnie głowy), ale możesz zobaczyć wszystkie gałęzie na zdalnym repozytorium (jeśli aż tak cię to ciekawi). To idealne dwa w jednym!",
"",
"A przy okazji to wyjaśnia, dlaczego przy klonowaniu możesz zobaczyć:",
"",
" local branch \"main\" set to track remote branch \"o/main\""
]
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"### A czy mogę to określić samodzielnie?",
"",
"Jasne, że tak! Możesz kazać dowolnej gałęzi śledzić `o/main`, i w takim wypadku będzie miała taki sam domyślny cel operacji push i merge, co `main`. To znaczy, że możesz zrobić `git push` na gałęzi o nazwie `totallyNotMain`, a twoja praca i tak zostanie wypchnięta do gałęzi `main` w zdalnym repozytorium!",
"",
"Są dwa sposoby ustawienia tej właściwości. Pierwszym jest checkout nowej gałęzi wykorzystujący zdalną gałąź jako określoną referencję. Polecenie",
"",
"`git checkout -b totallyNotMain o/main`",
"",
"tworzy nową gałąź o nazwie `totallyNotMain` i każe jej śledzić `o/main`."
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Dość gadania, pora zobaczyć, jak to działa! Będziemy checkoutować nową gałąź o nazwie `foo` i każemy jej śledzić `main` na zdalnym repozytorium."
],
"afterMarkdowns": [
"Jak widzisz, użyliśmy domyślnego celu scalania `o/main`, żeby zaktualizować gałąź `foo`. Zwróć uwagę, że `main` się nie aktualizuje!!!"
],
"command": "git checkout -b foo o/main; git pull",
"beforeCommand": "git clone; git fakeTeamwork"
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Dotyczy to również git push."
],
"afterMarkdowns": [
"Tadam! Wypchnęliśmy naszą pracę do `main` na `remote`, mimo że nasza gałąź nazywała się zupełnie inaczej."
],
"command": "git checkout -b foo o/main; git commit; git push",
"beforeCommand": "git clone"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"### Sposób #2",
"",
"Inny sposób na ustawienie remote tracking na branchu to po prostu użycie opcji `git branch -u`. Polecenie",
"",
"`git branch -u o/main foo`",
"",
"spowoduje, że gałąź `foo` będzie śledzić `o/main`. Jeśli aktualnie wybraną gałęzią jest `foo`, to możesz nawet pominąć jej nazwę:",
"",
"`git branch -u o/main`",
""
]
}
},
{
"type": "GitDemonstrationView",
"options": {
"beforeMarkdowns": [
"Spójrzmy jeszcze szybko, jak to wygląda w praktyce..."
],
"afterMarkdowns": [
"Tak samo jak poprzednio, tylko wyraźniej widać to w poleceniu. Pięknie!"
],
"command": "git branch -u o/main foo; git commit; git push",
"beforeCommand": "git clone; git checkout -b foo"
}
},
{
"type": "ModalAlert",
"options": {
"markdowns": [
"Oki! Na tym poziomie wypchnijmy (push) pracę do gałęzi `main`na zdalnym repozytorium, *nie* checkoutując `main` lokalnie. Wymyśl samodzielnie, jak to zrobić. To przecież zaawansowana część kursu :P"
]
}
}
]
} }
} }
}; };