mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-06-20 21:35:42 +02:00
Merge pull request #1255 from CristiC0/Romanian
Some checks failed
Docker - learnGitBranching image / build-and-push-image (push) Has been cancelled
Some checks failed
Docker - learnGitBranching image / build-and-push-image (push) Has been cancelled
added Romanian translations
This commit is contained in:
commit
bd908010d9
42 changed files with 2447 additions and 0 deletions
|
@ -109,6 +109,18 @@ exports.dialog = {
|
|||
]
|
||||
}
|
||||
}],
|
||||
'ro': [
|
||||
{
|
||||
type: "ModalAlert",
|
||||
options: {
|
||||
markdowns: [
|
||||
"## Ești sigur că vrei să vezi soluția?",
|
||||
"",
|
||||
"Am încredere în tine! Poți să o faci!",
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
'ru_RU': [{
|
||||
type: 'ModalAlert',
|
||||
options: {
|
||||
|
|
|
@ -210,6 +210,25 @@ exports.dialog = {
|
|||
]
|
||||
}
|
||||
}],
|
||||
'ro': [{
|
||||
type: "ModalAlert",
|
||||
options: {
|
||||
markdowns: [
|
||||
"## Bun venit la constructorul de nivele!",
|
||||
"",
|
||||
"Iată pașii principali:",
|
||||
"",
|
||||
" * Configurați mediul inițial cu comenzi git",
|
||||
" * Definiți arborele de start cu ```define start```",
|
||||
" * Introduceți seria de comenzi git care compun soluția (optimă)",
|
||||
" * Definiți arborele țintă cu ```define goal```. Definirea țintei definește și soluția",
|
||||
" * Opțional, definiți un indiciu cu ```define hint```",
|
||||
"Modificați numele cu ```define name```",
|
||||
" * Opțional, puteți defini un dialog de start cu ```edit dialog```",
|
||||
"Introduceți comanda ```finish``` pentru a obține nivelul dvs. în format JSON!",
|
||||
],
|
||||
},
|
||||
}],
|
||||
'ru_RU': [{
|
||||
type: 'ModalAlert',
|
||||
options: {
|
||||
|
|
|
@ -122,6 +122,19 @@ exports.dialog = {
|
|||
]
|
||||
}
|
||||
}],
|
||||
'ro': [
|
||||
{
|
||||
type: "ModalAlert",
|
||||
options: {
|
||||
markdowns: [
|
||||
"## Bravo!!!",
|
||||
"",
|
||||
"Ai rezolvat nivelul în *{numCommands}* comenzi; ",
|
||||
"soluția noastră utilizează {best}.",
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
'ru_RU': [{
|
||||
type: 'ModalAlert',
|
||||
options: {
|
||||
|
|
|
@ -630,6 +630,35 @@ exports.dialog = {
|
|||
]
|
||||
}
|
||||
}],
|
||||
'ro': [{
|
||||
type: "ModalAlert",
|
||||
options: {
|
||||
markdowns: [
|
||||
"## Bine ați venit la Learn Git Branching",
|
||||
"",
|
||||
"Vrei să înveți Git? Atunci ai ajuns în locul potrivit! ",
|
||||
'"Learn Git Branching" este cea mai vizuală și interactivă modalitate de a învăța Git ',
|
||||
"pe web; vei fi provocat cu niveluri interesante, vei primi ",
|
||||
"demonstrații pas cu pas ale funcțiilor puternice ale Git-ului și poate chiar te vei distra puțin pe parcurs.",
|
||||
"",
|
||||
"După acest dialog, vei vedea o varietate de niveluri pe care le avem de oferit. Dacă ești începător, ",
|
||||
"poți începe cu primul nivel. Dacă deja cunoști câteva noțiuni de bază despre Git, ",
|
||||
"încercă unele dintre nivelurile noastre mai provocatoare de la final.",
|
||||
"",
|
||||
"Poți vedea toate comenzile disponibile cu `show commands` în terminal.",
|
||||
"",
|
||||
"P.S. Vrei să ajungi direct în sandbox data viitoare?",
|
||||
"Încearcă ",
|
||||
"[acest link special](https://pcottle.github.io/learnGitBranching/?NODEMO)",
|
||||
"",
|
||||
"P.S.S. GitHub a început să numească ramura implicită `main` în loc de `master` ",
|
||||
"pentru a migra de la terminologia învechită [(mai multe detalii disponibile aici)](https://github.com/github/renaming).",
|
||||
"În conformitate cu acest demers la nivel de industrie, am actualizat și noi „Learn Git Branching” pentru ",
|
||||
"a utiliza `main` în loc de `master` în lecțiile noastre. Această redenumire ar trebui să fie destul de consistentă deja, ",
|
||||
"însă dacă observi vreo eroare, nu ezita să trimiți un PR (sau să deschizi o problemă).",
|
||||
],
|
||||
},
|
||||
}],
|
||||
'ru_RU': [{
|
||||
type: 'ModalAlert',
|
||||
options: {
|
||||
|
|
|
@ -13,6 +13,7 @@ exports.strings = {
|
|||
'pt_BR': 'Uia! Você terminou o último nível, massa!',
|
||||
'gl' : '¡Yeeeha! Remataches o derradeiro nivel, ¡a tope!',
|
||||
'fr_FR': 'Félicitations, vous avez réussi le dernier niveau !',
|
||||
'ro': "Wow! Ai terminat ultimul nivel, grozav!",
|
||||
'ru_RU': 'Вау! Вы прошли последний уровень, отлично!',
|
||||
'uk': 'Вау! Ти пройшов останній рівень, круто!',
|
||||
'ko': '와! 마지막 레벨까지 마쳤습니다. 멋지네요!',
|
||||
|
@ -37,6 +38,7 @@ exports.strings = {
|
|||
'pt_BR': 'Você gostaria de ir para o próximo nível: *"{nextLevel}"*?',
|
||||
'gl' : '¿Gustaríache ir o seguinte nivel: *"{nextLevel}"*?',
|
||||
'fr_FR': 'Voulez-vous passer à *"{nextLevel}"*, le prochain niveau ?',
|
||||
'ro': 'Dorești să treci la următorul nivel: *"{nextLevel}"*?',
|
||||
'ru_RU': 'Хотите перейти на следующий уровень: *"{nextLevel}"*?',
|
||||
'uk': 'Хочеш перейти на наступний рівень -- *"{nextLevel}"*?',
|
||||
'ko': '다음 레벨로 넘어갈까요? *"{nextLevel}"*',
|
||||
|
@ -61,6 +63,7 @@ exports.strings = {
|
|||
'es_ES': '¡Fabuloso! Igualaste o superaste nuestra solución.',
|
||||
'gl' : '¡Fabuloso! Fixécholo igual ou mellor ca nosa solución.',
|
||||
'fr_FR': 'Fabuleux ! Votre solution a égalé ou surpassé notre solution.',
|
||||
'ro': "Minunat! Soluția ta este la fel de bună sau mai bună decât a noastră.",
|
||||
'ru_RU': 'Отлично! Ваше решение соответствует или превосходит наше.',
|
||||
'uk': 'Чудово! Твій розв’язок на рівні або кращий від нашого.',
|
||||
'ko': '굉장해요! 해답과 일치하거나 더 나은 해답입니다.',
|
||||
|
@ -86,6 +89,7 @@ exports.strings = {
|
|||
'pt_BR': 'Veja se consegue reduzir para somente {best} :D',
|
||||
'gl' : 'Mira se consigues reducir a solo {best} :D',
|
||||
'fr_FR': 'Voyons si vous pouvez descendre à {best} :D',
|
||||
'ro': "Vezi dacă poți reduce la {best} :D",
|
||||
'ru_RU': 'Попробуйте, может вы сможете уложиться в {best} : D',
|
||||
'uk': 'Спробуй, можливо ти зможеш вкластися в {best} кроків :D',
|
||||
'ko': '{best}회로 줄일 수 있을까요? :D',
|
||||
|
@ -109,6 +113,7 @@ exports.strings = {
|
|||
'gl' : '¡Coidado! Mercurial fai que recolección de lixo agresivamente (para limpar memoria) e precisa podar a túa árbore.',
|
||||
'fr_FR': 'Attention, Mercurial supprime de façon agressive et nécessite un prune du repository',
|
||||
'de_DE': 'Achtung! Mercurial macht aggressive Garbage Collection und muss daher deinen Baum reduzieren',
|
||||
'ro': "Atenție! Mercurial face colectare de gunoi agresivă și trebuie să-ți taie arborele",
|
||||
'ru_RU': 'Внимание! Mercurial использует агрессивный сборщик мусора и обрезает ваше дерево',
|
||||
'uk': 'Увага! Mercurial агресивно збирає сміття й може обрізати твоє дерево ',
|
||||
'ko': '주의! Mercurial은 공격적으로 가비지 컬렉션을 수행하므로 가지치기를 할 필요가 있습니다.',
|
||||
|
@ -133,6 +138,7 @@ exports.strings = {
|
|||
'gl' : 'A opción -A non se necesita para este aplicativo, ¡fai só un commit!',
|
||||
'de_DE': 'Die Option -A wird in dieser Anwendung nicht benötigt, committe einfach!',
|
||||
'fr_FR': 'L\'option -A n\'est pas nécessaire pour cette application, simplement commiter',
|
||||
'ro': "Opțiunea -A nu este necesară pentru această aplicație, doar comite!",
|
||||
'ru_RU': 'Опция -A не требуется для этого приложения, просто сделайте коммит.',
|
||||
'uk': 'Опція -A не потрібна для цього застосунку, можна просто комітити!',
|
||||
'ko': '이 앱에선 -A 옵션이 필요 없습니다. 그냥 커밋하세요!',
|
||||
|
@ -156,6 +162,7 @@ exports.strings = {
|
|||
'gl' : 'Non hai un comando status para esta aplicación, xa que non hai ficheiros que indexar. Proba hg summary',
|
||||
'fr_FR': 'Il n\'y a pas de commande status pour cette application, car il n\'y a pas de fichier stagé. Essayez hg summary à la place.',
|
||||
'de_DE': 'Es gibt keinen Befehl status in dieser Anwendung, da es kein Staging von Dateien gibt. Probier stattdessen hg summary',
|
||||
'ro': "Nu există comanda status pentru această aplicație, deoarece nu există staging de fișiere. Încearcă hg summary în schimb",
|
||||
'ru_RU': 'Команда status не поддерживается в этом приложении, так как здесь нет файлов. Попробуйте выполнить hg summary',
|
||||
'uk': 'Команда status не підтримується в цьому застосунку, так як немає стейджингу(staging) файлів. Натомість спробуй hg summary ',
|
||||
'ko': '파일들의 스테이징이 없으므로 이 앱을 위한 상태 명령어는 없습니다. 대신 hg summary를 시도해보세요.',
|
||||
|
@ -180,6 +187,7 @@ exports.strings = {
|
|||
'gl' : 'Preciso da opción {option} para ese comando!',
|
||||
'fr_FR': 'J\'ai besoin de l\'option {option} pour cette commande',
|
||||
'de_DE': 'Ich benötige die Option {option} für diesen Befehl!',
|
||||
'ro': "Am nevoie de opțiunea {option} pentru această comandă!",
|
||||
'ru_RU': 'Для этой команды требуется опция {option}',
|
||||
'uk': 'Для цієї команди потрібна опція {option}',
|
||||
'ko': '해당 명령에 {option} 옵션이 필요합니다.',
|
||||
|
@ -203,6 +211,7 @@ exports.strings = {
|
|||
'gl' : 'hg log sen -f actulamente non é soportado, usa -f',
|
||||
'fr_FR': 'hg log sans -f n\'est pas supporté',
|
||||
'de_DE': 'hg log ohne -f wird aktuell nicht unterstützt, benutze bitte -f',
|
||||
'ro': "Comanda hg log fără -f nu este suportată, folosește -f",
|
||||
'ru_RU': 'hg log без опции -f в настоящий момент не поддерживается, используйте -f',
|
||||
'uk': 'hg log без опції -f в данний момент не підтримується, використовуй -f',
|
||||
'ko': '-f가 없는 hg log는 현재 지원되지 않습니다. -f를 사용하세요.',
|
||||
|
@ -226,6 +235,7 @@ exports.strings = {
|
|||
'pt_BR': 'Detached HEAD!',
|
||||
'gl' : '¡Detached HEAD!',
|
||||
'fr_FR': 'head détaché !',
|
||||
'ro': "HEAD detașat!",
|
||||
'ru_RU': 'Отделенный HEAD',
|
||||
'uk': 'Відокремлений HEAD',
|
||||
'ko': '분리된 HEAD!',
|
||||
|
@ -249,6 +259,7 @@ exports.strings = {
|
|||
'pt_BR': 'No ramo {branch}',
|
||||
'gl' : 'Non na rama {branch}',
|
||||
'fr_FR': 'Sur la branche {branch}',
|
||||
'ro': "Pe ramura {branch}",
|
||||
'ru_RU': 'В ветке {branch}',
|
||||
'uk': 'В гілці {branch}',
|
||||
'ko': '분기 지점 {branch}에서',
|
||||
|
@ -272,6 +283,7 @@ exports.strings = {
|
|||
'pt_BR': 'Pronto para commitar! (como sempre neste demo ;-) )',
|
||||
'gl' : '¡Praparado para facer un commit (como sempre nesta demo ;-) )!',
|
||||
'fr_FR': 'Prêt à commit ! (comme toujours dans cette démo)',
|
||||
'ro': "Gata de comit! (ca întotdeauna în această demonstrație)",
|
||||
'ru_RU': 'Готово к коммиту! (как и всегда в этом демо)',
|
||||
'uk': 'Готово до коміту! (як завжди в цьому демо)',
|
||||
'ko': '(이 데모에서는 항상) 커밋 준비 완료!',
|
||||
|
@ -296,6 +308,7 @@ exports.strings = {
|
|||
'pt_BR': 'Commitando.. Vai Timão!',
|
||||
'gl' : 'Mesturando.. ¡Alá imos!',
|
||||
'fr_FR': 'Commit rapide. NoMaN Sux!',
|
||||
'ro': "Commite rapid. Hai mai repede!",
|
||||
'ru_RU': 'Быстрый коммит. А надо!',
|
||||
'uk': 'Швидкий коміт. Динамо!',
|
||||
'ko': '빨리 커밋하세요!',
|
||||
|
@ -318,6 +331,7 @@ exports.strings = {
|
|||
'gl' : 'Xa estamos actualizados ca versión máis recente',
|
||||
'zh_TW': '已經是最新的了',
|
||||
'zh_CN': '已经是最新的了',
|
||||
'ro': "Deja actualizat la ultima versiune!",
|
||||
'ru_RU': 'Уже обновлено!',
|
||||
'uk': 'Вже оновлено!',
|
||||
'ko': '이미 최신 상태입니다!',
|
||||
|
@ -340,6 +354,7 @@ exports.strings = {
|
|||
'pt_BR': 'O fetch não pode ser realizado, pois o ramo de origem está fora de sincronia com o ramo remoto',
|
||||
'gl' : 'O fetch non pode ser realizado xa que a rama de orixe non está sincronizada ca rama remota',
|
||||
'fr_FR': 'Votre branche origin n\'est plus synchronisée avec la branche distante et fetch ne peut pas être appliqué. Essayez avec l\'option --force',
|
||||
'ro': "Ramura origin nu este sincronizată cu ramura de la distanță, deci fetch nu poate fi efectuat",
|
||||
'ru_RU': 'Ваша origin ветка не синхронизирована с удаленной веткой, невозможно выполнить fetch',
|
||||
'uk': 'Твоя гілка origin не синхронізована з віддаленою гілкою, неможливо виконати fetch',
|
||||
'ko': 'origin 브랜치가 원격 브랜치와 동기화되지 않아서 fetch를 실행할 수 없습니다.',
|
||||
|
@ -363,6 +378,7 @@ exports.strings = {
|
|||
'pt_BR': 'O repositório remoto divergiu do repositório local, então enviar suas mudanças não é um simples fast forward (e por isso seu push foi rejeitado). Por favor, faça pull das novas mudanças do repositório remoto, incorpore-os a este ramo, e tente novamente. Você pode fazê-lo com git pull ou git pull --rebase',
|
||||
'gl' : 'O repositorio remoto diverxe do teu repositorio local. Subir os cambios non é un fast-forward (avance rápido) e por iso foi rechazado o teu push. Por favor, fai un pull dos novos cambios do repositorio remoto e inclúeos na túa rama actual. Os cambios pódense facer co comando "git pull" ou "git pull --rebase"',
|
||||
'fr_FR': 'Le dépôt distant a divergé de votre référentiel local, donc l\'envoi de vos modifications n\'est pas en simple avance rapide (et donc votre envoi a été rejeté). Veuillez récupérer les nouveaux changements depuis le dépôt distant, les intégrer dans cette branche, et essayez à nouveau. Vous pouvez le faire avec git pull ou git pull --rebase',
|
||||
'ro': "Repozitoriul de la distanță a deviat de repozitoriul tău local, deci încărcarea modificărilor nu este un simplu fast forward (și astfel push-ul tău a fost respins). Te rog să tragi noile modificări din repozitoriul de la distanță, să le integrezi în această ramură și să încerci din nou. Poți face asta cu git pull sau git pull --rebase",
|
||||
'ru_RU': 'Удаленный репозиторий разошелся с вашим локальным репозиторием, поэтому выгрузка ваших изменений не может быть в режиме fast forward (и следовательно ваш push будет отклонён). Пожалуйста, удалите изменения в удаленном репозитории которые, объедините их в эту ветку и попробуйте еще раз. Вы можете сделать это с помощью git pull или git pull --rebase',
|
||||
'uk': 'Віддалений репозиторій розбігся з твоїм локальним репозиторієм, тому відвантаження твоїх змін не є простим fast forward (і тому твій push був відхилений). Будь-ласка, витягни зміни з віддаленого репозиторію, включи їх в цю гілку, й спробуй ще. Ти можеш зробити це за допомогою git pull чи git pull --rebase',
|
||||
'ko': '원격 리포지토리가 로컬 리포지토리에서 분기되었으므로 변경 사항이 fast foward 방식으로 업로드되지 않고 푸시가 거부됩니다. 원격 리포지토리의 새 변경 내용을 끌어서 이 브랜치에 통합한 후 다시 시도하세요. git pull 또는 git pull --rebase를 사용해도 됩니다.',
|
||||
|
@ -385,6 +401,7 @@ exports.strings = {
|
|||
'pt_BR': 'Você não pode executar esse comando em um ramo remoto',
|
||||
'gl' : 'Non podes executar ese comando nunha rama remota',
|
||||
'fr_FR': 'Vous ne pouvez exécuter cette commande sur une branche distante',
|
||||
'ro': "Nu poți executa acest comandă pe o ramură la distanță",
|
||||
'ru_RU': 'Вы не можете выполнить эту команду на удаленной ветке',
|
||||
'uk': 'Ти не можеш виконати цю команду на віддаленій гілці',
|
||||
'ko': '원격 브랜치에서 해당 명령어를 실행시킬 수 없습니다.',
|
||||
|
@ -407,6 +424,7 @@ exports.strings = {
|
|||
'pt_BR': 'É necessário informar uma origem para esse comando',
|
||||
'gl' : 'É necesario informar unha orixe para ese comando',
|
||||
'fr_FR': 'Une origine est requise pour cette commande',
|
||||
'ro': "Un origin este necesar pentru acestă comandă",
|
||||
'ru_RU': 'Origin требуется для этой команды',
|
||||
'uk': 'Для цієї команди потрібний origin',
|
||||
'ko': '해당 명령어를 위한 origin이 필요합니다.',
|
||||
|
@ -429,6 +447,7 @@ exports.strings = {
|
|||
'pt_BR': 'A origem já existe! Você não pode criar uma nova',
|
||||
'gl' : 'A orixe xa existe! Non podes crear unha nova',
|
||||
'fr_FR': 'Une origine existe déjà ! Vous ne pouvez pas en créer une nouvelle',
|
||||
'ro': "Un origin deja există! Nu poți crea unul nou",
|
||||
'ru_RU': 'Origin уже существует! Невозможно создать еще один',
|
||||
'uk': 'Origin вже існує! Неможливо створити ще один',
|
||||
'ko': 'origin이 이미 존재합니다! 새로 만들 수 없습니다.',
|
||||
|
@ -453,6 +472,7 @@ exports.strings = {
|
|||
'pt_BR': 'Você não pode apagar o ramo main, nem o ramo em que você está, nem coisas que não sejam ramos',
|
||||
'gl' : 'Non podes borrala rama main, nin a rama na que ti estás, nin cousas que non sexan ramas',
|
||||
'fr_FR': 'Vous ne pouvez pas supprimer la branche main, la branche sur laquelle vous êtes, ou ce qui n\'est pas une branche',
|
||||
'ro': "Nu poți șterge ramura main, ramura pe care te afli, sau lucruri care nu sunt ramuri",
|
||||
'ru_RU' : 'Невозможно удалить ветку main, ветку на которой вы сейчас и то что не является веткой',
|
||||
'uk': 'Неможливо видалити гілку main, гілку на якій ти зараз знаходишся чи штуки які не є гілкою',
|
||||
'ko': 'main 브랜치, 현재 위치한 브랜치, 브랜치가 아닌 항목은 삭제할 수 없습니다.',
|
||||
|
@ -478,6 +498,7 @@ exports.strings = {
|
|||
'pt_BR': 'Merge de {target} em {current}',
|
||||
'gl' : 'Merge de {target} en {current}',
|
||||
'fr_FR': 'Merge de {target} dans {current}',
|
||||
'ro': "Îmbinare {target} în {current}",
|
||||
'ru_RU': 'Слияние {target} в {current}',
|
||||
'uk': 'Злиття {target} в {current}',
|
||||
'ko': '{target}을 {current}에 병합하세요.',
|
||||
|
@ -501,6 +522,7 @@ exports.strings = {
|
|||
'pt_BR': 'Não há commits para o rebase! São todos commits de merge ou mudanças já aplicadas',
|
||||
'gl' : '¡Non hai commits para o rebase! Son todos commits de merge ou cambios xa aplicados',
|
||||
'fr_FR': 'Aucun commit à rebaser ! C\'est soit un commit de merge, soit des modifications déjà appliquées',
|
||||
'ro': "Nu există commit-uri pentru rebase! Totul este un commit de îmbinare sau modificările sunt deja aplicate",
|
||||
'ru_RU': 'Нет коммитов для rebase! Все в коммите слияния или изменения уже применены',
|
||||
'uk': 'Нема комітів для rebase! Все в коміті злиття (merge commit) чи зміни вже застосовані',
|
||||
'ko': 'rebase를 하기 위한 커밋이 없습니다! 모든 커밋이 병합 커밋이거나 이미 변경사항이 적용되었습니다.',
|
||||
|
@ -525,6 +547,7 @@ exports.strings = {
|
|||
'pt_BR': 'Nada a ser feito...',
|
||||
'gl' : 'Nada para facer...',
|
||||
'fr_FR': 'Rien à effectuer…',
|
||||
'ro': "Nimic de făcut...",
|
||||
'ru_RU': 'Нечего выполнять...',
|
||||
'uk': 'Нічого виконувати...',
|
||||
'ko': '할수있는게 없습니다 ...',
|
||||
|
@ -548,6 +571,7 @@ exports.strings = {
|
|||
'pt_BR': 'Fast forward...',
|
||||
'gl' : 'Fast forward...',
|
||||
'fr_FR': 'En avance rapide…',
|
||||
'ro': "Fast forward...",
|
||||
'ru_RU': 'Выполняю Fast forward...',
|
||||
'uk': 'Виконую Fast forward',
|
||||
'ko': 'Fast forward 중입니다...',
|
||||
|
@ -571,6 +595,7 @@ exports.strings = {
|
|||
'pt_BR': 'Ramo já atualizado',
|
||||
'gl' : 'Rama xa actualizada',
|
||||
'fr_FR': 'Branche déjà à jour',
|
||||
'ro': "Ramura deja actualizată",
|
||||
'ru_RU': 'Ветка уже обновлена',
|
||||
'uk': 'Гілку вже оновлено',
|
||||
'ko': '브랜치가 이미 최신 상태입니다.',
|
||||
|
@ -594,6 +619,7 @@ exports.strings = {
|
|||
'pt_BR': 'A referência {ref} não existe ou é desconhecida',
|
||||
'gl' : 'A referencia {ref} non existe ou é descoñecida',
|
||||
'fr_FR': 'La référence {ref} n\'existe pas ou est inconnue',
|
||||
'ro': "Referința {ref} nu există sau este necunoscută",
|
||||
'ru_RU': 'Ссылка {ref} не существует или неизвестна',
|
||||
'uk': 'Посилання {ref} не існує чи невідоме',
|
||||
'ko': '{ref} 참조가 존재하지 않거나 찾을 수 없습니다.',
|
||||
|
@ -617,6 +643,7 @@ exports.strings = {
|
|||
'pt_BR': 'O commit {commit} não tem um {match}',
|
||||
'gl' : 'O commit {commit} non ten un {match}',
|
||||
'fr_FR': 'Le commit {commit} n\'a pas de correspondance {match}',
|
||||
'ro': "Commit-ul {commit} nu are un {match}",
|
||||
'ru_RU': 'Коммит {commit} не содержит {match}',
|
||||
'uk': 'Коміт {commit} не містить {match}',
|
||||
'ko': '커밋 {commit}은 {match}를 가지고 있지 않습니다.',
|
||||
|
@ -640,6 +667,7 @@ exports.strings = {
|
|||
'pt_BR': 'Cuidado! Modo Detached HEAD',
|
||||
'gl' : '¡Coidado! Modo Detached HEAD',
|
||||
'fr_FR': 'Attention ! HEAD est détaché',
|
||||
'ro': "Atenție! Starea HEAD detașat",
|
||||
'ru_RU': 'Внимание! Репозиторий в состоянии detached HEAD, то есть не находится ни на какой ветке!',
|
||||
'uk': 'Увага! Репозиторій в стані detached HEAD, тобто не знаходиться в жодній гілці!',
|
||||
'ko': '주의! 분리된 HEAD 상태',
|
||||
|
@ -663,6 +691,7 @@ exports.strings = {
|
|||
'pt_BR': 'Não é necessário adicionar arquivos neste demo',
|
||||
'gl' : 'Non é necesario incluír arquivos nesta demo',
|
||||
'fr_FR': 'Aucun besoin d\'ajouter des fichiers dans cette démo',
|
||||
'ro': "Nu este nevoie să adaugi fișiere în această demonstrație",
|
||||
'ru_RU': 'Это демо не оперирует файлами',
|
||||
'uk': 'Не потрібно додавати файли для цього демо',
|
||||
'ko': '이 데모에서는 파일을 추가할 필요가 없습니다.',
|
||||
|
@ -686,6 +715,7 @@ exports.strings = {
|
|||
'pt_BR': 'As opções que você especificou são incompatíveis ou incorretas',
|
||||
'gl' : 'As opcións que especificaches son incompatibles ou incorrectas',
|
||||
'fr_FR': 'Les options que vous avez spécifiées sont incompatibles ou incorrectes',
|
||||
'ro': "Opțiunile specificate sunt incompatibile sau incorecte",
|
||||
'ru_RU': 'Неправильные опции',
|
||||
'uk': 'Опції, які ти ввів, або некорректні або не підтримуються',
|
||||
'ko': '지정한 옵션이 호환되지 않거나 올바르지 않습니다.',
|
||||
|
@ -709,6 +739,7 @@ exports.strings = {
|
|||
'pt_BR': 'O commit {commit} já existe nas suas mudanças, abortando!',
|
||||
'gl' : 'O commit {commit} xa existe nos seus cambios, ¡abortando!',
|
||||
'fr_FR': 'Le commit {commit} existe déjà dans votre ensemble de modifications, opération avortée !',
|
||||
'ro': "Commit-ul {commit} există deja în setul tău de modificări, se anulează!",
|
||||
'ru_RU': 'Коммит {commit} существует, отменяю!',
|
||||
'uk': 'Коміт {commit} вже існує в твоєму change set, відміна!',
|
||||
'ko': '커밋 {commit}이 이미 변경 내역에 존재합니다. 중단!',
|
||||
|
@ -732,6 +763,7 @@ exports.strings = {
|
|||
'pt_BR': 'Não se pode fazer reset no modo detached. Use checkout se quiser se mover',
|
||||
'gl' : 'Non se pode facer reset no modo detached. Use checkout se te queres mover',
|
||||
'fr_FR': 'On ne peut pas effectuer un reset quand HEAD est détaché. Utilisez checkout pour déplacer',
|
||||
'ro': "Nu se poate face reset în starea HEAD detașat! Folosește checkout dacă vrei să te muți",
|
||||
'ru_RU': 'Это невозможно в режиме detached HEAD! Используйте checkout!',
|
||||
'uk': 'Неможливо зробити reset в стані detached head! Використовуй checkout якщо хочеш змінити розташування',
|
||||
'ko': '분리된 HEAD에서 reset할 수 없습니다. 만약 이동시키기를 원한다면 checkout을 사용하세요.',
|
||||
|
@ -759,6 +791,7 @@ exports.strings = {
|
|||
'pt_BR': 'O comportamento padrão é um reset --hard, fique livre para omitir essa opção!',
|
||||
'gl' : 'O comportamente por defecto é un reset --hard, Lembra que por defecto en GitHub é --mixed.',
|
||||
'fr_FR': 'Le comportement par défaut est un --hard reset, soyez libre d\'omettre cette option !',
|
||||
'ro': "Comportamentul implicit aici este un reset --hard, așa că te poți simți liber să omiți această opțiune! De menționat că în GitHub, comportamentul implicit este --mixed.",
|
||||
'ru_RU': 'По умолчанию будет выполнен --hard reset, эту опцию можно опускать!',
|
||||
'uk': 'На LearnGitBranching reset по замовчуванню використовує --hard, тому цю опцію ' +
|
||||
'можна пропустити, якщо ти втомився її набирати щоразу. Тільки запам’ятай, що по замовчуванню ' +
|
||||
|
@ -793,6 +826,7 @@ exports.strings = {
|
|||
'pt_BR': 'Não existe o conceito de adicionar/indexar mudanças, de forma que essa opção ou comando é inválida',
|
||||
'gl' : 'Non existe o concepto de agregar/indexar cambios, así que esa opción ou comando é inválido.',
|
||||
'fr_FR': 'Il n\'y a pas le concept d\'ajouter / mettre en staging, donc cette option ou commande est invalide',
|
||||
'ro': "Nu există conceptul de adăugare / indexare a fișierelor, deci acea opțiune sau comandă este invalidă!",
|
||||
'ru_RU': 'Это демо не работает с файлами, так что git add не нужен!',
|
||||
'uk': 'В цьому демо немає можливості додати файл до робочої копії чи до стейджингу, тому ця опція чи команда некоректна чи не підтримується',
|
||||
'ko': '여기엔 파일을 추가하거나 스테이징한다는 개념이 없으므로 해당 옵션이나 명령어는 유효하지 않습니다.',
|
||||
|
@ -818,6 +852,7 @@ exports.strings = {
|
|||
'pt_BR': 'Revertendo {oldCommit}: {oldMsg}',
|
||||
'gl' : 'Revertindo {oldCommit}: {oldMsg}',
|
||||
'fr_FR': 'Revert {oldCommit}: {oldMsg}',
|
||||
'ro': "Revenire {oldCommit}: {oldMsg}",
|
||||
'ru_RU': 'Откатываю {oldCommit}: {oldMsg}',
|
||||
'uk': 'Повертаю {oldCommit}: {oldMsg}',
|
||||
'ko': '{oldCommit}:{oldMsg}를 복구중입니다.',
|
||||
|
@ -841,6 +876,7 @@ exports.strings = {
|
|||
'pt_BR': 'Espero no máximo {upper} parâmetros para {what}',
|
||||
'gl' : 'Espero ó máximo {upper} parámetros para {what}',
|
||||
'fr_FR': 'J\'attends au plus {upper} argument(s) pour {what}',
|
||||
'ro': "Mă aștept la cel mult {upper} argument(e) pentru {what}",
|
||||
'ru_RU': 'Ожидается максимум {upper} аргумент(ов) для {what}',
|
||||
'uk': 'Я очікую максимум {upper} аргумент(ів) для {what}',
|
||||
'ko': '{what}을 위해 최대 {upper}개의 인자를 받습니다.',
|
||||
|
@ -864,6 +900,7 @@ exports.strings = {
|
|||
'pt_BR': 'Espero pelo menos {lower} parâmetros para {what}',
|
||||
'gl' : 'Agardo polo menos {lower} parámetros para {what}',
|
||||
'fr_FR': 'J\'attends au moins {lower} argument(s) pour {what}',
|
||||
'ro': "Mă aștept la cel puțin {lower} argument(e) pentru {what}",
|
||||
'ru_RU': 'Ожидается как минимум {lower} аргументов для {what}',
|
||||
'uk': 'Я очікую як мінімум {lower} аргумент(ів) для {what}',
|
||||
'ko': '{what}을 위해 최소 {lower}개의 인자를 받습니다.',
|
||||
|
@ -887,6 +924,7 @@ exports.strings = {
|
|||
'pt_BR': 'Este comando não aceita parâmetros gerais',
|
||||
'gl' : 'Este comando non acepta parámetros xeráis',
|
||||
'fr_FR': 'Cette commande n\'accepte aucun argument général',
|
||||
'ro': "Această comandă nu acceptă argumente generale",
|
||||
'ru_RU': 'Это команда без аргументов',
|
||||
'uk': 'Ця команда не приймає загальних аргументів',
|
||||
'ko': '그 명령어는 일반적으로 인자를 받지 않습니다.',
|
||||
|
@ -910,6 +948,7 @@ exports.strings = {
|
|||
'es_MX': 'La orden "{command}" no es compatible, ¡disculpa!',
|
||||
'es_ES': 'El comando "{command}" no está soportado, ¡disculpa!',
|
||||
'fr_FR': 'La commande "{command}" n\'est pas supportée, désolé !',
|
||||
'ro': 'Comanda "{command}" nu este suportată, ne pare rău!',
|
||||
'ru_RU': 'Команда "{command}" не поддерживается, извините!',
|
||||
'vi': 'Xin lỗi, lệnh "{command}" không được hỗ trợ!',
|
||||
'sl_SI': 'Ukaz \"{command}\" ni podprt, oprostite!',
|
||||
|
@ -931,6 +970,7 @@ exports.strings = {
|
|||
'pt_BR': 'Copie o código abaixo',
|
||||
'gl' : 'Copie o código abaixo',
|
||||
'fr_FR': 'Copiez la chaîne d\'arbre ci-dessous',
|
||||
'ro': "Copiază șirul arborelui mai jos",
|
||||
'ru_RU': 'Скопируй текст ниже',
|
||||
'uk': 'Скопіюй рядок дерева нижче',
|
||||
'ko': '다음 트리 문자열을 복사하세요.',
|
||||
|
@ -955,6 +995,7 @@ exports.strings = {
|
|||
'pt_BR': 'Aprenda Git Branching',
|
||||
'gl' : 'Aprende Git Branching',
|
||||
'fr_FR': 'Apprenez Git Branching',
|
||||
'ro': "Învață ramificarea Git",
|
||||
'ru_RU': 'Изучаем ветвление в git',
|
||||
'uk': 'Вивчай Git Branching',
|
||||
'ko': '깃 브랜칭을 배우기',
|
||||
|
@ -978,6 +1019,7 @@ exports.strings = {
|
|||
'pt_BR': 'Selecione um nível',
|
||||
'gl' : 'Selecciona un nivel',
|
||||
'fr_FR': 'Choisissez un niveau',
|
||||
'ro': "Selectează un nivel",
|
||||
'ru_RU': 'Выбери уровень',
|
||||
'uk': 'Обери рівень',
|
||||
'ko': '레벨을 선택하세요.',
|
||||
|
@ -998,6 +1040,7 @@ exports.strings = {
|
|||
'es_ES': 'Principal',
|
||||
'fr_FR': 'Principal',
|
||||
'gl' : 'Principal',
|
||||
'ro': "Principal",
|
||||
'ru_RU': 'Основы',
|
||||
'uk' : 'Основи',
|
||||
'ko': '메인',
|
||||
|
@ -1018,6 +1061,7 @@ exports.strings = {
|
|||
'es_ES': 'Remota',
|
||||
'fr_FR': 'Remote',
|
||||
'gl' : 'Remota',
|
||||
'ro': "Ramuri Remote",
|
||||
'ru_RU': 'Удаленные репозитории',
|
||||
'uk' : 'Віддалені репозиторії',
|
||||
'ko' : '원격',
|
||||
|
@ -1041,6 +1085,7 @@ exports.strings = {
|
|||
'pt_BR': 'Desculpe, precisamos manter os nomes dos ramos curtos para visualizá-los. O nome do seu ramo foi truncado para 9 caracteres, resultando em "{branch}"',
|
||||
'gl' : 'Desculpe, precisamos manter os nomes das ramas curtas para poder velas. O nome da súa rama foi truncada a 9 letras, resultado en "{branch}"',
|
||||
'fr_FR': 'Désolé, nous devons garder les noms de branches courts pour la visualisation. Votre nom de branche a été tronqué à 9 caractères, devenant "{branch}"',
|
||||
'ro': 'Ne pare rău, trebuie să păstrăm numele ramurilor scurte pentru vizualizare. Numele ramurii tale a fost trunchiat la 9 caractere, rezultând "{branch}"',
|
||||
'ru_RU': 'Для наглядности нам нужно сохранять имена веток короткими. Твоё название сокращено до 9 символов и теперь это "{branch}"',
|
||||
'uk': 'Вибач, нам потрібно щоб ім’я гілок було як можна коротше для наглядності. Твоє ім’я гілки було скорочене до 9 літер й тепер це "{branch}"',
|
||||
'ko': '죄송하지만, 가독성을 위해 짧은 브랜치명이 필요합니다. 브랜치명이 최대 9자리로 잘려 "{branch}"로 변경되었습니다.',
|
||||
|
@ -1065,6 +1110,7 @@ exports.strings = {
|
|||
'pt_BR': 'Um ramo não pode ser chamado de "{branch}"!',
|
||||
'gl' : 'Unha rama non pode ser chamada "{branch}',
|
||||
'fr_FR': 'Ce nom de branche "{branch}" n\'est pas autorisé',
|
||||
'ro': 'Numele "{branch}" nu este permis pentru ramuri',
|
||||
'ru_RU': 'Название для ветки "{branch}" недопустимо!',
|
||||
'uk': 'Назва гілки "{branch}" є недопустимою',
|
||||
'ko': '"{branch}"라는 브랜치명은 사용할 수 없습니다.',
|
||||
|
@ -1088,6 +1134,7 @@ exports.strings = {
|
|||
'gl' : 'Unha etiqueta non pode ser chamada "{tag}"',
|
||||
'de_DE': 'Der Tag-Name "{tag}" ist nicht erlaubt!',
|
||||
'fr_FR': 'Le nom de tag "{tag}" n\'est pas autorisé',
|
||||
'ro': 'Numele "{tag}" nu este permis pentru tag-uri',
|
||||
'ru_RU': 'Название для тега "{tag}" недопустимо!',
|
||||
'uk': 'Назва тегу "{tag}" є недопустимою',
|
||||
'ko': '"{tag}"라는 태그명은 사용할 수 없습니다.',
|
||||
|
@ -1111,6 +1158,7 @@ exports.strings = {
|
|||
'pt_BR': 'A opção {option} não é suportada',
|
||||
'gl' : 'A opción {option} non está soportada',
|
||||
'fr_FR': 'L\'option "{option}" n\'est pas supportée',
|
||||
'ro': 'Opțiunea "{option}" nu este suportată!',
|
||||
'ru_RU': 'Опция "{option}" недопустима!',
|
||||
'uk': 'Опція "{option}" не підтримується!',
|
||||
'ko': '"{option}"(이)라는 옵션은 지원하지 않습니다.',
|
||||
|
@ -1134,6 +1182,7 @@ exports.strings = {
|
|||
'pt_BR': 'git <comando> [<parâmetros>]',
|
||||
'gl' : 'git <comando> [<parámetros>]',
|
||||
'fr_FR': 'git <commande> [<arguments>]',
|
||||
'ro': "git <comandă> [<argumente>]",
|
||||
'ru_RU': 'git <команда> [<аргументы>]',
|
||||
'uk': 'git <команда> [<аргументи>]',
|
||||
'ko': 'git <명령어> [<인자들>]',
|
||||
|
@ -1157,6 +1206,7 @@ exports.strings = {
|
|||
'pt_BR': 'Comandos suportados:',
|
||||
'gl' : 'Comandos soportados:',
|
||||
'fr_FR': 'Commandes supportées',
|
||||
'ro': "Comenzi suportate:",
|
||||
'ru_RU': 'Поддерживаемые команды',
|
||||
'uk': 'Допустимі команди',
|
||||
'ko': '지원되는 명령어들:',
|
||||
|
@ -1180,6 +1230,7 @@ exports.strings = {
|
|||
'pt_BR': 'Uso:',
|
||||
'gl' : 'Uso:',
|
||||
'fr_FR': 'Utilisation :',
|
||||
'ro': "Utilizare:",
|
||||
'ru_RU': 'Использование:',
|
||||
'uk': 'Використання:',
|
||||
'ko': '사용법',
|
||||
|
@ -1203,6 +1254,7 @@ exports.strings = {
|
|||
'pt_BR': 'Git versão PCOTTLE.1.0',
|
||||
'gl' : 'Git versión PCOTTLE.1.0',
|
||||
'fr_FR': 'Git version PCOTTLE.1.0',
|
||||
'ro': "Versiunea Git PCOTTLE.1.0",
|
||||
'ru_RU': 'Версия git PCOTTLE.1.0',
|
||||
'uk': 'Версія git PCOTTLE.1.0',
|
||||
'ko': 'Git Version PCOTTLE.1.0',
|
||||
|
@ -1226,6 +1278,7 @@ exports.strings = {
|
|||
'pt_BR': 'Invertendo a árvore...',
|
||||
'gl' : 'Invirtindo a árbore...',
|
||||
'fr_FR': 'Inversion de l\'arbre...',
|
||||
'ro': "Întorc copacul...",
|
||||
'ru_RU': 'Переворачиваю дерево...',
|
||||
'uk': 'Перевертаю дерево...',
|
||||
'ko': '트리를 뒤집는중...',
|
||||
|
@ -1249,6 +1302,7 @@ exports.strings = {
|
|||
'pt_BR': 'Atualizando a árvore...',
|
||||
'gl' : 'Actualizando a árbore...',
|
||||
'fr_FR': 'Actualisation de l\'arbre…',
|
||||
'ro': "Actualizare copac...",
|
||||
'ru_RU': 'Обновляю дерево...',
|
||||
'uk': 'Оновлюю дерево...',
|
||||
'ko': '트리를 다시 불러오는중...',
|
||||
|
@ -1272,6 +1326,7 @@ exports.strings = {
|
|||
'pt_BR': 'Idioma trocado para {locale}',
|
||||
'gl' : 'Cambiado o idioma a {locale}',
|
||||
'fr_FR': 'Langue changée à {locale}',
|
||||
'ro': "Locale setat la {locale}",
|
||||
'ru_RU': 'Локаль теперь равна {locale}',
|
||||
'uk': 'Локаль тепер дорівнює {locale}',
|
||||
'ko': '로케일이 {locale}로 설정되었습니다.',
|
||||
|
@ -1295,6 +1350,7 @@ exports.strings = {
|
|||
'pt_BR': 'Idioma retornado para o padrão, que é {locale}',
|
||||
'gl' : 'Lingua reaxustada ó seu valor por defecto {locale}',
|
||||
'fr_FR': 'Langue remise par défaut, qui est {locale}',
|
||||
'ro': "Locale resetat la valoarea implicită, care este {locale}",
|
||||
'ru_RU': 'Локаль сброшена. Теперь она равна {locale}',
|
||||
'uk': 'Локаль скинута. Тепер вона дорівнює {locale}',
|
||||
'ko': '로케일이 {locale}로 초기화 되었습니다.',
|
||||
|
@ -1318,6 +1374,7 @@ exports.strings = {
|
|||
'pt_BR': 'Use algum destes comandos para ter mais informações:',
|
||||
'gl' : 'Usa algún destes comandos para ter máis información:',
|
||||
'fr_FR': 'Merci d\'utiliser une des commandes suivantes pour obtenir plus d\'informations',
|
||||
'ro': "Pentru mai multe informații, folosește una dintre următoarele comenzi:",
|
||||
'ru_RU': 'Для получения большей информации используй следующие команды:',
|
||||
'uk': 'Щоб отримати більше інформації використовуй наступні команди:',
|
||||
'ko': '더 많은 정보를 위해 다음 명령어들중 하나를 사용하세요:',
|
||||
|
@ -1341,6 +1398,7 @@ exports.strings = {
|
|||
'pt_BR': 'Esta é uma lista dos comandos disponíveis:',
|
||||
'gl' : 'Esta é unha lista dos comando dispoñibles:',
|
||||
'fr_FR': 'Ci-dessous est la liste de toutes les commandes disponibles :',
|
||||
'ro': "Iată o listă cu toate comenzile disponibile:",
|
||||
'ru_RU': 'Вот все поддерживаемые команды:',
|
||||
'uk': 'Ось список всіх можливих команд:',
|
||||
'ko': '여기에 사용 가능한 모든 명령어들의 리스트가 있습니다.',
|
||||
|
@ -1364,6 +1422,7 @@ exports.strings = {
|
|||
'pt_BR': 'Diretório mudado para "/diretorios/nao/importam/neste/demo"',
|
||||
'gl' : 'Directorio cambiado a "/os/directorios/non/importan/nesta/demo"',
|
||||
'fr_FR': 'Répertoire changé à "/directories/dont/matter/in/this/demo" (les répertoires ne servent à rien dans cette démo)',
|
||||
'ro': 'Director schimbat la "/directories/dont/matter/in/this/demo"',
|
||||
'ru_RU': 'Директория изменена на "/директории/не/важны/в/этом/демо"',
|
||||
'uk': 'Директорія змінена на "/директорії/не/мають/значення/в/цьому/демо"',
|
||||
'ko': '디렉토리가 "/directories/dont/matter/in/this/demo"로 변경되었습니다.',
|
||||
|
@ -1387,6 +1446,7 @@ exports.strings = {
|
|||
'pt_BR': 'NaoSePreocupeComNomesDeArquivoNesteDemo.txt',
|
||||
'gl' : 'NonTePreocupesPolosCambiosNestaDemo.txt',
|
||||
'fr_FR': 'DontWorryAboutFilesInThisDemo.txt (ne vous préoccupez pas des noms de fichier dans cette démo)',
|
||||
'ro': "NuTeStresaCuFișiereleÎnAcestDemo.txt",
|
||||
'ru_RU': 'НеНадоЗаботитьсяОФайлахВЭтомДемо.txt',
|
||||
'uk': 'ЗабийНаФайлиВЦьомуДемо.txt',
|
||||
'ko': 'DontWorryAboutFilesInThisDemo.txt (이_데모에서_파일에_대한_걱정은_하지마세요.txt)',
|
||||
|
@ -1409,6 +1469,7 @@ exports.strings = {
|
|||
'pt_BR': 'Provavelmente você não vai conseguir digitar comandos no celular, neste caso tente acessar de um computador',
|
||||
'gl' : 'LGB non pode recibir os comandos nos dispositivos móbiles. Visítanos dende un ordenador de escritorio, ¡paga a pena! :D',
|
||||
'fr_FR': 'Impossible de faire apparaître le clavier sur mobile / tablette :( Essayez de passer sur un ordinateur de bureau :D',
|
||||
'ro': "NuTeStresaCuFișiereleÎnAcestDemo.txt",
|
||||
'ru_RU': 'Мобильные не поддерживаются, зайди с компьютера!',
|
||||
'uk': 'LGB не підтримує ввід тексту з мобільного, зайди з компьютера! Це цього варте!',
|
||||
'ko': 'LGB는 모바일에서 입력을 받을 수 없으니 데스크톱으로 접속하세요! 후회하지 앉을겁니다. :D',
|
||||
|
@ -1433,6 +1494,7 @@ exports.strings = {
|
|||
'pt_BR': 'Compartilhe esta árvore com seus amigos! Eles podem carregá-la com "import tree"',
|
||||
'gl' : '¡Comparte esta árbore cos teus amigos! Eles poden cargalo con "import tree"',
|
||||
'fr_FR': 'Partagez cet arbre avec vos amis ! Ils peuvent le charger avec "import tree"',
|
||||
'ro': 'Împărtășește acest copac cu prietenii! Ei îl pot încărca cu "import tree"',
|
||||
'ru_RU': 'Поделись деревом с друзьями! Они могут загрузить его при помощи "import tree"',
|
||||
'uk': 'Поділись цим деревом з друзями! Вони зможуть його завантажити за допомогою "import tree"',
|
||||
'ko': '이 트리를 친구들에게 공유하세요! 친구들이 "import tree"를 사용하여 로드할 수 있습니다.',
|
||||
|
@ -1457,6 +1519,7 @@ exports.strings = {
|
|||
'pt_BR': 'Cole o JSON abaixo!',
|
||||
'gl' : 'Pega un JSON abaixo!',
|
||||
'fr_FR': 'Collez un blob JSON ci-dessous !',
|
||||
'ro': "Introdu un blob JSON mai jos!",
|
||||
'ru_RU': 'Вставь JSON ниже!',
|
||||
'uk': 'Встав JSON нижче!',
|
||||
'ko': '아래에 JSON blob을 붙여넣으세요.',
|
||||
|
@ -1480,6 +1543,7 @@ exports.strings = {
|
|||
'pt_BR': 'Mapa de resolvidos descartado, você está começando com ficha limpa!',
|
||||
'gl' : 'O mapa resolto foi eliminado, estás arrancando dende un estado limpo.',
|
||||
'fr_FR': 'La carte des niveaux résolus a été effacée, vous repartez de zéro !',
|
||||
'ro': "Totul a fost resetat, începi de la zero!",
|
||||
'ru_RU': 'Всё сброшено! Можно начать с чистого листа!',
|
||||
'uk': 'Все скинуте! Можна починати з чистого аркушу!',
|
||||
'ko': '해결된 맵이 초기화 되었습니다. 이제 초기 상태에서 시작합니다!',
|
||||
|
@ -1503,6 +1567,7 @@ exports.strings = {
|
|||
'pt_BR': 'Você não está em um nível! Você está no sandbox, comece um nível com "levels"',
|
||||
'gl' : '¡Non estás en ningún nivel! Estás nunha caixa de arena, comeza un nivel usando "levels"',
|
||||
'fr_FR': 'Vous n\'êtes pas dans un niveau ! Vous êtes dans le mode bac à sable, commencez un niveau avec "levels"',
|
||||
'ro': 'Nu ești într-un nivel! Ești în sandbox, începe un nivel cu "levels"',
|
||||
'ru_RU': 'Ты не проходишь уровень! Ты в песочнице! Чтобы начать уровень, используй команду "levels"!',
|
||||
'uk': 'Ти не в рівні! Ти в пісочниці! Почни рівень з "levels"',
|
||||
'ko': '현재 샌드박스에 있습니다! "levels"를 사용하여 레벨을 시작하세요.',
|
||||
|
@ -1527,6 +1592,7 @@ exports.strings = {
|
|||
'pt_BR': 'O nível "{id}" não existe! Abrindo uma caixa de seleção de nível',
|
||||
'gl' : 'O nivel "{id}" non existe! Abrindo unha caixa de seleción de nivel',
|
||||
'fr_FR': 'Le niveau dont l\'identifiant est {id} n\'a pas été trouvé ! Ouverture de la vue de sélection des niveaux',
|
||||
'ro': 'Nivelul cu id "{id}" nu a fost găsit! Deschid vizualizarea de selecție a nivelurilor',
|
||||
'ru_RU': 'Уровень с id "{id}" не найден! Открываю выбор уровней',
|
||||
'uk': 'Рівень з id "{id}" не знайдений! Відкриваю вибір рівней',
|
||||
'ko': 'id "{id}"에 대한 레벨이 존재하지 않습니다. 레벨 선택 화면을 열어보세요.',
|
||||
|
@ -1551,6 +1617,7 @@ exports.strings = {
|
|||
'pt_BR': 'Você já desfez tudo!',
|
||||
'gl' : 'Nonn hai comandos que desfacer',
|
||||
'fr_FR': 'La pile d\'annulation est vide !',
|
||||
'ro': "Stiva de anulări este goală!",
|
||||
'ru_RU': 'Некуда откатывать!',
|
||||
'uk': 'Нема куди відкочуватись!',
|
||||
'ko': '되돌리기 스택이 비었습니다!',
|
||||
|
@ -1574,6 +1641,7 @@ exports.strings = {
|
|||
'pt_BR': 'Você já resolveu este nível, tente outros com "levels" ou volte ao sandbox com "sandbox"',
|
||||
'gl' : 'Xa resolviches este nivel, proba outros usando "levels" ou volve á caixa de area con "sandbox"',
|
||||
'fr_FR': 'Vous avez déjà résolu ce niveau, essayez d\'autres niveaux avec "levels" ou revenez au bac à sable avec "sandbox"',
|
||||
'ro': 'Ai rezolvat deja acest nivel, încearcă alte nivele cu "levels" sau întoarce-te la sandbox cu "sandbox"',
|
||||
'ru_RU': 'Ты уже прошел этот уровень, попробуй пройти другие при помощи команды "levels" или иди в песочницу "sandbox"',
|
||||
'uk': 'Ти вже пройшов цей рівень, спробуй інші рівні з "levels" чи повернись в пісочницю з "sandbox"',
|
||||
'ko': '당신은 이미 이 레벨을 해결했습니다. "levels"를 사용하여 다른 레벨에 도전하거나 "sandbox"를 사용하여 샌드박스로 돌아가세요.',
|
||||
|
@ -1596,6 +1664,7 @@ exports.strings = {
|
|||
'es_ES': '¡Resuelto!!!\n:D',
|
||||
'fr_FR': 'Résolu !!!\n:D',
|
||||
'gl' : '¡Resolto!!!',
|
||||
'ro': "Rezolvat!!!\n:D",
|
||||
'ru_RU': 'Решено!!!\n:D',
|
||||
'uk' : 'Вирішено!!!\n:D',
|
||||
'ko' : '해결 완료!!!\n:D',
|
||||
|
@ -1620,6 +1689,7 @@ exports.strings = {
|
|||
'pt_BR': 'Achou que seria fácil assim? Desabilitamos esse comando durante este nível, só para dificultar ;-)',
|
||||
'gl' : '¡Ese comando de git está deshabilitado para este nivel!',
|
||||
'fr_FR': 'Cette commande git est désactivée pour ce niveau !',
|
||||
'ro': "Această comandă git este dezactivată pentru acest nivel!",
|
||||
'ru_RU': 'На этом уровне нельзя использовать эту команду!',
|
||||
'uk': 'На цьому рівні не можна використовувати цю команду!',
|
||||
'ko': '그 Git 명령어는 이 레벨에서 사용할 수 없습니다.',
|
||||
|
@ -1643,6 +1713,7 @@ exports.strings = {
|
|||
'pt_BR': 'Aqui está o JSON para este nível! Compartilhe com alguém ou me envie pelo GitHub',
|
||||
'gl' : 'Este é o JSON deste nivel. Comparteo con quen queiras ou mándao por GitHub',
|
||||
'fr_FR': 'Voici le JSON pour ce niveau ! Partagez-le avec quelqu\'un ou envoyez-le moi sur GitHub',
|
||||
'ro': "Iată JSON-ul pentru acest nivel! Împărtășește-l cu cineva sau trimite-mi-l pe GitHub",
|
||||
'ru_RU': 'Вот JSON для этого уровня! Поделись им с кем-нибудь или отправь его нам на GitHub',
|
||||
'uk': 'Ось JSON для цього рівня! Поділись з кимось чи відправ мені його на GitHub',
|
||||
'ko': '이 레벨을 위한 JSON 데이터가 있습니다! 이를 다른 사람들과 공유하거나 GitHub에서 제게 보내보세요.',
|
||||
|
@ -1667,6 +1738,7 @@ exports.strings = {
|
|||
'pt_BR': 'Você não especificou uma mensagem de início, quer colocar uma?',
|
||||
'gl' : 'Non especificaches unha mensaxe de incio. ¿queres agregar un?',
|
||||
'fr_FR': 'Vous n\'avez pas spécifié de dialogue de départ, voulez-vous en ajouter un ?',
|
||||
'ro': "Nu ai specificat un dialog de început, vrei să adaugi unul?",
|
||||
'ru_RU': 'Не указано стартово сообщение! Точно продолжаем?',
|
||||
'uk': 'Не вказано стартовий діалог, хочеш додати стартовий діалог?',
|
||||
'ko': '시작 대화창을 지정하지 않았습니다. 추가 하시겠습니까?',
|
||||
|
@ -1691,6 +1763,7 @@ exports.strings = {
|
|||
'pt_BR': 'Você não especificou uma dica, quer colocar uma?',
|
||||
'gl' : 'Ti non especificaches unha pista, ¿queres agregar algunha?',
|
||||
'fr_FR': 'Vous n\'avez pas spécifié d\'indice, voulez-vous en ajouter un ?',
|
||||
'ro': "Nu ai specificat niciun indiciu, vrei să adaugi unul?",
|
||||
'ru_RU': 'Не указана подсказка для уровня! Пренебречь? Вальсируем?',
|
||||
'uk': 'Не вказана підказка, хочеш додати підказку?',
|
||||
'ko': '힌트를 지정하지 않았습니다. 추가 하시겠습니까?',
|
||||
|
@ -1714,6 +1787,7 @@ exports.strings = {
|
|||
'pt_BR': 'Colocque uma dica para este nível, ou deixe em branco se não quiser incluir',
|
||||
'gl' : 'Ingresa unha pista para este nivel, ou déixao en branco se non a queres incluír.',
|
||||
'fr_FR': 'Entrez l\'indice pour ce niveau, ou laissez-le vide pour ne pas l\'inclure',
|
||||
'ro': "Adaugă un indiciu pentru acest nivel dacă dorești",
|
||||
'ru_RU': 'Введи подсказку для уровня, если хочешь.',
|
||||
'uk': 'Додай підказку для рівня, якщо хочеш',
|
||||
'ko': '이 레벨을 위한 힌트를 입력합니다(힌트를 입력하지 않으려면 비워둡니다).',
|
||||
|
@ -1738,6 +1812,7 @@ exports.strings = {
|
|||
'pt_BR': 'Coloque o nome do nível',
|
||||
'gl' : 'Coloque o nome do nivel',
|
||||
'fr_FR': 'Entrez le nom pour ce niveau',
|
||||
'ro':"Introdu numele pentru acest nivel",
|
||||
'ru_RU': 'Введи название уровня',
|
||||
'uk': 'Введи назву рівня',
|
||||
'ko': '레벨의 이름을 입력하세요.',
|
||||
|
@ -1761,6 +1836,7 @@ exports.strings = {
|
|||
'pt_BR': 'Sua solução está vazia! O aprendiz deveria ter que fazer alguma coisa',
|
||||
'gl' : '¡Su solución está vacía! Algo haberá que facer.',
|
||||
'fr_FR': 'Votre solution est vide !! Quelque chose ne tourne pas rond',
|
||||
'ro': "Soluția ta este goală!! Ceva nu este în regulă",
|
||||
'ru_RU': 'Решение не указано! Так не годится!',
|
||||
'uk': 'Розв’язок порожній!! Щось не так',
|
||||
'ko': '정답이 비어있습니다. 어딘가 잘못되었습니다.',
|
||||
|
@ -1784,6 +1860,7 @@ exports.strings = {
|
|||
'pt_BR': 'Esbelecendo o ponto de início... a solução e o objetivo serão sobrescritos caso já existirem',
|
||||
'gl' : 'Establecendo o punto de inicio... A solución e o obxectivo serán sobreescritos se xa foron definidos.',
|
||||
'fr_FR': 'Redéfinition du point de départ… la solution et la cible seront écrasés s\'ils ont déjà été définis',
|
||||
'ro': 'Stabilirea punctului de start... soluția și obiectivul vor fi suprascrise dacă au fost definite anterior',
|
||||
'ru_RU': 'Устанавливаю стартовую точку... Решение и итоговое состояние будут стёрты, если они указаны ранее',
|
||||
'uk': 'Встановлюю стартову точку... розв’язок та ціль будуть переписані якщо вони були задані раніше',
|
||||
'ko': '시작 지점 정의... 해답과 목표가 이전에 정의된 경우 덮어쓰기 됩니다.',
|
||||
|
@ -1808,6 +1885,7 @@ exports.strings = {
|
|||
'pt_BR': 'Você está em um nível, então há vários tipos de ajuda. Selecione "help level" para aprender mais sobre esta lição, "help general" para aprender a usar o Learn GitBranching, ou "objective" ver como resolver o nível.',
|
||||
'gl' : 'Estás nun nivel, entón hai varios tipos de axuda. Selecione "help level" para aprender máis sobre esta lección, "gelp general" para aprender a usar o Learn Git Branching, ou "objective" para ver como resolver o nivel.',
|
||||
'fr_FR': 'Vous êtes dans un niveau, donc plusieurs formes d\'aide sont disponibles. Merci de sélectionner soit "help level" pour en apprendre plus sur cette leçon, "help general" pour l\'utilisation de Learn GitBranching, ou "objective" pour apprendre comment résoudre le niveau',
|
||||
'ro': 'Te afli într-un nivel, deci mai multe forme de ajutor sunt disponibile. Te rog să alegi fie "help level" pentru a învăța mai multe despre această lecție, "help general" pentru a învăța cum să folosești Learn GitBranching, sau "objective" pentru a învăța cum să rezolvi acest nivel.',
|
||||
'ru_RU': 'При прохождении уровня доступны несколько видов помощи. Определить что нужно: "help level" чтобы получить информацию об этом уровне, "help general" для того, чтобы узнать о игре в целом или "objective" чтобы узнать что надо сделать в этом уровне.',
|
||||
'uk': 'При проходженні рівня доступні декілька різновидів допомоги. Виберіть або "help level" щоб взнати більше про цей рівень, чи "help general" щоб взнати більше про Learn Git Branching, чи "objective" щоб дізнатись більше про проходження цього рівня',
|
||||
'ko': '현재 레벨에서, 여러가지 도움말을 참고할 수 있습니다. 레슨에 대해 자세히 알아보려면 "help level", LearnGitBranching을 사용하려면 "help general", 레벨 해결 방법에 대해 알아보려면 "objective"를 선택하세요.',
|
||||
|
@ -1832,6 +1910,7 @@ exports.strings = {
|
|||
'pt_BR': 'Você está no construtor de níveis, então há vários tipos de ajuda. Selecione "help general" ou "help builder"',
|
||||
'gl' : 'Estás no constructor de niveis, polo que hai varios tipos de axuda. Elixe "help general" ou "help builder"',
|
||||
'fr_FR': 'Vous êtes dans l\'éditeur de niveaux, donc plusieurs formes d\'aide sont disponibles. Merci de sélectionner soit "help general" soit "help builder"',
|
||||
'ro': 'Ești într-un constructor de nivel, deci mai multe forme de ajutor sunt disponibile. Te rog să alegi fie "help general" pentru a învăța cum să folosești Learn GitBranching, fie "help builder" pentru a învăța cum să folosești constructorul de nivel.',
|
||||
'ru_RU': 'При создании уровней доступны несколько видов помощи. Выбери между "help general" и "help builder"',
|
||||
'uk': 'При створенні рівня доступні декілька різновидів допомоги. Виберіть або "help general", чи "help builder"',
|
||||
'ko': '레벨 생성기를 사용 중이므로 여러가지 도움을 빌릴수 있습니다. "help general" 또는 "help builder"를 선택해주세요.',
|
||||
|
@ -1857,6 +1936,7 @@ exports.strings = {
|
|||
'es_MX': 'Mostrar objetivo',
|
||||
'es_ES': 'Mostrar objetivo',
|
||||
'ja' : 'ゴールを表示',
|
||||
'ro': "Afișează obiectivul",
|
||||
'ru_RU': 'Цель уровня',
|
||||
'uk': 'Ціль рівня',
|
||||
'ko': '목표 보기',
|
||||
|
@ -1881,6 +1961,7 @@ exports.strings = {
|
|||
'es_MX': 'Ocultar objetivo',
|
||||
'es_ES': 'Ocultar objetivo',
|
||||
'ja' : 'ゴールを隠す',
|
||||
'ro': "Ascunde obiectivul",
|
||||
'ru_RU': 'Спрятать цель',
|
||||
'uk': 'Сховати ціль',
|
||||
'ko': '목표 숨기기',
|
||||
|
@ -1902,6 +1983,7 @@ exports.strings = {
|
|||
'es_MX': 'Objetivo',
|
||||
'fr_FR': 'Instructions',
|
||||
'gl' : 'Obxectivo',
|
||||
'ro': "Instrucțiuni",
|
||||
'ru_RU': 'Задача',
|
||||
'uk': 'Задача',
|
||||
'ko': '목적',
|
||||
|
@ -1924,6 +2006,7 @@ exports.strings = {
|
|||
'es_MX': 'Demostración de Git',
|
||||
'fr_FR': 'Démonstration de Git',
|
||||
'gl' : 'Demostración de Git',
|
||||
'ro': "Demonstrație Git",
|
||||
'ru_RU': 'Git демо',
|
||||
'uk' : 'Git демо',
|
||||
'ko' : 'Git 데모',
|
||||
|
@ -1949,6 +2032,7 @@ exports.strings = {
|
|||
'gl' : 'Obxectivo a cumprir',
|
||||
'fr_FR': 'Cible à atteindre',
|
||||
'ja' : '到達目標',
|
||||
'ro': "Obiectiv de atins",
|
||||
'ru_RU': 'Цель уровня',
|
||||
'uk': 'Ціль рівня',
|
||||
'ko': '목표',
|
||||
|
@ -1973,6 +2057,7 @@ exports.strings = {
|
|||
'zh_CN': '<span class="fwber">注意:</span>本关卡中,只检查 main 分支,其他分支只是用作 reference 存在(以虚线标签表示)。照常,你可以用 “hide goal” 来隐藏此窗口。',
|
||||
'zh_TW': '在這個關卡中,只有 main branch 會被檢查,別的 branch 只是用來做為 reference (下面用虛線符號表示)。一如往常,你可以利用 "hide goal" 來隱藏這個對話視窗',
|
||||
'ja': '<span class="fwber">Note:</span> mainブランチだけをこのlevelではチェックします。その他のブランチ(以下では、破線で示されています)に関しては、参照のためにあります。また、いつでもこのウィンドウは"hide goal"と打つかクリックで閉じれます',
|
||||
'ro': '<span class="fwber">Notă:</span> Doar ramura main va fi verificată în acest nivel. Celelalte ramuri sunt doar pentru referință (afișate ca etichete întrerupte mai jos). Ca de obicei, poți ascunde acest dialog cu "hide goal"',
|
||||
'ru_RU': '<span class="fwber">Важно:</span> В этом уровне проверяется только ветка main. Остальные ветки просто для наглядности. Как обычно, можно скрыть это сообщение при помощи "hide goal"',
|
||||
'uk': '<span class="fwber">Важливо:</span> В цьому рівні буде перевірятися тільки гілка main. Решта гілок тільки для наглядності (показані пунктиром нижче). Як завжди, можна сховати цей діалог за допомогою "hide goal"',
|
||||
'ko': '<span class="fwber">Note:</span> 이 레벨에서는 메인 브랜치만 검사될 것입니다. 다른 브랜치들은 단순히 참고용입니다(아래 점선 레이블로 표시됨). 언제나처럼 "hide goal"을 사용하여 이 창을 숨길 수 있습니다.',
|
||||
|
@ -1998,6 +2083,7 @@ exports.strings = {
|
|||
'gl' : 'Podes ocultar esta ventá con "hide goal"',
|
||||
'fr_FR': 'Vous pouvez masquer cette fenêtre avec "hide goal"',
|
||||
'ja' : 'このウィンドウは"hide goal"と打つかクリックで閉じれます',
|
||||
'ro': 'Poți ascunde această fereastră cu "hide goal"',
|
||||
'ru_RU': 'Можно скрыть это окно при помощи "hide goal"',
|
||||
'uk': 'Можна сховати це вікно за допомогою "hide goal"',
|
||||
'ko': '"hide goal"을 사용하여 이 창을 숨길 수 있습니다.',
|
||||
|
@ -2022,6 +2108,7 @@ exports.strings = {
|
|||
'gl' : 'Podes ocultar esta ventá con "hide start"',
|
||||
'fr_FR': 'Vous pouvez masquer cette fenêtre avec "hide start"',
|
||||
'ja' : 'このウィンドウは"hide start"かクリックで閉じれます',
|
||||
'ro': 'Poți ascunde această fereastră cu "hide start"',
|
||||
'ru_RU': 'Можно скрыть это окно при помощи "hide start"',
|
||||
'uk': 'Можна сховати це вікно за допомогою "hide start"',
|
||||
'ko': '"hide start"를 사용하여 이 창을 숨길 수 있습니다.',
|
||||
|
@ -2046,6 +2133,7 @@ exports.strings = {
|
|||
'gl' : 'Constructor de nivéis',
|
||||
'fr_FR': 'Éditeur de niveaux',
|
||||
'ja' : 'Levelエディタ',
|
||||
'ro': "Constructor de nivel",
|
||||
'ru_RU': 'Редактор уровней',
|
||||
'uk': 'Редактор рівнів',
|
||||
'ko': '레벨 생성기',
|
||||
|
@ -2070,6 +2158,7 @@ exports.strings = {
|
|||
'gl' : '¡Non hai mensaxe de inicio para este nivel!',
|
||||
'fr_FR': 'Il n\'y a aucun dialogue de départ à afficher pour ce niveau !',
|
||||
'ja' : 'このLevelにはスタートダイアログが存在しません',
|
||||
'ro': "Nu există dialog de start pentru acest nivel!",
|
||||
'ru_RU': 'Нет стартового сообщение для уровня!',
|
||||
'uk': 'Немає початкового діалогу для цього рівня!',
|
||||
'ko': '이 레벨에 표시할 시작 대화창이 없습니다.',
|
||||
|
@ -2094,6 +2183,7 @@ exports.strings = {
|
|||
'gl' : 'Hmm, non existe ningunha pista para este nivel :-/',
|
||||
'fr_FR': 'Hum, il ne semble pas y avoir d\'indice pour ce niveau :-/',
|
||||
'ja' : 'あらら、このLevelでは、残念ながらヒントが存在しません :-/',
|
||||
'ro': "Hmm, nu pare să existe un indiciu pentru acest nivel :-/",
|
||||
'ru_RU': "Милый мой, хороший, догадайся сам :-/ Подсказка не создана...",
|
||||
'uk': 'Хм, схоже для цього рівня немає підказки :-/',
|
||||
'ko': '흠, 이 레벨을 위한 힌트가 없는 것 같습니다. :-/',
|
||||
|
@ -2118,6 +2208,7 @@ exports.strings = {
|
|||
'gl' : 'Non existe tradución para {key} :( Axúdanos en GitHub e suxire unha! :)',
|
||||
'fr_FR': 'La traduction pour {key} n\'existe pas encore :( Venez sur GitHub pour en offrir une !',
|
||||
'ja' : '{key}の翻訳がまだ存在しません :( GitHubでの、翻訳の協力をお願いします m(_)m',
|
||||
'ro': "Traducerea pentru {key} nu există încă :( Te rog să vii pe GitHub și să oferi o traducere!",
|
||||
'ru_RU': 'Перевода для {key} не создано :( Пожалуйста, предложи перевод на GitHub',
|
||||
'uk': 'Немає перекладу для {key} :( Будь-ласка, запропонуй переклад на GitHub',
|
||||
'ko': '{key}를 위한 번역은 아직 존재하지 않습니다 :( github로 오셔서 번역을 제공해주세요!',
|
||||
|
@ -2143,6 +2234,7 @@ exports.strings = {
|
|||
'gl' : 'Esta mensaxe ou texto non foi traducida ó teu idioma :( Axúdanos a traducir a web en GitHub, é moi doado!',
|
||||
'fr_FR': 'Ce message n\'a pas encore été traduit dans votre langue :( Venez sur GitHub aider à la traduction !',
|
||||
'ja' : 'このダイアログ、またはテキストの翻訳がまだ存在しません :( GitHubでの、翻訳の協力をお願いします m(_)m',
|
||||
'ro': "Această fereastră sau text nu este încă tradus în limba ta :( Te rog să vii pe GitHub și să oferi o traducere!",
|
||||
'ru_RU': 'Для этого сообщения нет перевода :( Пожалуйста, предложи перевод на GitHub',
|
||||
'uk': 'Для цього повідомлення ще немає перекладу :( Будь-ласка, запропонуй переклад на GitHub',
|
||||
'ko': '이 대화창이나 텍스트는 아직 번역되지 않았습니다. :( 번역을 지원하려면 github로 와주세요!',
|
||||
|
@ -2163,6 +2255,7 @@ exports.strings = {
|
|||
'es_MX': 'Cancelar',
|
||||
'de_DE': 'Abbrechen',
|
||||
'fr_FR': 'Annuler',
|
||||
'ro': "Anulare",
|
||||
'ru_RU': 'Отмена',
|
||||
'zh_TW': '取消',
|
||||
'pl' : 'Powrót',
|
||||
|
@ -2179,6 +2272,7 @@ exports.strings = {
|
|||
'pt_BR': 'Confirmar',
|
||||
'es_MX': 'Confirmar',
|
||||
'fr_FR': 'Confirmer',
|
||||
'ro': "Confirmare",
|
||||
'ru_RU': 'Подтвердить',
|
||||
'de_DE': 'Bestätigen',
|
||||
'zh_TW': '確認',
|
||||
|
@ -2197,6 +2291,7 @@ exports.strings = {
|
|||
'es_MX': 'Nivel',
|
||||
'fr_FR': ' Niveau ',
|
||||
'ru_RU': ' Уровень ',
|
||||
'ro': " Nivel ",
|
||||
'de_DE': ' Level ',
|
||||
'zh_TW': '關卡 ',
|
||||
'it_IT': " Livello ",
|
||||
|
@ -2212,6 +2307,7 @@ exports.strings = {
|
|||
'es_MX': 'Niveles',
|
||||
'fr_FR': 'Niveaux',
|
||||
'ru_RU': 'Уровни',
|
||||
'ro': "Nivele",
|
||||
'de_DE': 'Levels',
|
||||
'zh_TW': '關卡',
|
||||
'it_IT': "Livelli",
|
||||
|
@ -2225,6 +2321,7 @@ exports.strings = {
|
|||
'en_US': 'Solution',
|
||||
'es_MX': 'Solución',
|
||||
'fr_FR': 'Solution',
|
||||
'ro': "Soluție",
|
||||
'ru_RU': 'Решение',
|
||||
'de_DE': 'Lösung',
|
||||
'zh_TW': '解答',
|
||||
|
@ -2241,6 +2338,7 @@ exports.strings = {
|
|||
'pt_BR': 'Reiniciar',
|
||||
'es_MX': 'Reiniciar',
|
||||
'fr_FR': 'Réinitialiser',
|
||||
'ro': "Reset",
|
||||
'ru_RU': 'Заново',
|
||||
'de_DE': 'Zurücksetzen',
|
||||
'zh_TW': '重新開始',
|
||||
|
@ -2257,6 +2355,7 @@ exports.strings = {
|
|||
'pt_BR': 'Desfazer',
|
||||
'es_MX': 'Deshacer',
|
||||
'fr_FR': 'Annuler',
|
||||
'ro': "Înapoi",
|
||||
'ru_RU': 'Вернуть',
|
||||
'de_DE': 'Rückgängig',
|
||||
'zh_TW': '回到上一步',
|
||||
|
@ -2272,6 +2371,7 @@ exports.strings = {
|
|||
'es_MX': 'Objetivo',
|
||||
'fr_FR': 'Objectif',
|
||||
'ru_RU': 'Задание',
|
||||
'ro': "Obiectiv",
|
||||
'de_DE': 'Zielvorgabe',
|
||||
'zh_TW': '目標',
|
||||
'it_IT': "Obiettivo",
|
||||
|
@ -2288,6 +2388,7 @@ exports.strings = {
|
|||
'es_MX': 'Ayuda',
|
||||
'fr_FR': 'Aide',
|
||||
'ru_RU': 'Помощь',
|
||||
'ro': "Ajutor",
|
||||
'de_DE': 'Hilfe',
|
||||
'zh_TW': '幫助',
|
||||
'it_IT': "Aiuto",
|
||||
|
@ -2302,6 +2403,7 @@ exports.strings = {
|
|||
'pt_BR': 'Este comando é válido, mas não suportado no ambiente atual! Tente entrar num nível ou construtor de nível para usar este comando',
|
||||
'es_MX': '¡El comando es válido, pero no es suportado en este ambiente! Intenta ingresar un nivel o un constructor de niveles para usar ese comando',
|
||||
'fr_FR': 'Cette commande est valide, mais n\'est pas supportée dans le contexte actuel ! Essayez de démarrer un niveau ou l\'éditeur de niveaux pour utiliser cette commande',
|
||||
'ro': "Această comandă este validă, dar nu este suportată în acest mediu! Încearcă să intri într-un nivel sau în editorul de niveluri pentru a folosi această comandă",
|
||||
'ru_RU': 'Эта команда валидна, но не поддерживается в текущем окружении! Попробуйте войти в уровень или сборщик уровней чтобы использовать эту команду',
|
||||
'de_DE': 'Der Befehl ist gültig, aber in der aktuellen Umgebung nicht unterstützt! Rufe ein Level oder den Level-Editor auf, um diesen Befehl zu nutzen',
|
||||
'zh_TW': '這項指令輸入正確,然而目前的環境不支援此指令。試著前往關卡或關卡建造器中使用此指令。',
|
||||
|
@ -2319,6 +2421,7 @@ exports.strings = {
|
|||
'pt_BR': 'Rebase interativo',
|
||||
'es_MX': 'Rebase interactivo',
|
||||
'fr_FR': 'Rebase interactif',
|
||||
'ro': "Rebase interactiv",
|
||||
'ru_RU': 'Интерактивное перебазирование',
|
||||
'de_DE': 'Interaktives Rebase',
|
||||
'zh_TW': '互動式 Rebase',
|
||||
|
|
|
@ -90,6 +90,12 @@ class IntlHelperBarView extends React.Component{
|
|||
onClick: function() {
|
||||
this.fireCommand('locale de_DE; levels');
|
||||
}.bind(this)
|
||||
}, {
|
||||
text: "Română",
|
||||
testID: "romanian",
|
||||
onClick: function () {
|
||||
this.fireCommand("locale ro; levels");
|
||||
}.bind(this),
|
||||
}, {
|
||||
text: 'Русский',
|
||||
testID: 'russian',
|
||||
|
|
|
@ -19,6 +19,7 @@ var langLocaleMap = {
|
|||
fr: 'fr_FR',
|
||||
de: 'de_DE',
|
||||
pt: 'pt_BR',
|
||||
ro: 'ro',
|
||||
ru: 'ru_RU',
|
||||
uk: 'uk',
|
||||
vi: 'vi',
|
||||
|
|
|
@ -14,6 +14,7 @@ exports.level = {
|
|||
"pt_BR": "Múltiplos pais",
|
||||
"gl": "Múltiples pais",
|
||||
"zh_TW": "多個 parent commit",
|
||||
"ro": "Mai mulți părinți",
|
||||
"ru_RU": "Здоровая семья, или несколько родителей",
|
||||
"ko": "다수의 부모",
|
||||
'uk': 'Декілька батьків',
|
||||
|
@ -36,6 +37,7 @@ exports.level = {
|
|||
"pt_BR": "Use `git branch bugWork` com um commit alvo para criar a referência que falta",
|
||||
"gl": "Usa `git branch bugWork` sobre calquera commit para crear a referencia que falta",
|
||||
"zh_TW": "在一個指定的 commit 上面使用 `git branch bugWork`。",
|
||||
"ro": "Folosește `git branch bugWork` cu un commit țintă pentru a crea referința lipsă.",
|
||||
"ru_RU": "`git branch bugWork` на нужном коммите поможет создать нужную ссылку.",
|
||||
"ko": "`git branch bugWork`를 대상 커밋과 함께 사용해서 부족한 참조를 만드세요",
|
||||
'uk': 'Використай "git branch bugWork" на потрібному коміті щоб створити потрібне посилання',
|
||||
|
@ -917,6 +919,93 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Specificarea părinților",
|
||||
"",
|
||||
"La fel ca și modificatorul `~`, modificatorul `^` acceptă un număr opțional după el.",
|
||||
"",
|
||||
"În loc să specifici câte generații înapoi să te duci (ceea ce face `~`), modificatorul de la `^` specifică care referință părinte să fie urmată de la un commit de tip merge. Amintește-ți că un commit de tip merge are mai mulți părinți, deci calea de urmat este ambiguă.",
|
||||
"",
|
||||
"Git va urma de obicei \"primul\" părinte al unui commit de tip merge, dar specificarea unui număr după `^` schimbă acest comportament implicit.",
|
||||
"",
|
||||
"Destul cu vorbăraia, să vedem operatorul în acțiune.",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Aici avem un commit de tip merge. Dacă facem checkout la `main^`, fără modificator, vom urma primul părinte de după commitul de tip merge. ",
|
||||
"",
|
||||
"(*În vizualizările noastre, primul părinte este cel situat direct deasupra commitului de tip merge.*)"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Ușor -- asta este ceea ce suntem obișnuiți să facem."
|
||||
],
|
||||
"command": "git checkout main^",
|
||||
"beforeCommand": "git checkout HEAD^; git commit; git checkout main; git merge C2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Acum să încercăm să specificăm al doilea părinte, în schimb..."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Vezi? Am urmat celălalt părinte în sus."
|
||||
],
|
||||
"command": "git checkout main^2",
|
||||
"beforeCommand": "git checkout HEAD^; git commit; git checkout main; git merge C2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Modificatorii `^` și `~` pot face ca navigarea în jurul unui arbore de commituri să fie foarte puternică:"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Rapid ca fulgerul!"
|
||||
],
|
||||
"command": "git checkout HEAD~; git checkout HEAD^2; git checkout HEAD~2",
|
||||
"beforeCommand": "git commit; git checkout C0; git commit; git commit; git commit; git checkout main; git merge C5; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Și mai uimitor, aceste modificatoare pot fi legate împreună! Uite:"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Aceeași mișcare ca înainte, dar totul într-o singură comandă."
|
||||
],
|
||||
"command": "git checkout HEAD~^2~2",
|
||||
"beforeCommand": "git commit; git checkout C0; git commit; git commit; git commit; git checkout main; git merge C5; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Pune în practică",
|
||||
"",
|
||||
"Pentru a finaliza acest nivel, creează un nou branch la destinația specificată.",
|
||||
"",
|
||||
"Este evident că ar fi mai ușor să specifici direct commitul (cu ceva de genul `C6`), dar te provoc să folosești modificatorii despre care am vorbit în schimb!"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -67,6 +67,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'zh_CN': '基础篇',
|
||||
'zh_TW': '基礎篇',
|
||||
'ko' : 'git 기본',
|
||||
'ro': "Introducere",
|
||||
'ru_RU': 'Введение',
|
||||
'uk' : 'Вступ',
|
||||
'vi' : 'Giới Thiệu Chuỗi Luyện Tập',
|
||||
|
@ -89,6 +90,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'zh_CN': '循序渐进地介绍 Git 主要命令',
|
||||
'zh_TW': '循序漸進地介紹 git 主要命令',
|
||||
'ko' : 'git의 주요 명령어를 깔끔하게 알려드립니다',
|
||||
'ro': "Un bun început pentru majoritatea comenzilor git",
|
||||
'ru_RU': 'Хорошо подобранное введение в основные команды git',
|
||||
'uk' : 'Гарно підібране введення в основні команди git',
|
||||
'vi' : 'Từng bước làm quen với phần lớn lệnh điều khiển Git',
|
||||
|
@ -112,6 +114,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'gl' : 'Alixeirando',
|
||||
'zh_CN': '高级篇',
|
||||
'zh_TW': '進階篇',
|
||||
'ro': "În continuare",
|
||||
'ru_RU': 'Едем дальше',
|
||||
'uk' : 'Їдемо далі',
|
||||
'ko' : '다음 단계로',
|
||||
|
@ -134,6 +137,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'gl' : 'A próxima porción das marabillas de git. Agardo que estés esfameado',
|
||||
'zh_CN': '要开始介绍 Git 的超棒特性了,快来吧!',
|
||||
'zh_TW': '接下來是 git 非常厲害的地方!相信你已經迫不及待了吧!',
|
||||
'ro': "Următoarea porție de minunății git. Sper că ești flămând",
|
||||
'ru_RU': 'Следующая порция абсолютной git-крутотенюшки. Проголодались?',
|
||||
'uk' : 'Наступна порція абсолютної git-дивини. Сподіваюсь, ви зголодніли',
|
||||
'ko' : 'git은 아주 멋져요. 왜 멋진지 알려드립니다',
|
||||
|
@ -159,6 +163,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'gl' : 'Push & Pull -- Repositorios remotos no Git!',
|
||||
'zh_CN': 'Push & Pull —— Git 远程仓库!',
|
||||
'zh_TW': 'Push & Pull -- Git Remotes!',
|
||||
'ro': "Push & Pull -- Git Remotes!",
|
||||
'ru_RU': 'Push & Pull - удалённые репозитории в Git!',
|
||||
'uk' : 'Push & Pull -- віддалені репозиторії в Git!',
|
||||
'ko' : 'Push & Pull -- Git 원격 저장소!',
|
||||
|
@ -181,6 +186,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'gl' : 'Hora de compartilos seus 1\' e 0\'s, rapaces; programar agora é social!',
|
||||
'zh_CN': '是时候分享你的代码了,让编码变得社交化吧',
|
||||
'zh_TW': '是時候分享你的程式碼了',
|
||||
'ro': "E timpul să împărtășiți 1-urile și 0-urile copii; programarea a devenit socială",
|
||||
'ru_RU': 'Настало время поделиться своими единичками и нулями. Время коллективного программирования',
|
||||
'uk' : 'Настав час поділитися своїми нулями та одиничками; соціальне програмування',
|
||||
'ko' : '자신의 코드를 공개할 때가 되었습니다. 코드를 공개해봅시다!',
|
||||
|
@ -207,6 +213,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'gl' : 'Ata á orixe e máis aló -- repositorios remotos avanzados!',
|
||||
'zh_CN': '关于 origin 和它的周边 —— Git 远程仓库高级操作',
|
||||
'zh_TW': '關於 origin 和其它 repo,git remote 的進階指令',
|
||||
'ro': "Spre Origin-e și dincolo de ea -- Git Remotes avansate!",
|
||||
'ru_RU': 'Через origin – к звёздам. Продвинутое использование Git Remotes',
|
||||
'uk' : 'Через origin – до зірок. Прогресивне використання Git Remotes',
|
||||
'ko' : '"origin"그 너머로 -- 고급 Git 원격 저장소',
|
||||
|
@ -229,6 +236,8 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'zh_CN': '做一名仁慈的独裁者一定会很有趣……',
|
||||
'zh_TW': '而且你會覺得做一個仁慈的獨裁者會很有趣...',
|
||||
'de_DE': 'Git Remotes für Fortgeschrittene',
|
||||
'ro': "Iar tu credeai că a fi un dictator binevoitor ar fi distractiv...",
|
||||
'ro': "Iar tu credeai că a fi un dictator binevoitor ar fi distractiv...",
|
||||
'ru_RU': 'Весело было быть всесильным мудрым правителем...',
|
||||
'uk' : 'А ти думав, що бути всесильним диктатором весело...',
|
||||
'ko' : '상급자는 편할줄 알았겠지만...',
|
||||
|
@ -254,6 +263,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'ko' : '코드 이리저리 옮기기',
|
||||
'zh_CN': '移动提交记录',
|
||||
'zh_TW': '調整提交順序',
|
||||
'ro': "Mutarea muncii din colo-n coace",
|
||||
'ru_RU': 'Перемещаем труды туда-сюда',
|
||||
'uk' : 'Переміщуємо роботу туди-сюди',
|
||||
'vi' : 'Di Chuyển Commit',
|
||||
|
@ -276,6 +286,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'ja' : '話題のrebaseってどんなものだろう?って人にオススメ',
|
||||
'zh_CN': '自由修改提交树',
|
||||
'zh_TW': '自由修改提交樹',
|
||||
'ro': "Simte-te liber să modifici istoria :P",
|
||||
'ru_RU': 'Не стесняйтесь менять историю',
|
||||
'uk' : 'Не соромимось змінювати історію',
|
||||
'vi' : 'Dễ dàng chỉnh sửa cây lịch sử với "Git" :P',
|
||||
|
@ -300,6 +311,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'ko' : '종합선물세트',
|
||||
'zh_CN': '杂项',
|
||||
'zh_TW': '活用 git 的指令',
|
||||
'ro': "De toate pentru toți",
|
||||
'ru_RU': 'Сборная солянка',
|
||||
'uk' : 'Всяке',
|
||||
'vi' : 'Vài Mẹo Linh Tinh',
|
||||
|
@ -322,6 +334,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'ko' : 'Git을 다루는 다양한 팁과 테크닉을 다양하게 알아봅니다',
|
||||
'zh_CN': 'Git 技术、技巧与贴士大集合',
|
||||
'zh_TW': 'git 的技術,招數與技巧',
|
||||
'ro': "Un asortiment de tehnici, trucuri și sfaturi Git",
|
||||
'ru_RU': 'Ассорти из приёмов работы с Git, хитростей и советов',
|
||||
'uk' : 'Різні прийоми роботи з Git, хитрощі та поради',
|
||||
'vi' : 'Các kỹ thuật, bí quyết, và mẹo vặt hữu ích',
|
||||
|
@ -345,6 +358,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'gl' : 'Temas avanzados',
|
||||
'zh_CN': '高级话题',
|
||||
'zh_TW': '進階主題',
|
||||
'ro': "Subiecte avansate",
|
||||
'ru_RU': 'Продвинутый уровень',
|
||||
'uk' : 'Досвідчений рівень',
|
||||
'ko' : '고급 문제',
|
||||
|
@ -367,6 +381,7 @@ var sequenceInfo = exports.sequenceInfo = {
|
|||
'gl' : '¡Para os verdadeiros valerosos!',
|
||||
'zh_CN': '只为真正的勇士!',
|
||||
'zh_TW': '來成為真正的強者吧!',
|
||||
'ro': "Pentru cei cu adevărat curajoși!",
|
||||
'ru_RU': 'Если ты смелый, ловкий, умелый – потренируйся тут',
|
||||
'uk' : 'Для хоробрих',
|
||||
'ko' : '용기있는 도전자를 위해 준비한 문제입니다',
|
||||
|
|
|
@ -14,6 +14,7 @@ exports.level = {
|
|||
"fr_FR": "Gérer les branches avec Git",
|
||||
"zh_CN": "Git Branch",
|
||||
"zh_TW": "建立 git branch",
|
||||
"ro": "Ramuri în Git",
|
||||
"ru_RU": "Ветвление в Git",
|
||||
"uk": "Розгалуження в Git",
|
||||
"vi": "Rẽ nhánh với Git",
|
||||
|
@ -36,6 +37,7 @@ exports.level = {
|
|||
"zh_CN": "用 'git branch <分支名>' 来创建分支,用 'git checkout <分支名>' 来切换到分支",
|
||||
"zh_TW": "用 'git branch [ branch 名稱]' 來建立 branch,用 'git checkout [ branch 名稱]' 切換到該 branch",
|
||||
"ko": "\"git branch [브랜치명]\"으로 새 브랜치를 만들고, \"git checkout [브랜치명]\"로 그 브랜치로 이동하세요",
|
||||
"ro": 'Creează o ramură nouă cu "git branch [nume-ramură]" și treci la ea cu "git checkout [nume-ramură]"',
|
||||
"ru_RU": "Создай новую ветку при помощи \"git branch [name]\" и перейди на неё при помощи \"git checkout [name]\"",
|
||||
"uk": "Створи нову гілку за допомогою \"git branch [ім’я]\" й перейди на неї за допомогою \"git checkout [ім’я]\"",
|
||||
"vi": "Tạo một nhánh mới với lệnh \"git branch [ten-nhanh]\" và chuyển sang đó với lệnh \"git checkout [ten-nhanh]\"",
|
||||
|
@ -1012,6 +1014,100 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Ramuri Git",
|
||||
"",
|
||||
"Ramurile în Git sunt incredibil de ușoare. Ele sunt pur și simplu referințe către un anumit commit -- nimic mai mult. De aceea, mulți entuziaști Git repetă mantra:",
|
||||
"",
|
||||
"```",
|
||||
"ramifică devreme, ramifică des",
|
||||
"```",
|
||||
"",
|
||||
"Pentru că nu există costuri suplimentare de stocare / memorie asociată cu crearea de multe ramuri, este mai ușor să îți împarți munca într-un mod logic decât să ai ramuri mari și greoaie.",
|
||||
"",
|
||||
'Când vom începe să combinăm ramuri și commit-uri, vom vedea cum aceste două caracteristici se îmbină bine. Pentru moment, doar reține că o ramură spune în esență "Vreau să includ munca acestui commit și a tuturor commit-urilor sale părinte."',
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Să vedem cum arată ramurile în practică.",
|
||||
"",
|
||||
"Aici vom crea o ramură nouă numită `newImage`.",
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Iată, asta e tot ce trebuie să faci pentru a crea o ramură! Ramura `newImage` acum se referă la commit-ul `C1`.",
|
||||
],
|
||||
"command": "git branch newImage",
|
||||
"beforeCommand": "",
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Să încercăm să facem câteva modificări în această nouă ramură. Apasă butonul de mai jos.",
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
'Oh nu! Ramura `main` s-a mutat, dar ramura `newImage` nu! Aceasta s-a întâmplat pentru că nu eram "pe" noua ramură, motiv pentru care asteriscul (*) era pe `main`.',
|
||||
],
|
||||
"command": "git commit",
|
||||
"beforeCommand": "git branch newImage",
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Să-i spunem lui Git că vrem să facem checkout pe ramura cu",
|
||||
"",
|
||||
"```",
|
||||
"git checkout <name>",
|
||||
"```",
|
||||
"",
|
||||
"Aceasta ne va poziționa pe noua ramură înainte de a face commit cu modificările noastre.",
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Incredibil! Modificările noastre au fost înregistrate pe noua ramură.",
|
||||
],
|
||||
"command": "git checkout newImage; git commit",
|
||||
"beforeCommand": "git branch newImage",
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"*Notă: În versiunea 2.23 a Git, a fost introdusă o nouă comandă numită `git switch`, care va înlocui în cele din urmă `git checkout`",
|
||||
" deoarece acesta din urmă este oarecum suprasolicitată (face multe lucruri diferite în funcție de argumente). Lecțiile de aici vor folosi în continuare ",
|
||||
"`checkout` în loc de `switch`, deoarece comanda `switch` este încă considerată experimentală și sintaxa sa se poate schimba în viitor.",
|
||||
"Cu toate acestea, puteți încerca noua comandă `switch` în această aplicație, și de asemenea ",
|
||||
'<a href="https://git-scm.com/docs/git-switch" target="_blank">poți afla mai multe aici</a>.* ',
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Ok! Ești gata să lucrezi cu ramuri. Odată ce această fereastră se închide,",
|
||||
"creează o nouă ramură numită `bugFix` și treci pe acea ramură.",
|
||||
"",
|
||||
"Apropo, iată o scurtătură: dacă vrei să creezi o nouă ramură",
|
||||
" ȘI să treci pe ea în același timp, poți pur și simplu ",
|
||||
"să scrii `git checkout -b [numele-ramurii]`.",
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -12,6 +12,7 @@ exports.level = {
|
|||
'ko': 'Git 커밋 소개',
|
||||
'zh_CN': 'Git Commit',
|
||||
'zh_TW': '介紹 git commit ',
|
||||
'ro': "Introducere în Git Commit",
|
||||
'ru_RU': 'Знакомство с Git Commit ',
|
||||
'uk': 'Знайомство з комітами в Git',
|
||||
'vi': 'Giới thiệu về Git Commit',
|
||||
|
@ -37,6 +38,7 @@ exports.level = {
|
|||
"zh_TW": "輸入兩次 'git commit' 就可以完成!",
|
||||
"ja": "'git commit'コマンドを2回打てば完成!",
|
||||
"ko": "'git commit'이라고 두 번 치세요!",
|
||||
"ro": "Scrie 'git commit' de două ori pentru a termina!",
|
||||
"ru_RU": "Попробуй дважды выполнить команду 'git commit' ;)",
|
||||
"uk": "Спробуй двічі виконати команду 'git commit' ;)",
|
||||
'vi': "Đơn giản là cứ gõ 'git commit' 2 lần",
|
||||
|
@ -564,6 +566,48 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Git Commits",
|
||||
"Un commit într-un repozitoriu Git înregistrează o captură (snapshot) a tuturor fișierelor (urmărite) din directorul tău. E ca un copy&paste uriaș, dar mult mai bun!",
|
||||
"",
|
||||
'Git vrea să păstreze commit-urile cât mai simplu posibil, astfel că nu copiază pur și simplu întregul director de fiecare dată când faci un commit. Poate (dacă este posibil) să comprime un commit ca un set de modificări, sau un "delta", de la o versiune a repozitoriului la următoarea.',
|
||||
"",
|
||||
"Git, de asemenea, păstrează un istoric al commit-urilor, care și când au fost făcute. De aceea majoritatea commit-urilor au commit-uri anterioare deasupra lor -- afișăm acest lucru cu săgeți în vizualizarea noastră. Păstrarea istoricului este utilă pentru toți cei care lucrează la proiect!",
|
||||
"",
|
||||
"Este mult de învățat, dar pentru moment poți să te gândești la commit-uri ca la capturi/versiuni ale proiectului. Commit-urile sunt foarte ușoare și schimbarea între ele este extrem de rapidă!",
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Dați să vedem cum arată asta în practică. În dreapta avem o vizualizare a unui (mic) repozitoriu Git. La moment avem două commit-uri -- primul commit inițial, `C0`, și un commit după acesta, `C1`, care ar putea avea unele modificări semnificative.",
|
||||
"",
|
||||
"Dați click pe butonul de mai jos pentru a face un nou commit.",
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Super! Tocmai am făcut modificări în repozitoriu și le-am salvat ca un commit. Commit-ul pe care tocmai l-am făcut are un părinte, `C1`, care face referire la rândul său la commit-ul în baza căruia a fost făcut.",
|
||||
],
|
||||
"command": "git commit",
|
||||
"beforeCommand": "",
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Acum, încearcă și tu! După ce această fereastră se va închide, fă două commit-uri pentru a termina nivelul.",
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -14,6 +14,7 @@ exports.level = {
|
|||
"ja": "ブランチとマージ",
|
||||
"zh_CN": "Git Merge",
|
||||
"zh_TW": "git 中的 merge",
|
||||
"ro": "Îmbinarea ramurilor în Git",
|
||||
"ru_RU": "Слияния веток в Git",
|
||||
"uk": "Злиття гілок в Git",
|
||||
"vi": "Gộp nhánh trong Git",
|
||||
|
@ -36,6 +37,7 @@ exports.level = {
|
|||
"zh_CN": "要按目标窗口中指定的顺序进行提交(bugFix 先于 main)",
|
||||
"zh_TW": "記住按指定的順序 commit(bugFix 比 main 優先)",
|
||||
"ko": "말씀드린 순서대로 커밋해주세요 (bugFix에 먼저 커밋하고 main에 커밋)",
|
||||
"ro": "Nu uita să faci commit în ordinea specificată (bugFix înainte de main)",
|
||||
"ru_RU": "Не забудь делать коммиты в правильном порядке (сначала bugFix, потом main)",
|
||||
"uk": "Не забудь робити коміти в правильному порядку (спочатку bugFix, а вже потім main)",
|
||||
"vi": "Nhớ là commit theo đúng thứ tự (bugFix trước main)",
|
||||
|
@ -876,6 +878,75 @@ exports.level = {
|
|||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
ro: {
|
||||
childViews: [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Ramuri și combinarea lor",
|
||||
"",
|
||||
"Perfect! Deja știm cum să facem commit și să creăm ramuri. Acum trebuie să învățăm o modalitate de a combina munca din două ramuri diferite. Acest lucru ne va permite să ne ramificăm, să dezvoltăm o nouă funcționalitate și apoi să o combinăm înapoi.",
|
||||
"",
|
||||
'Primul mod de a combina munca pe care îl vom examina este `git merge`. Combinarea în Git creează un commit special care are doi părinți unici. Un commit cu doi părinți înseamnă, în esență, "Vreau să includ toată munca de la acest părinte și de la celălalt părinte, *și* setul tuturor părinților lor."',
|
||||
"",
|
||||
"Este mai ușor cu o vizualizare, să vedem în următoarea pagină.",
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
'Aici avem două ramuri; fiecare are un commit care este unic. Acest lucru înseamnă că nici o ramură nu include setul complet de "muncă" pe care l-am făcut în repozitoriu. Să rezolvăm asta cu un merge.',
|
||||
"",
|
||||
"Vom `merge(combina)` ramura `bugFix` în `main`.",
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Wow! Ai văzut asta? În primul rând, `main` acum indică către un commit care are doi părinți. Dacă urmezi săgețile în sus de la `main`, vei trece prin fiecare commit până la rădăcină. Asta înseamnă că `main` conține acum toată munca din repozitoriu.",
|
||||
"",
|
||||
"De asemenea, ai văzut cum s-au schimbat culorile commit-urilor? Pentru a ajuta la învățare, am inclus o legendă de culori. Fiecare ramură are o culoare unică. Fiecare commit devine culoarea rezultată din amestecarea culorilor tuturor ramurilor care îl conțin.",
|
||||
"",
|
||||
"Așa că aici vedem că culoarea ramurii `main` este amestecată în toate commit-urile, dar culoarea `bugFix` nu este. Să reparăm asta...",
|
||||
],
|
||||
"command": "git merge bugFix",
|
||||
"beforeCommand":
|
||||
"git checkout -b bugFix; git commit; git checkout main; git commit",
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": ["Hai să combinăm ramura `main` în `bugFix`:"],
|
||||
"afterMarkdowns": [
|
||||
"Deoarece `bugFix` era un strămoș al lui `main`, git nu a trebuit să facă nimic; pur și simplu a mutat `bugFix` la același commit la care era atașat `main`.",
|
||||
"",
|
||||
"Acum toate commit-urile au aceeași culoare, ceea ce înseamnă că fiecare ramură conține toată munca din repozitoriu! Yay!",
|
||||
],
|
||||
"command": "git checkout bugFix; git merge main",
|
||||
"beforeCommand":
|
||||
"git checkout -b bugFix; git commit; git checkout main; git commit; git merge bugFix",
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Pentru a finaliza acest nivel, efectuează următorii pași:",
|
||||
"",
|
||||
"* Creează o nouă ramură numită `bugFix`",
|
||||
"* Mutăte pe ramura `bugFix` folosind `git checkout bugFix`",
|
||||
"* Fă un commit",
|
||||
"* Întoarce-te la `main` cu `git checkout`",
|
||||
"* Fă un alt commit",
|
||||
"* Combină ramura `bugFix` în `main` folosind `git merge`",
|
||||
"",
|
||||
"*Ține minte, poți oricând să reafișezi acest dialog tastând `objective`!*",
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
|
|
|
@ -14,6 +14,7 @@ exports.level = {
|
|||
"ko": "리베이스(rebase)의 기본",
|
||||
"zh_CN": "Git Rebase",
|
||||
"zh_TW": "介紹 rebase",
|
||||
"ro": "Introducere în rebase",
|
||||
"ru_RU": "Введение в rebase",
|
||||
"uk": "Знайомство з rebase",
|
||||
"vi": "Giới thiệu về rebase",
|
||||
|
@ -36,6 +37,7 @@ exports.level = {
|
|||
"ko": "bugFix 브랜치에서 먼저 커밋하세요",
|
||||
"zh_CN": "先在 bugFix 分支上进行提交",
|
||||
"zh_TW": "你要先在 bugFix branch 進行 commit",
|
||||
"ro": "Asigură-te că faci commit din bugFix mai întâi",
|
||||
"ru_RU": "Убедись, что сделал коммит в ветке bugFix",
|
||||
"uk": "Впевнись, що зробив коміт в гілці bugFix",
|
||||
"vi": "Hãy chắc chắn rằng bạn commit từ bugFix trước",
|
||||
|
@ -855,6 +857,74 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Git Rebase",
|
||||
"",
|
||||
'A doua modalitate de a combina munca între ramuri este *rebase*. Rebase practic ia un set de commit-uri, le "copiază" și le plasează în altă parte.',
|
||||
"",
|
||||
"Deși poate părea confuz, avantajul rebase este că poate fi folosit pentru a crea o secvență de commit-uri liniară și mai frumoasă. Istoria commit-urilor din repozitoriu va fi mult mai curată dacă se utilizează doar rebase.",
|
||||
"",
|
||||
"Hai să vedem cum funcționează...",
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Aici avem din nou două ramuri; observăm că ramura bugFix este selectată în prezent (vezi asteriscul)",
|
||||
"",
|
||||
"Am dori să mutăm munca noastră de pe bugFix direct peste munca de pe main. Astfel, ar părea că aceste două funcționalități au fost dezvoltate secvențial, când de fapt au fost dezvoltate în paralel.",
|
||||
"",
|
||||
"Vom face asta cu comanda `git rebase`.",
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
'Minunat! Acum munca de pe ramura "bugFix" este chiar deasupra celei de pe "main" și avem o secvență liniară de commit-uri.',
|
||||
"",
|
||||
'Observați că commit-ul C3 încă există undeva (apare decolorat în arbore), iar C3\' este "copia" pe care am făcut-o prin rebase pe main.',
|
||||
"",
|
||||
"Singura problemă este că main nu a fost actualizat, să rezolvăm asta acum...",
|
||||
],
|
||||
"command": "git rebase main",
|
||||
"beforeCommand": "git commit; git checkout -b bugFix C1; git commit",
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Acum suntem pe ramura `main`. Să continuăm și să facem rebase pe `bugFix`...",
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Iată! Deoarece `main` era un strămoș al `bugFix`, git a mutat pur și simplu referința ramurii `main` înainte în istorie.",
|
||||
],
|
||||
"command": "git rebase bugFix",
|
||||
"beforeCommand":
|
||||
"git commit; git checkout -b bugFix C1; git commit; git rebase main; git checkout main",
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Pentru a finaliza acest nivel, faceți următoarele",
|
||||
"",
|
||||
"* Faceți checkout pe o nouă ramură numită `bugFix`",
|
||||
"* Faceți un commit",
|
||||
"* Întoarceți-vă la `main` și faceți un alt commit",
|
||||
"* Faceți checkout pe `bugFix` din nou și faceți rebase pe `main`",
|
||||
"",
|
||||
"Mult succes!",
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -22,6 +22,7 @@ exports.level = {
|
|||
"gl": "Git Describe",
|
||||
"zh_TW": "git describe",
|
||||
"zh_CN": "Git Describe",
|
||||
"ro":"Git Describe",
|
||||
"ru_RU": "Git describe",
|
||||
"ko": "Git describe(묘사)",
|
||||
"uk": "Git Describe",
|
||||
|
@ -45,6 +46,7 @@ exports.level = {
|
|||
"gl": "Simplemente fai commit en bugFix cando estés listo para continuar.",
|
||||
"zh_TW": "當你要移動的時候,只要在 bugFix 上面 commit 就好了",
|
||||
"zh_CN": "当你准备好时,在 bugFix 分支上面提交一次就可以了",
|
||||
"ro": "Când ești gata să continui, fă un commit în bugFix",
|
||||
"ru_RU": "Когда закончишь, просто сделай commit",
|
||||
"ko": "다음으로 넘어가고 싶으면 bugFix를 한번 커밋하면 됩니다.",
|
||||
"uk": "Просто зроби один коміт в bugFix коли ти будеш готовий іти далі",
|
||||
|
@ -753,6 +755,69 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Git Describe",
|
||||
"",
|
||||
"Pentru că tag-urile servesc ca niște \"ancore\" excelente în cod, git are o comandă pentru a *descrie* unde te afli în raport cu cea mai apropiată \"ancoră\" (adică tag). Și acea comandă se numește `git describe`!",
|
||||
"",
|
||||
"Git describe te poate ajuta să-ți recapeți orientarea după ce ai făcut multe commit-uri înainte sau înapoi în istorie; acest lucru se poate întâmpla după ce ai terminat un git bisect (o căutare de depanare) sau când te așezi la calculatorul unui coleg care tocmai s-a întors din vacanță."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Git describe are următoarea formă:",
|
||||
"",
|
||||
"`git describe <ref>`",
|
||||
"",
|
||||
"Unde `<ref>` este orice lucru pe care git îl poate rezolva într-un commit. Dacă nu specifici un ref, git folosește pur și simplu unde ești acum (`HEAD`).",
|
||||
"",
|
||||
"Rezultatul comenzii arată cam așa:",
|
||||
"",
|
||||
"`<tag>_<numCommits>_g<hash>`",
|
||||
"",
|
||||
"Unde `tag` este cel mai apropiat tag din istorie, `numCommits` este numărul de commit-uri până la acel tag, iar `<hash>` este hash-ul commit-ului pe care îl descrii.",
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Să vedem un exemplu rapid. Pentru acest arbore de mai jos:"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Comanda `git describe main` ar afișa:",
|
||||
"",
|
||||
"`v1_2_gC2`",
|
||||
"",
|
||||
"În timp ce `git describe side` ar afișa:",
|
||||
"",
|
||||
"`v2_1_gC4`"
|
||||
],
|
||||
"command": "git tag v2 C3",
|
||||
"beforeCommand": "git commit; go -b side HEAD~1; gc; gc; git tag v1 C0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Cam asta este tot ce trebuie să știi despre git describe! Încearcă să descrii câteva locații din acest nivel pentru a te obișnui cu comanda.",
|
||||
"",
|
||||
"Când ești gata, fă un singur commit pentru a termina nivelul. Este un cadou gratis de la noi :P"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -26,6 +26,7 @@ exports.level = {
|
|||
"ja": "一つのコミットのみを取得",
|
||||
"zh_CN": "只取一个提交记录",
|
||||
"zh_TW": "只取一個 commit",
|
||||
"ro":"Alegem doar un singur commit",
|
||||
"ru_RU": "Выберем один коммит.",
|
||||
"uk": "Вибираємо всього один коміт",
|
||||
"vi": "Chỉ lấy 1 commit",
|
||||
|
@ -48,6 +49,7 @@ exports.level = {
|
|||
"ko": "대화식 리베이스(rebase -i)나 or 체리픽(cherry-pick)을 사용하세요",
|
||||
"zh_CN": "你有两个朋友,cherry-pick 和 rebase -i",
|
||||
"zh_TW": "記住,使用互動式的 rebase 或者 cherry-pick 會很有幫助",
|
||||
"ro": "Nu uita, rebase interactiv sau cherry-pick sunt prietenii tăi aici",
|
||||
"ru_RU": "Не забывай, что интерактивный rebase и cherry-pick – это твои друзья!",
|
||||
"uk": "Не забувай, що інтерактивний rebase та cherry-pick -- це твої друзі!",
|
||||
"vi": "Hãy nhớ 2 anh bạn tương tác rebase và cherry-pick",
|
||||
|
@ -528,6 +530,45 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Commit-uri salvate local",
|
||||
"",
|
||||
"Iată o situație de dezvoltare care apare frecvent: încerc să găsesc un bug, dar este destul de greu de găsit. Pentru a mă ajuta în munca mea de detectiv, adaug câteva comenzi de debug și câteva instrucțiuni de printare.",
|
||||
"",
|
||||
"Toate aceste comenzi de depanare și instrucțiuni de printare sunt în propriile lor commit-uri. În cele din urmă, găsesc bug-ul, îl repar și mă bucur!",
|
||||
"",
|
||||
"Singura problemă este că acum trebuie să aduc `bugFix` înapoi în ramura `main`. Dacă pur și simplu fac un fast-forward la `main`, atunci `main` va primi toate instrucțiunile mele de depanare, ceea ce nu este de dorit. La sigur trebuie să existe o altă modalitate..."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Trebuie să spunem lui git să copie doar unul dintre commit-uri. Aceasta este exact ca nivelurile anterioare de mutare a muncii -- putem folosi aceleași comenzi:",
|
||||
"",
|
||||
"* `git rebase -i`",
|
||||
"* `git cherry-pick`",
|
||||
"",
|
||||
"Pentru a atinge acest obiectiv."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Acesta este un nivel mai avansat, așa că lăsăm la discreția ta decizia de a alege ce comandă vrei să folosești, dar pentru a finaliza nivelul, asigură-te că `main` primește commit-ul la care se referă `bugFix`."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -30,6 +30,7 @@ exports.level = {
|
|||
"ja": "コミットをやりくりする",
|
||||
"zh_CN": "提交的技巧 #1",
|
||||
"zh_TW": "commit 的戲法",
|
||||
"ro": "Jonglarea cu commit-uri",
|
||||
"ru_RU": "Жонглируем коммитами",
|
||||
"uk": "Жонглюємо комітами",
|
||||
"vi": "Tung hứng commit",
|
||||
|
@ -52,6 +53,7 @@ exports.level = {
|
|||
"ko": "첫번째 명령은 git rebase -i HEAD~2 입니다",
|
||||
"zh_CN": "第一个命令是 `git rebase -i HEAD~2`",
|
||||
"zh_TW": "第一個命令是 'git rebase -i HEAD~2'",
|
||||
"ro": "Prima comandă este git rebase -i HEAD~2",
|
||||
"ru_RU": "Первой командой должна быть git rebase -i HEAD~2",
|
||||
"uk": "Перша команда має бути git rebase -i HEAD~2",
|
||||
"vi": "Lệnh đầu tiên là git rebase -i HEAD~2",
|
||||
|
@ -474,6 +476,40 @@ exports.level = {
|
|||
},
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Jonglarea cu commit-uri",
|
||||
"",
|
||||
"Iată o altă situație care apare destul de frecvent. Ai unele modificări (`newImage`) și un alt set de modificări (`caption`) care sunt legate între ele, astfel încât sunt stivuite una peste alta în repozitoriul tău (adică una după alta).",
|
||||
"",
|
||||
"Partea complicată este că uneori trebuie să faci o mică modificare la un commit mai vechi. În acest caz, echipa de design vrea să schimbăm puțin dimensiunile lui `newImage`, chiar dacă acel commit este deja în istoria noastră!"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Vom depăși această dificultate făcând următoarele:",
|
||||
"",
|
||||
"* Vom reordona commit-urile astfel încât cel pe care vrem să-l modificăm să fie cel mai recent cu `git rebase -i`",
|
||||
"* Vom folosi `git commit --amend` pentru a face mica modificare",
|
||||
"* Apoi vom reordona commit-urile înapoi cum erau anterior cu `git rebase -i`",
|
||||
"* În final, vom muta `main` în această parte actualizată a arborelui pentru a termina nivelul (folosind metoda pe care o preferi)",
|
||||
"",
|
||||
"Există multe moduri de a atinge acest obiectiv general (știu că te gândești la cherry-pick), și vom vedea mai multe dintre ele mai târziu, dar pentru moment să ne concentrăm pe această tehnică.",
|
||||
"În cele din urmă, fii atent la starea finală aici -- deoarece mutăm commit-urile de două ori, ambele primesc o apostrofă în plus. Încă o apostrofă este adăugată pentru commit-ul pe care îl modificăm, ceea ce ne dă forma finală a arborelui ",
|
||||
"",
|
||||
"Asta fiind spus, pot compara nivelurile acum pe baza structurii și diferențelor relative de apostrofă. Atâta timp cât ramura `main` a arborelui tău are aceeași structură și diferențe relative de apostrofă, îți voi da puncte maxime."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -29,6 +29,7 @@ exports.level = {
|
|||
"ja": "コミットをやりくりする その2",
|
||||
"zh_CN": "提交的技巧 #2",
|
||||
"zh_TW": "commit 的戲法 #2",
|
||||
"ro": "Jonglarea cu commit-uri #2",
|
||||
"ru_RU": "Жонглируем коммитами №2",
|
||||
"uk": "Жонглюємо комітами #2",
|
||||
"vi": "Tung hứng commit #2",
|
||||
|
@ -51,6 +52,7 @@ exports.level = {
|
|||
"ko": "main을 변경 완료한 커밋으로 이동(forward)시키는 것을 잊지 마세요!",
|
||||
"zh_CN": "别忘记了将 main 快进到最新的更新上!",
|
||||
"zh_TW": "別忘記了將 main 推到最新的 commit 上面!",
|
||||
"ro": "Nu uita să avansezi main la ultimele modificări!",
|
||||
"ru_RU": "Не забудь переместить main на последние изменения.",
|
||||
"uk": "Не забудь перемістити main на останні зміни!",
|
||||
"vi": "Đừng quên đẩy nhánh main lên cập nhật mới nhất!",
|
||||
|
@ -571,6 +573,49 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Jonglarea cu commit-uri #2",
|
||||
"",
|
||||
"*Dacă nu ai terminat Jonglarea cu commit-uri #1 (nivelul anterior), te rog să o faci înainte de a continua*",
|
||||
"",
|
||||
"După cum ai văzut în ultimul nivel, am folosit `rebase -i` pentru a reordona commit-urile. Odată ce commit-ul pe care voiam să-l schimbam era în vârf, am putut să-l modificăm ușor cu --amend și apoi să-l reordonăm înapoi la ordinea noastră dorită.",
|
||||
"",
|
||||
"Singura problemă aici este că există o mulțime de reordonări, ceea ce poate introduce conflicte de rebase. Să ne uităm la o altă metodă folosind `git cherry-pick`."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Amintește-ți că git cherry-pick va adăuga un commit din orice parte a arborelui la HEAD (atâta timp cât acel commit nu este un strămoș al HEAD).",
|
||||
"",
|
||||
"Iată o mică demonstrație pentru a-ți reaminti:"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Super! Să continuăm."
|
||||
],
|
||||
"command": "git cherry-pick C2",
|
||||
"beforeCommand": "git checkout -b bugFix; git commit; git checkout main; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Deci, în acest nivel, trebuie să atingem același obiectiv de a modifica `C2`, dar să evităm utilizarea `rebase -i`. Îți las ție să descoperi cum! :D",
|
||||
"",
|
||||
"Ține minte, numărul exact de apostrofe (') din commit nu este important, ci doar diferențele relative. De exemplu, voi acorda puncte unui arbore care se potrivește cu arborele țintă, dar are un apostrof în plus peste tot."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -14,6 +14,7 @@ exports.level = {
|
|||
"fr_FR": "Git Tags",
|
||||
"zh_CN": "Git Tag",
|
||||
"zh_TW": "git tag",
|
||||
"ro": "Tag-uri Git",
|
||||
"ru_RU": "git tag",
|
||||
"ko": "Git 태그",
|
||||
"uk": "Git Tags",
|
||||
|
@ -36,6 +37,7 @@ exports.level = {
|
|||
"gl": "Podes saltar directamente ó commit, ¡ou a etiqueta, que é máis doado!",
|
||||
"zh_TW": "你可以直接 checkout 到 commit 上,或是簡單的 checkout 到 tag 上",
|
||||
"zh_CN": "你可以直接 checkout 到 commit 上,或是简单地 checkout 到 tag 上",
|
||||
"ro": "Poți face checkout direct pe commit sau pur și simplu checkout pe tag!",
|
||||
"ru_RU": "Можно сделать checkout напрямую на коммит или же на тег",
|
||||
"ko": "커밋을 직접 또는 태그를 이용해서 체크아웃할수 있습니다!",
|
||||
"uk": "ти можеш або зробити checkout коміта напряму чи просто зачекаутити таг!",
|
||||
|
@ -619,6 +621,58 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Tag-uri Git",
|
||||
"",
|
||||
"Așa cum ai învățat din lecțiile anterioare, ramurile sunt ușor de mutat și de obicei fac referire la diferite commit-uri pe măsură ce munca este finalizată pe ele. Ramurile sunt ușor de modificat, adesea temporare și mereu în schimbare.",
|
||||
"",
|
||||
"În acest caz, s-ar putea să te întrebi dacă există o modalitate de a marca *permanent* anumite puncte din istoria proiectului tău. Pentru lucruri precum lansări majore și mari fuziuni, există vreo modalitate de a marca aceste commit-uri cu ceva mai permanent decât o ramură?",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Sigur că există! Tag-urile Git sunt concepute exact pentru acest caz de utilizare -- ele marchează (într-o oarecare măsură) permanent anumite commit-uri ca fiind \"etape importante\" la care poți face referire ca la o ramură.",
|
||||
"",
|
||||
"Mai important, ele nu se mișcă atunci când sunt create noi commit-uri. Nu poți trece pe un tag și apoi adăuga munca nouă pe acel tag -- tag-urile există ca niște ancore în arborele de commit-uri care desemnează anumite puncte.",
|
||||
"",
|
||||
"Să vedem cum arată tag-urile în practică..."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Să încercăm să creăm un tag la `C1`, care este prototipul nostru pentru versiunea 1"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Destul de simplu! Am numit tag-ul `v1` și am referit explicit commit-ul `C1`. Dacă nu specifici commit-ul, git va folosi ceea ce este la `HEAD`."
|
||||
],
|
||||
"command": "git tag v1 C1",
|
||||
"beforeCommand": "git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Pentru acest nivel, creează pur și simplu tag-urile din vizualizarea obiectivului și apoi treci la `v1`. Observă cum intri în starea de `HEAD` detașat -- asta se datorează faptului că nu poți face commit direct pe tag-ul `v1`.",
|
||||
"",
|
||||
"În nivelul următor vom examina un caz de utilizare mai interesant pentru tag-uri."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -18,6 +18,7 @@ exports.level = {
|
|||
"gl": "Introuducción a cherry-pick",
|
||||
"zh_CN": "Git Cherry-pick",
|
||||
"zh_TW": "介紹 cherry-pick",
|
||||
"ro":"Introducere în cherry-pick",
|
||||
"ru_RU": "Введение в Cherry-pick",
|
||||
"ko": "Cherry-pick 소개",
|
||||
"uk": "Знайомство з cherry-pick",
|
||||
|
@ -40,6 +41,7 @@ exports.level = {
|
|||
"gl": "git cherry-pick seguido das referencias a commits",
|
||||
"zh_CN": "git cherry-pick 后面要跟提交的名字",
|
||||
"zh_TW": "git cherry-pick 後面要接著 commit 的名稱",
|
||||
"ro": "git cherry-pick urmat de numele commit-urilor",
|
||||
"ru_RU": "git cherry-pick основывается на именах коммитов!",
|
||||
"ko": "커밋의 이름들로 git cherry-pick 하세요!",
|
||||
"uk": "git cherry-pick базується на іменах комітів!",
|
||||
|
@ -677,6 +679,63 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Mutarea Modificărilor",
|
||||
"",
|
||||
"Până acum am acoperit conceptele de bază ale git -- commit-uri, ramuri și navigarea în arborele sursă. Aceste concepte sunt suficiente pentru a profita de 90% din puterea repozitoriilor git și pentru a acoperi nevoile principale ale dezvoltatorilor.",
|
||||
"",
|
||||
"Restul 10% pot fi foarte utile în fluxuri de lucru complexe (sau atunci când te-ai pus singur într-o situație dificilă). Următorul concept pe care îl vom aborda este \"mutarea modificărilor/comit-urilor\" -- în alte cuvinte, este o modalitate pentru dezvoltatori de a spune \"Vreau acest lucru aici și acel lucru acolo\" într-un mod precis, elocvent și flexibil.",
|
||||
"",
|
||||
"Aceasta poate părea complicat, însă este defapt un concept simplu."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Git Cherry-pick",
|
||||
"",
|
||||
"Prima comandă din această serie este `git cherry-pick`. Se folosește în următorul mod:",
|
||||
"",
|
||||
"* `git cherry-pick <Commit1> <Commit2> <...>`",
|
||||
"",
|
||||
"Este o modalitate foarte directă de a spune că dorești să copiezi o serie de commit-uri sub locația ta curentă (`HEAD`). Personal, îmi place foarte mult `cherry-pick` deoarece nu are prea multă magie și este ușor de înțeles.",
|
||||
"",
|
||||
"Să vedem o demonstrație!",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Iată un repozitoriu în care avem unele modificări în ramura `side` pe care dorim să le copiem în `main`. Acest lucru ar putea fi realizat printr-un rebase (pe care l-am învățat deja), dar să vedem cum se comportă cherry-pick."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Asta e tot! Am vrut commit-urile `C2` și `C4`, iar git le-a plasat imediat sub noi. Simplu, nu?"
|
||||
],
|
||||
"command": "git cherry-pick C2 C4",
|
||||
"beforeCommand": "git checkout -b side; git commit; git commit; git commit; git checkout main; git commit;"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Pentru a finaliza acest nivel, pur și simplu copiază modificările din cele trei ramuri în `main`. Poți vedea ce commit-uri dorim să copiem în vizualizarea obiectivului.",
|
||||
""
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -14,6 +14,7 @@ exports.level = {
|
|||
"zh_TW": "分離 HEAD",
|
||||
"de_DE": "Den Kopf abtrennen",
|
||||
"ja": "HEADの分離",
|
||||
"ro":"Detașează-ți capul",
|
||||
"ru_RU": "Теряем голову, или detached HEAD",
|
||||
"ko": "HEAD 분리하기",
|
||||
"uk": "Втрачаємо голову чи detached HEAD",
|
||||
|
@ -36,6 +37,7 @@ exports.level = {
|
|||
"fr_FR": "Utilisez le label (identifiant) du commit pour aider !",
|
||||
"zh_TW": "使用 commit 上的標籤(hash)來幫助你!",
|
||||
"zh_CN": "使用提交记录上的标签(哈希值)来指定提交记录!",
|
||||
"ro": "Folosește eticheta (hash) de pe commit pentru ajutor!",
|
||||
"ru_RU": "Ориентируйся по идентификаторам (hash) коммитов.",
|
||||
"ko": "커밋에 있는 라벨(hash)을 활용하세요!",
|
||||
"uk": "Орієнтуйся по індентифікаторам (hash) комітів.",
|
||||
|
@ -901,6 +903,84 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Plimbându-te prin Git",
|
||||
"",
|
||||
"Înainte să trecem la unele dintre funcțiile mai avansate ale Git, este important să înțelegem diferitele moduri de a te deplasa prin arborele de commit-uri care reprezintă proiectul tău.",
|
||||
"",
|
||||
"Odată ce te simți confortabil să te miști prin acesta, puterile tale cu celelalte comenzi Git vor fi amplificate!",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## HEAD",
|
||||
"",
|
||||
"În primul rând, trebuie să vorbim despre \"HEAD\". HEAD este un nume simbolic pentru commit-ul pe care teai mutat în prezent -- este, practic, commit-ul pe care lucrezi în acel moment.",
|
||||
"",
|
||||
"HEAD întotdeauna indică cel mai recent commit, reflectat în arborele de commit-uri. Majoritatea comenzilor Git care fac modificări în arborele de commit-uri vor începe prin a modifica HEAD.",
|
||||
"",
|
||||
"În mod normal, HEAD indică numele unei ramuri (de exemplu, bugFix). Când faci un commit, starea ramurii bugFix se modifică și această modificare este vizibilă prin HEAD."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Să vedem asta în acțiune. Aici vom vedea HEAD înainte și după un commit."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Vezi! HEAD era ascuns sub ramura noastră `main` până acum."
|
||||
],
|
||||
"command": "git checkout C1; git checkout main; git commit; git checkout C2",
|
||||
"beforeCommand": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"### Detașarea HEAD-ului",
|
||||
"",
|
||||
"Detașarea HEAD-ului înseamnă pur și simplu să îl atașezi la un commit în loc de o ramură. Așa arată înainte:",
|
||||
"",
|
||||
"HEAD -> main -> C1",
|
||||
""
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Iar acum arată așa:",
|
||||
"",
|
||||
"HEAD -> C1"
|
||||
],
|
||||
"command": "git checkout C1",
|
||||
"beforeCommand": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Pentru a finaliza acest nivel, trebuie să detașăm HEAD de `bugFix` și să îl atașăm la commit în schimb.",
|
||||
"",
|
||||
"Specifică acest commit prin hash-ul său. Hash-ul fiecărui commit este afișat în cercul care reprezintă commit-ul."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -17,6 +17,7 @@ exports.level = {
|
|||
"fr_FR": "Vous pouvez utiliser soit les branches, soit les références relatives (HEAD~) pour spécifier la cible à rebaser",
|
||||
"zh_CN": "branch 或者是相对位置(HEAD~)都可以用來指定 rebase 的目标",
|
||||
"zh_TW": "你可以指定 branch 或者是相對位置(HEAD~)來表示 rebase 的目標",
|
||||
"ro":"Poți folosi fie ramuri, fie referințe relative (HEAD~) pentru a specifica ținta rebase-ului",
|
||||
"ru_RU": "Можно использовать либо ветки, либо относительные ссылки (HEAD~), чтобы указать цель для Rebase",
|
||||
"ja": "リベースする対象の指定には、ブランチ名や相対リファレンス(HEAD~)が使えます",
|
||||
"ko": "리베이스할 타겟으로 브랜치나 상대 참조(HEAD~)를 사용할 수 있습니다",
|
||||
|
@ -40,6 +41,7 @@ exports.level = {
|
|||
"fr_FR": "Introduction au rebase interactif",
|
||||
"zh_CN": "交互式 rebase",
|
||||
"zh_TW": "介紹互動式的 rebase",
|
||||
"ro": "Introducere în rebase interactiv",
|
||||
"ru_RU": "Введение в интерактивный Rebase",
|
||||
"ko": "인터랙티브 리베이스 소개",
|
||||
"uk": "Знайомство з інтерактивним rebase",
|
||||
|
@ -770,6 +772,72 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Git Rebase Interactiv",
|
||||
"",
|
||||
"Git cherry-pick este grozav atunci când știi ce commit-uri vrei (_și_ știi hash-urile lor) -- e greu să depășești simplitatea pe care o oferă.",
|
||||
"",
|
||||
"Dar ce se întâmplă când nu știi ce commit-uri vrei? Din fericire, git te ajută și în această situație! Putem folosi rebase-ul interactiv pentru asta -- este cea mai bună modalitate de a revizui o serie de commit-uri cărora urmează să le faci rebase.",
|
||||
"",
|
||||
"Hai să ne uităm în detalii..."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Rebase-ul interactiv înseamnă pur și simplu că folosești comanda `rebase` cu opțiunea `-i`.",
|
||||
"",
|
||||
"Dacă incluzi această opțiune, git va deschide o interfață pentru a-ți arăta ce commit-uri sunt pe cale să fie copiate sub ținta rebase-ului. De asemenea, îți arată hash-urile și mesajele commit-urilor, ceea ce este grozav pentru a înțelege ce reprezintă fiecare.",
|
||||
"",
|
||||
"În git-ul \"adevărat\", interfața înseamnă deschiderea unui fișier într-un editor de text (de exemplu `vim`). Pentru scopurile noastre, am construit o mică fereastră de dialog care se comportă la fel."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Când dialogul de rebase interactiv se deschide, ai posibilitatea de a face 3 lucruri diferite:",
|
||||
"",
|
||||
"* Poți reordona commit-urile pur și simplu schimbând ordinea lor în interfață (în fereastra noastră, asta înseamnă să tragi și să lași cu mouse-ul).",
|
||||
"* Poți alege să păstrezi toate commit-urile sau să omiți unele. Fiecare commit este setat să fie inclus prin butonul `pick` activ lângă el. Pentru a omite un commit, dezactivează butonul `pick`.",
|
||||
"",
|
||||
"* Merită de știut că în rebase-ul interactiv poți face multe alte lucruri, cum ar fi combinarea commit-urilor (squashing), modificarea mesajelor commit-urilor și chiar editarea lor. Pentru scopurile noastre, ne vom concentra doar pe aceste două operațiuni de mai sus.",
|
||||
"",
|
||||
"Perfect! Să vedem un exemplu."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Când apeși butonul, va apărea o fereastră de rebase interactiv. Reordonează unele commit-uri (sau simte-te liber să omiți unele) și vezi rezultatul!"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Boom! Git a copiat commit-urile exact așa cum le-ai specificat în interfață."
|
||||
],
|
||||
"command": "git rebase -i HEAD~4 --aboveAll",
|
||||
"beforeCommand": "git commit; git commit; git commit; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Pentru a finaliza acest nivel, fă un rebase interactiv și obține ordinea afișată în vizualizare. Amintește-ți că poți folosi întotdeauna `undo` sau `reset` pentru a corecta greșelile :D"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -14,6 +14,7 @@ exports.level = {
|
|||
"pt_BR": "Referências relativas (^)",
|
||||
"gl": "Referencias relativas (^)",
|
||||
"de_DE": "Relative Referenzen (^)",
|
||||
"ro":"Referințe relative (^)",
|
||||
"ru_RU": "Относительные ссылки (^)",
|
||||
"ko": "상대 참조 (^) (Relative Refs)",
|
||||
"uk": "Відносні посилання",
|
||||
|
@ -36,6 +37,7 @@ exports.level = {
|
|||
"gl": "Non se esqueza do operador circunflexo (^)",
|
||||
"zh_CN": "记住操作符(^)!",
|
||||
"zh_TW": "不要忘記插入(^)符號!",
|
||||
"ro": "Nu uita operatorul `^`",
|
||||
"ru_RU": "Не забудь оператор `^`",
|
||||
"ko": "(^)연산자를 기억하세요!",
|
||||
"uk": "Не забудь оператор `^`",
|
||||
|
@ -872,6 +874,81 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Referințe relative",
|
||||
"",
|
||||
"Navigarea în Git specificând hash-urile commit-urilor poate deveni puțin obositoare. În lumea reală nu vei avea o vizualizare a arborelui de commit-uri atât de frumoasă lângă terminalul tău, așa că va trebui să folosești `git log` pentru a vedea hash-urile.",
|
||||
"",
|
||||
"În plus, hash-urile sunt de obicei mult mai lungi în lumea reală a Git-ului. De exemplu, hash-ul commit-ului care a introdus nivelul anterior este `fed2da64c0efc5293610bdd892f82a58e8cbc5d8`. Nu este tocmai ușor de pronunțat...",
|
||||
"",
|
||||
"Partea bună este că Git este destul de inteligent cu hash-urile. El necesită doar să specifici suficiente caractere din hash pentru a identifica în mod unic commit-ul. Astfel că pot tasta `fed2` în loc de șirul lung de mai sus."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Așa cum am spus, specificarea commit-urilor prin hash nu este cea mai convenabilă metodă, motiv pentru care Git are referințe relative. Acestea sunt grozave!",
|
||||
"",
|
||||
"Cu referințele relative, poți începe de undeva memorabil (cum ar fi ramura `bugFix` sau `HEAD`) și să lucrezi de acolo.",
|
||||
"",
|
||||
"Commit-urile relative sunt puternice, dar aici vom introduce doar două moduri simple de a le utiliza:",
|
||||
"",
|
||||
"* Deplasarea în sus cu un singur commit folosind `^`",
|
||||
"* Deplasarea în sus de mai multe ori folosind `~<num>`"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Să începem cu operatorul `^`. De fiecare dată când îl adaugi la un nume de referință, îi spui lui Git să găsească părintele commit-ului specificat.",
|
||||
"",
|
||||
"Deci, spunând `main^` este echivalent cu \"primul părinte al lui `main`\".",
|
||||
"",
|
||||
"`main^^` este bunicul (strămoșul de a doua generație) al lui `main`",
|
||||
"",
|
||||
"Dă să trecem pe commit-ul deasupra lui main."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Ura! Gata. Mult mai ușor decât să scrii hash-ul commit-ului."
|
||||
],
|
||||
"command": "git checkout main^",
|
||||
"beforeCommand": "git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"De asemenea, poți referi `HEAD` ca o referință relativă. Să folosim asta de câteva ori pentru a ne deplasa în sus în arborele de commit-uri."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Ușor! Putem călători înapoi în timp cu `HEAD^`"
|
||||
],
|
||||
"command": "git checkout C3; git checkout HEAD^; git checkout HEAD^; git checkout HEAD^",
|
||||
"beforeCommand": "git commit; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Pentru a finaliza acest nivel, treci la părintele commit-ului `bugFix`. Aceasta va detașa `HEAD`.",
|
||||
"",
|
||||
"Poți specifica hash-ul dacă vrei, dar încearcă să folosești mai întâi referințe relative!"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -14,6 +14,7 @@ exports.level = {
|
|||
"gl": "Precisarás usar polo menos unha referencia directa (hash) para completar este nivel",
|
||||
"de_DE": "Du musst mindestens einen Hash benutzen, um dieses Level zu schaffen",
|
||||
"ja": "このレベルをクリアするには少なくとも一つの直接リファレンス(hash)を使用する必要があります",
|
||||
"ro":"Vei avea nevoie să folosești cel puțin o referință directă (hash) pentru a termina acest nivel",
|
||||
"ru_RU": "Понадобится использовать как минимум одну прямую ссылку (хеш), чтобы пройти этот уровень",
|
||||
"ko": "이번 레벨을 완료하려면 최소 한번은 직접 참조(해시)를 사용해야 합니다.",
|
||||
"uk": "Тобі потрібно використати як мінімум одне пряме посилання (хеш) щоб пройти цей рівень",
|
||||
|
@ -36,6 +37,7 @@ exports.level = {
|
|||
"fr_FR": "Références relatives #2 (~)",
|
||||
"zh_CN": "相对引用2(~)",
|
||||
"zh_TW": "相對引用二(~)",
|
||||
"ro": "Referințe relative #2 (~)",
|
||||
"ru_RU": 'Относительные ссылки №2',
|
||||
"ko": "상대 참조 #2 (~)",
|
||||
"uk": "Відносні посилання №2",
|
||||
|
@ -792,6 +794,77 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Operatorul \"~\"",
|
||||
"",
|
||||
"Să presupunem că vrei să te muți cu multe niveluri în sus în arborele de commit-uri. Ar putea fi obositor să tastezi `^` de mai multe ori, pentru acest scenariu Git are operatorul tilde (~).",
|
||||
"",
|
||||
"",
|
||||
"Operatorul tilde primește opțional un număr care specifică numărul de commit-uri părinte cu care vrei să te muți în sus. Să vedem cum funcționează."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Să specificăm un număr de commit-uri înapoi cu `~`."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Boom! Atât de concis -- referințele relative sunt grozave."
|
||||
],
|
||||
"command": "git checkout HEAD~4",
|
||||
"beforeCommand": "git commit; git commit; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Forțarea ramurilor",
|
||||
"",
|
||||
"Acum că ești expert în referințele relative, hai să le *folosim* pentru ceva.",
|
||||
"",
|
||||
"Una dintre cele mai comune modalități în care se folosesc referințele relative este pentru a muta ramurile. Poți atribui direct o ramură la un commit folosind opțiunea `-f`. Ceva de genul:",
|
||||
"",
|
||||
"`git branch -f main HEAD~3`",
|
||||
"",
|
||||
"Aceasta va muta (forțat) ramura main cu trei commit-uri în spate față de HEAD.",
|
||||
"",
|
||||
"*Notă: Într-un mediu real de git, `git branch -f` nu este permis pentru branch-ul curent.*"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Să vedem comanda anterioară în acțiune"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Grozav! Referințele relative ne-au oferit o modalitate concisă de a ne referi la `C1`, iar mutarea forțată (`-f`) ne-a oferit o modalitate rapidă de a muta o ramură la acea locație."
|
||||
],
|
||||
"command": "git branch -f main HEAD~3",
|
||||
"beforeCommand": "git commit; git commit; git commit; git checkout -b bugFix"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Acum că ai văzut referințele relative și mutarea forțată a ramurilor împreună, hai să le folosim pentru a rezolva următorul nivel.",
|
||||
"",
|
||||
"Pentru a completa acest nivel, mută `HEAD`, `main` și `bugFix` la destinațiile lor finale arătate în vizualizare."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -16,6 +16,7 @@ exports.level = {
|
|||
"ko": "Git에서 작업 되돌리기",
|
||||
"zh_CN": "撤销变更",
|
||||
"zh_TW": "在 git 中取消修改 ",
|
||||
"ro":"Anularea modificărilor în Git",
|
||||
"ru_RU": "Отмена изменений в Git",
|
||||
"uk": "Відміна змін в Git",
|
||||
"vi": "Hoàn tác thay đổi trong Git",
|
||||
|
@ -37,6 +38,7 @@ exports.level = {
|
|||
"zh_TW": "注意 revert 和 reset 使用不同的參數。",
|
||||
"ko": "revert와 reset이 받는 인자가 다름을 기억하세요",
|
||||
"ja": "revertとresetとで引数が異なることに注意。",
|
||||
"ro": "Observă că revert și reset primesc argumente diferite.",
|
||||
"ru_RU": "Обрати внимание, что revert и reset принимают разные параметры.",
|
||||
"uk": "Зверни увагу на те що revert та reset приймають різні параметри",
|
||||
"vi": "Lưu ý rằng hoàn tác (revert) và đặt lại (reset) có những đối số khác nhau.",
|
||||
|
@ -805,6 +807,69 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Anularea modificărilor în Git",
|
||||
"",
|
||||
"Există multe moduri de a anula modificările în Git. Și la fel ca la comitere, anularea modificărilor în Git are atât o componentă de nivel scăzut (staging-ul fișierelor sau al fragmentelor individuale) cât și o componentă de nivel înalt (modul în care modificările sunt efectiv anulate). Aplicația noastră se va concentra pe aceasta din urmă.",
|
||||
"",
|
||||
"Există două moduri principale de a anula modificările în Git -- unul este folosind `git reset` și celălalt este folosind `git revert`. Vom analiza fiecare dintre acestea în dialogul următor.",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"## Git Reset",
|
||||
"",
|
||||
"`git reset` anulează modificările mutând referința unei ramuri înapoi în timp la un commit mai vechi. În acest sens, poți să te gândești la el ca la o \"rescriere a istoriei\"; `git reset` va muta o ramură înapoi ca și cum commit-ul nu ar fi fost niciodată făcut.",
|
||||
"",
|
||||
"Să vedem cum arată asta:"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Frumos! Git a mutat pur și simplu referința ramurii main înapoi la `C1`; acum repozitoriul nostru local este într-o stare ca și cum `C2` nu ar fi existat niciodată."
|
||||
],
|
||||
"command": "git reset HEAD~1",
|
||||
"beforeCommand": "git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"## Git Revert",
|
||||
"",
|
||||
"Deși resetarea funcționează foarte bine pentru ramurile locale de pe propriul tău calculator, metoda de \"rescriere a istoriei\" nu funcționează pentru ramurile remote pe care le folosesc și alții.",
|
||||
"",
|
||||
"Pentru a anula modificările și a le *partaja* cu alții, trebuie să folosim `git revert`. Să vedem cum funcționează."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Ciudat, a apărut un nou commit sub commit-ul pe care voiam să-l anulăm. Asta pentru că noul commit `C2'` introduce *modificări* -- se întâmplă doar ca aceste modificări să fie exact cele care inversează modificările din commit-ul `C2`.",
|
||||
"",
|
||||
"Cu `revert`, poți să partajezi modificările tale pentru a le împărtăși cu ceilalți."
|
||||
],
|
||||
"command": "git revert HEAD",
|
||||
"beforeCommand": "git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Pentru a finaliza acest nivel, anulează ultimul commit atât pe ramura `local` cât și pe ramura `pushed`. Vei anula în total două commit-uri (câte unul pentru fiecare ramură).",
|
||||
"",
|
||||
"Ține minte că `pushed` este o ramură remote și `local` este o ramură locală -- acest lucru ar trebui să te ajute să alegi metoda potrivită."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -20,6 +20,7 @@ exports.level = {
|
|||
"ja": "9000回以上のrebase",
|
||||
"zh_CN": "多次 Rebase",
|
||||
"zh_TW": "N次Rebase",
|
||||
"ro":"Rebase de peste 9000 ori",
|
||||
"ru_RU": "Rebase over 9000 раз",
|
||||
"uk": "Rebase over 9000 разів",
|
||||
"vi": "Rebase hơn 9000 lần",
|
||||
|
@ -41,6 +42,7 @@ exports.level = {
|
|||
"ko": "아마도 main을 마지막에 업데이트하는 것이 가장 효율적인 방법일 것입니다...",
|
||||
"zh_CN": "记住,最后更新 main 分支可能是最高效的方法……",
|
||||
"zh_TW": "要記住喔! 把 main branch 留到最後更新可能是最有效率的方法。",
|
||||
"ro": "Amintește-ți, cea mai eficientă metodă ar putea fi să actualizezi main-ul doar la final...",
|
||||
"ru_RU": "Не забудь, что лучше всего сдвинуть мастер в самом конце...",
|
||||
"uk": "Не забувай, що краще всього буде перемістити main в самому кінці... ",
|
||||
"vi": "Hãy nhớ rằng, cách tốt nhất có thể là cập nhật nhánh `main` sau cùng...",
|
||||
|
@ -267,6 +269,24 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Rebase mai multe ramuri",
|
||||
"",
|
||||
"Avem o grămadă de ramuri aici! Hai să facem rebase la tot ce s-a lucrat în aceste ramuri pe main.",
|
||||
"",
|
||||
"Dar șefii ne complică puțin viața -- vor ca toate commit-urile să fie în ordine secvențială. Asta înseamnă că arborele nostru final ar trebui să aibă `C7'` jos, `C6'` deasupra lui și așa mai departe, totul în ordine.",
|
||||
"",
|
||||
"Dacă te încurci pe parcurs, nu ezita să folosești `reset` pentru a începe de la capăt. Asigură-te că verifici soluția noastră și vezi dacă poți să o faci cu mai puține comenzi!"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -19,6 +19,7 @@ exports.level = {
|
|||
"ja": "ブランチスパゲッティ",
|
||||
"zh_CN": "纠缠不清的分支",
|
||||
"zh_TW": "branch 漿糊",
|
||||
"ro": "Ramuri Spaghetti",
|
||||
"ru_RU": "Спутанные ветки",
|
||||
"uk": "Макарони з гілок",
|
||||
"vi": "Nhánh rối như canh hẹ",
|
||||
|
@ -40,6 +41,7 @@ exports.level = {
|
|||
"ko": "이 문제를 해결하는 방법은 여러가지가 있습니다! 체리픽(cherry-pick)이 가장 쉽지만 오래걸리는 방법이고, 리베이스(rebase -i)가 빠른 방법입니다",
|
||||
"zh_CN": "确保你是按照正确的顺序来操作!先操作分支 `one`, 然后 `two`, 最后才是 `three`",
|
||||
"zh_TW": "確認你是按照正確的順序來操作!先操作 branch `one`, 然後 `two`, 最後才是 `three`",
|
||||
"ro": "Asigură-te că faci totul în ordinea corectă! Ramura `one` mai întâi, apoi `two`, și apoi `three`",
|
||||
"ru_RU": "Убедись, что у нас всё по порядку! Сначала ветка `one`, потом `two` и только потом `three`",
|
||||
"uk": "Переконайся, що все йде за порядком! Спершу гілка `one`, потім `two`, і тільки потім `three`",
|
||||
"vi": "Hãy chắc chắn rằng bạn làm đúng thứ tự! Nhánh `one` trước, rồi `two`, rồi mới đến `three`",
|
||||
|
@ -289,6 +291,26 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Ramuri Spaghetti",
|
||||
"",
|
||||
"WOAHHHhhh! Avem un obiectiv destul de mare de atins în acest nivel.",
|
||||
"",
|
||||
"Aici avem `main` care este cu câteva commit-uri înaintea ramurilor `one`, `two` și `three`. Dintr-un motiv oarecare, trebuie să actualizăm aceste trei ramuri cu versiuni modificate ale ultimelor commit-uri de pe main.",
|
||||
"",
|
||||
"Ramura `one` are nevoie de o reordonare a acelor commit-uri și de excluderea/ștergerea lui `C5`. Ramura `two` are nevoie doar de o reordonare a commit-urilor, iar `three` are nevoie doar de un singur commit transferat!",
|
||||
"",
|
||||
"O să te lăsăm să descoperi cum să rezolvi asta -- asigură-te că verifici soluția noastră ulterior cu `show solution`. "
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -13,6 +13,7 @@ exports.level = {
|
|||
"gl": "Introducción a clone",
|
||||
"zh_CN": "Git Clone",
|
||||
"zh_TW": "介紹 clone",
|
||||
"ro":"Introducere în clonare",
|
||||
"ru_RU": "Введение в клонирование",
|
||||
"ko": "Clone 소개",
|
||||
"uk": "Знайомство з clone",
|
||||
|
@ -34,6 +35,7 @@ exports.level = {
|
|||
"pt_BR": "Basta fazer um git clone!",
|
||||
"gl": "¡Chega con facer git clone!",
|
||||
"zh_TW": "只要 git clone 就好了",
|
||||
"ro": "Doar git clone!",
|
||||
"ru_RU": "Простой git clone!",
|
||||
"ko": "그냥 git clone 하세요!",
|
||||
"uk": "Просто git clone!",
|
||||
|
@ -671,6 +673,63 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Git Remotes",
|
||||
"",
|
||||
"Repozitoriile remote nu sunt chiar atât de complicate. In lumea de astazi a cloud-ului, e ușor să crezi ca exista multă magie in spatele remote-urilor git, dar ele sunt de fapt doar copii ale repozitoriului tău pe un alt calculator. De obicei poți comunica cu acest alt calculator prin intermediul internetului, ceea ce iți permite să transferi commit-uri in ambele sensuri.",
|
||||
"",
|
||||
"Asta fiind spus, repo-urile remote au o serie de proprietăți interesante:",
|
||||
"",
|
||||
"- In primul rand, remote-urile sunt un backup excelent! Repositoriile git locale au capacitatea de a restaura fișiere la o stare anterioară (așa cum știi), dar toate informațiile sunt stocate local. Având copii ale repositoriului tău git pe alte calculatoare, poți pierde toate datele locale și totuși să continui de unde ai rămas.",
|
||||
"",
|
||||
"- Mai important, remote-urile fac ca programarea să fie socială! Acum că o copie a proiectului tău este găzduită în altă parte, prietenii tăi pot contribui cu ușurință la proiectul tău (sau pot obține ultimele tale modificări).",
|
||||
"",
|
||||
"A devenit foarte popular să folosești site-uri care vizualizează activitatea din jurul repo-urilor remote (cum ar fi [GitHub](https://github.com/)), dar repo-urile remote _întotdeauna_ servesc ca baza pentru aceste instrumente. Așa că este important să le înțelegi!"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Comanda noastră pentru a crea remote-uri",
|
||||
"",
|
||||
"Până acum, Learn Git Branching s-a concentrat pe învățarea elementelor de bază ale lucrului cu repo-uri _locale_ (branching, merging, rebasing etc). Cu toate acestea, acum că vrem să învățăm despre lucrul cu repo-uri remote, avem nevoie de o comandă pentru a configura mediul pentru aceste lecții. Această comandă va fi `git clone`.",
|
||||
"",
|
||||
"Tehnic vorbind, `git clone` în lumea reală este comanda pe care o folosești pentru a crea copii _locale_ ale repo-urilor remote (de pe GitHub, de exemplu). Folosim această comandă puțin diferit în `Learn Git Branching` -- aici `git clone` va crea un repo remote din cel local. Sigur că este opusul tehnic al comenzii reale, dar ajută la construirea conexiunii între clonare și lucrul cu repo-uri remote, așa că hai să mergem în modul acesta în continuare.",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Să începem încet și să vedem cum arată un repo remote în vizualizarea noastră.",
|
||||
""
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Iată-l! Acum avem un repo remote al proiectului nostru. Arată foarte asemănător, cu câteva diferențe vizuale pentru a face distincția clară -- în nivelurile următoare vei vedea cum împărtășim munca între aceste repo-uri."
|
||||
],
|
||||
"command": "git clone",
|
||||
"beforeCommand": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Pentru a finaliza acest nivel, pur și simplu execută `git clone` pe repo-ul tău existent. Învățarea adevărată va veni în lecțiile următoare."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -14,6 +14,7 @@ exports.level = {
|
|||
"gl": "Simulando o traballo no repositorio",
|
||||
"zh_CN": "模拟团队合作",
|
||||
"zh_TW": "模擬團隊合作",
|
||||
"ro": "Simularea colaborării în echipă",
|
||||
"ru_RU": "Коллективная работа",
|
||||
"uk": "Симуляція колективної роботи",
|
||||
"ko": "가짜 팀워크",
|
||||
|
@ -35,6 +36,7 @@ exports.level = {
|
|||
"gl": "Lembra que podes especifar cantos commits queres simular",
|
||||
"zh_CN": "记住你可以指定仿真提交的个数",
|
||||
"zh_TW": "你要記得指定要送多少個 commit 出去",
|
||||
"ro": "Amintește-ți că poți specifica numărul de commit-uri simulate",
|
||||
"ru_RU": "помните, Вы можете указать количество фейковых коммитов",
|
||||
"uk": "пам’ятай що ти можеш вказати кількість фейкових комітів",
|
||||
"ko": "가장할 커밋의 갯수를 조절할 수 있습니다.",
|
||||
|
@ -585,6 +587,60 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Simularea colaborării",
|
||||
"",
|
||||
"Aici este partea complicată -- pentru unele dintre lecțiile următoare, trebuie să învățăm cum să preluăm (tragem) modificările introduse în remote.",
|
||||
"",
|
||||
"Asta înseamnă că trebuie să \"pretindem\" că remote-ul a fost actualizat de unul dintre colegii / prietenii / colaboratorii tăi, uneori pe o anumită ramură sau cu un anumit număr de commit-uri.",
|
||||
"",
|
||||
"Pentru a face asta, am introdus comanda cu numele potrivit `git fakeTeamwork`! Este destul de explicită, să vedem o demonstrație..."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Comportamentul implicit al comenzii `fakeTeamwork` este să adauge un commit pe ramura main."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Iată-ne -- remote-ul a fost actualizat cu un nou commit, iar noi nu am descărcat încă acel commit pentru că nu am rulat `git fetch`."
|
||||
],
|
||||
"command": "git fakeTeamwork",
|
||||
"beforeCommand": "git clone"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"De asemenea, poți specifica numărul de commit-uri sau ramura adăugându-le la comandă."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Cu o singură comandă am simulat că un coleg a partajat trei commit-uri pe ramura `foo` a remote-ului nostru."
|
||||
],
|
||||
"command": "git fakeTeamwork foo 3",
|
||||
"beforeCommand": "git branch foo; git clone"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Următoarele niveluri vor fi destul de dificile, așa că cerem mai multe de la tine în acest nivel.",
|
||||
"",
|
||||
"Astfel, încearcă să creezi un remote (cu `git clone`), să simulezi câteva modificări pe acel remote, să faci un commit local și apoi să descarci modificările de la remote și să le îmbini local la tine. Este ca și cum ar fi câteva lecții într-una singură!"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -14,6 +14,7 @@ exports.level = {
|
|||
"gl": "Git Fetch",
|
||||
"zh_CN": "Git Fetch",
|
||||
"zh_TW": "git fetch",
|
||||
"ro": "Git Fetch",
|
||||
"ru_RU": "Git fetch",
|
||||
"uk": "Git fetch",
|
||||
"ko": "Git Fetch",
|
||||
|
@ -36,6 +37,7 @@ exports.level = {
|
|||
"gl": "¡Sinxelamente fai git fetch!",
|
||||
"zh_CN": "只需要运行 git fetch 命令!",
|
||||
"zh_TW": "只要下 git fetch 指令",
|
||||
"ro": "Doar rulează git fetch!",
|
||||
"ru_RU": "Просто выполните git fetch!",
|
||||
"uk": "Просто виконай git fetch!",
|
||||
"ko": "그냥 git fetch를 하세요!",
|
||||
|
@ -850,6 +852,79 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Git Fetch",
|
||||
"",
|
||||
"Lucrul cu remote-uri în Git se reduce la transferul de date _către_ și _de la_ alte repozitorii. Atâta timp cât putem trimite commit-uri în ambele direcții, putem împărtăși orice tip de actualizare care este urmărită de Git (și astfel putem împărtăși muncă, fișiere noi, idei noi, scrisori de dragoste etc.).",
|
||||
"",
|
||||
"În această lecție vom învăța cum să preluăm date _de la_ un repozitoriu remote -- comanda pentru asta se numește `git fetch`.",
|
||||
"",
|
||||
"Veți observa că, pe măsură ce actualizăm reprezentarea noastră a repozitorului remote, ramurile noastre _remote_ se vor actualiza pentru a reflecta această nouă reprezentare. Acest lucru este legat de lecția anterioară despre ramurile remote."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Înainte de a intra în detalii despre comanda `git fetch`, să o vedem în acțiune! Aici avem un repozitoriu remote care conține două commit-uri pe care repozitorul nostru local nu le are."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Perfect! Commit-urile `C2` și `C3` au fost descărcate în repozitorul nostru local, iar ramura noastră remote `o/main` a fost actualizată pentru a reflecta acest lucru."
|
||||
],
|
||||
"command": "git fetch",
|
||||
"beforeCommand": "git clone; git fakeTeamwork 2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Ce face fetch",
|
||||
"",
|
||||
"`git fetch` efectuează doi pași principali, și doar acești doi pași principali. Anume:",
|
||||
"",
|
||||
"* descarcă commit-urile pe care remote-ul le are, dar lipsesc din repozitorul nostru local, și...",
|
||||
"* actualizează unde indică ramurile noastre remote (de exemplu, `o/main`)",
|
||||
"",
|
||||
"`git fetch` sincronizează practic reprezentarea noastră _locală_ a repozitorului remote cu ceea ce este _de fapt_ repozitorul remote (în acest moment).",
|
||||
"",
|
||||
"Dacă îți amintești din lecția anterioară, am spus că ramurile remote reflectă starea repozitoriilor remote _de la ultima dată_ când ai vorbit cu aceste repozitorii. `git fetch` este modul în care vorbești cu aceste remote-uri! Sper că acum conexiunea dintre ramurile remote și `git fetch` este clară.",
|
||||
"",
|
||||
"`git fetch` comunică de obicei cu repozitoriul remote prin intermediul internetului (printr-un protocol precum `http://` sau `git://`).",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Ce nu face fetch",
|
||||
"",
|
||||
"`git fetch`, totuși, nu schimbă nimic în starea _locală_ a repozitoriului tău. Nu va actualiza ramura ta `main` și nu va schimba nimic în modul în care arată fișierele tale acum.",
|
||||
"",
|
||||
"Este important să înțelegi asta, deoarece mulți dezvoltatori cred că rularea `git fetch` va face ca munca lor locală să reflecte starea remote-ului. Acesta poate descărca toate datele necesare pentru a face asta, dar nu _modifică_ niciunul dintre fișierele tale locale. Vom învăța comenzi pentru a face acest lucru în lecțiile următoare :D",
|
||||
"",
|
||||
"Deci, la sfârșitul zilei, te poți gândi la `git fetch` ca la un pas de descărcare."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Pentru a termina acest nivel, pur și simplu rulează `git fetch` și descarcă toate commit-urile!"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -13,6 +13,7 @@ exports.level = {
|
|||
"gl": "Parámetros de fetch",
|
||||
"de_DE": "Optionen für Fetch",
|
||||
"ja": "Fetchの引数",
|
||||
"ro":"Argumente pentru fetch",
|
||||
"ru_RU": "Аргументы для fetch",
|
||||
"ko": "Fetch의 인자들",
|
||||
"uk": "Аргументи для fetch",
|
||||
|
@ -33,6 +34,7 @@ exports.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",
|
||||
"ja": "コミットIDの入れ替わりに注意!スライドを復習するには`help level`を実行",
|
||||
"ro": "Fii atent la modul în care ID-urile commit-urilor pot fi inversate! Poți citi din nou slide-urile cu comanda \"help level\"",
|
||||
"ru_RU": "Обратите внимание на то, как номера коммитов могут меняться! Вы можете прочесть слайды вновь, воспользовавшись командой \"help level\"",
|
||||
"ko": "커밋 ID가 바뀔수도있으니 주의하세요! \"help level\"을 입력하면 슬라이드들을 다시 읽어볼수 있습니다.",
|
||||
"uk": "Зверни увагу на те, що номери комітів можуть змінюватися! Слайди уроку можна переглянути ще раз командою \"help level\"",
|
||||
|
@ -1286,6 +1288,129 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Argumentele git fetch",
|
||||
"",
|
||||
"Am învățat deja totul despre argumentele git push, acest parametru fain `<locatie>`, și chiar și refspec-urile cu două puncte (`<sursa>:<destinatie>`). Putem folosi toate aceste cunoștințe și pentru `git fetch`?",
|
||||
"",
|
||||
"Ai ghicit! Argumentele pentru `git fetch` sunt de fapt *foarte, foarte* asemănătoare cu cele pentru `git push`. Sunt aceleași concepte, doar că aplicate în direcția opusă (deoarece acum descarci commit-uri în loc să le încarci).",
|
||||
"",
|
||||
"Să luăm fiecare concept pe rând..."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Parametrul `<locatie>`",
|
||||
"",
|
||||
"Dacă specifici o locatie la `git fetch`, cum ar fi în următoarea comandă:",
|
||||
"",
|
||||
"`git fetch origin foo`",
|
||||
"",
|
||||
"Git se va duce la ramura `foo` de pe remote, va aduce toate commit-urile care nu sunt prezente local și le va plasa pe ramura locală `o/foo`.",
|
||||
"",
|
||||
"Hai să vedem asta în acțiune."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Prin specificarea unei locații..."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Descărcăm doar commit-urile de pe `foo` și le plasăm pe `o/foo`."
|
||||
],
|
||||
"command": "git fetch origin foo",
|
||||
"beforeCommand": "git branch foo; git clone; git fakeTeamwork foo 2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Te întrebi poate -- de ce a pus git acele commit-uri pe ramura `o/foo` de pe remote în loc să le pună direct pe ramura locală `foo`? Nu cumva parametrul `<locatie>` este un loc care există atât local cât și pe remote?",
|
||||
"",
|
||||
"Ei bine, git face o excepție specială în acest caz pentru că s-ar putea să ai lucruri pe ramura `foo` care nu vrei să le strici! Asta se leagă de lecția anterioară despre `git fetch` -- nu actualizează ramurile tale locale care nu sunt legate de remote, ci doar descarcă commit-urile (astfel încât să le poți inspecta sau integra mai târziu).",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"În acest caz, ce se întâmplă dacă specific locul sursă și destinație explicit cu `<sursa>:<destinatie>`?",
|
||||
"",
|
||||
"Dacă ești suficient de pasionat să aduci commit-uri *direct* pe o ramură locală, atunci poți specifica asta cu o refspec cu două puncte. Nu poți aduce commit-uri pe o ramură pe care deja te afli (checkout), dar în rest git îți va permite asta.",
|
||||
"",
|
||||
"Aici este singura problemă -- `<sursa>` este acum un loc pe *remote* și `<destinatie>` este un *loc local* unde să pui acele commit-uri. Este exact opusul la git push, și asta are sens deoarece transferăm date în direcția opusă!",
|
||||
"",
|
||||
"Acestea fiind spuse, dezvoltatorii rareori fac asta în practică. Îl introduc aici mai mult ca o modalitate de a conceptualiza cum `fetch` și `push` sunt foarte asemănătoare, doar că în direcții opuse.",
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Hai să vedem această nebunie în acțiune:"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Wow! Vezi, git a rezolvat `C2` ca un loc pe remote și apoi a descărcat acele commit-uri în `bar` (care era o ramură locală)."
|
||||
],
|
||||
"command": "git fetch origin C2:bar",
|
||||
"beforeCommand": "git branch foo; git clone; git branch bar; git fakeTeamwork foo 2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Ce se întâmplă dacă destinația nu există înainte să rulez comanda? Să vedem ultimul exemplu, dar de data aceasta fără ca `bar` să existe.",
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Vezi? E EXACT ca la git push. Git a creat destinația local înainte de a face fetch, la fel cum git va crea destinația pe remote înainte de a face push (dacă nu există).",
|
||||
],
|
||||
"command": "git fetch origin C2:bar",
|
||||
"beforeCommand": "git branch foo; git clone; git fakeTeamwork foo 2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Nici un argument?",
|
||||
"",
|
||||
"Dacă `git fetch` nu primește nici un argument, atunci pur și simplu descarcă toate commit-urile de pe remote pe toate ramurile remote..."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Foarte simplu, dar merită să fie văzut măcar o dată."
|
||||
],
|
||||
"command": "git fetch",
|
||||
"beforeCommand": "git branch foo; git clone; git fakeTeamwork foo; git fakeTeamwork main"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Ok, destul cu vorbitul! Pentru a termina acest nivel, adu doar commit-urile specificate în vizualizarea folosind `fetch`. Experimentează cu aceste comenzi!",
|
||||
"",
|
||||
"Pentru ambele comenzi `fetch`, va trebui să specifici sursa și destinația. Fii atent la vizualizare, deoarece ID-urile pot fi schimbate între ele!"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -13,6 +13,7 @@ exports.level = {
|
|||
"de_DE": "Abweichende Historie",
|
||||
"fr_FR": "Historique divergent",
|
||||
"ja": "履歴の分岐",
|
||||
"ro": "Istorie divergentă",
|
||||
"ru_RU": "Расхождение в истории",
|
||||
"uk": "Розбіжності в історії",
|
||||
"ko": "엇갈린 히스토리",
|
||||
|
@ -33,6 +34,7 @@ exports.level = {
|
|||
"de_DE": "Beachte die Reihenfolge in der Zieldarstellung",
|
||||
"ja": "ゴールのツリーの順番を参考にすること",
|
||||
"fr_FR": "Regardez l'ordre dans la fenêtre de visualisation d'objectif",
|
||||
"ro": "Verifică ordinea din vizualizarea obiectivului",
|
||||
"ru_RU": "проверьте сортировку в визуализации цели",
|
||||
"uk": "перевірте порядок в візуалізації цілі",
|
||||
"ko": "순서는 goal을 참고하세요",
|
||||
|
@ -1330,6 +1332,149 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Lucru Divergent",
|
||||
"",
|
||||
"Până acum am văzut cum să facem `pull`la commit-uri de la alții și cum să facem `push` modificărilor noastre. Pare destul de simplu, așa că de ce se confundă oamenii?",
|
||||
"",
|
||||
"Dificultatea apare atunci când istoria repozitoriului *diverge*. Înainte de a discuta detaliile, să vedem un exemplu...",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Imaginează-ți că clonezi un repozitoriu luni și începi să lucrezi la o funcționalitate. Până vineri ești gata să publici funcționalitatea ta -- dar oh nu! Colegii tăi au scris o grămadă de cod în timpul săptămânii care a făcut ca funcționalitatea ta să fie învechită. Ei au publicat aceste commit-uri în repozitoriul remote, așa că *munca ta* este acum bazată pe o versiune *veche* a proiectului care nu mai este relevantă.",
|
||||
"",
|
||||
"În acest caz, comanda `git push` este ambiguă. Dacă rulezi `git push`, ar trebui git să schimbe repozitoriul remote înapoi la starea de luni? Ar trebui să încerce să adauge codul tău fără a elimina noul cod? Sau ar trebui să ignore complet modificările tale deoarece sunt complet învechite?",
|
||||
"",
|
||||
"Fiindcă există atât de multă ambiguitate în această situație (unde istoria diverge), git nu îți permite să faci `push` modificărilor tale. De fapt, te forțează să integrezi starea cea mai recentă a remote-ului înainte de a putea împărtăși munca ta."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Atâtea vorbe! Să vedem asta în acțiune."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Vezi? Nu s-a întâmplat nimic pentru că comanda a eșuat. `git push` eșuează deoarece ultimul tău commit `C3` este bazat pe remote-ul de la `C1`. Între timp, remote-ul a fost actualizat la `C2`, așa că git respinge push-ul tău."
|
||||
],
|
||||
"command": "git push",
|
||||
"beforeCommand": "git clone; git fakeTeamwork; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Cum rezolvi această situație? E simplu, tot ce trebuie să faci este să îți bazezi munca pe cea mai recentă versiune a ramurii remote.",
|
||||
"",
|
||||
"Există câteva moduri de a face asta, dar cel mai direct este să îți muți munca prin rebase. Să vedem cum arată asta."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Acum dacă facem rebase înainte de a face push..."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Boom! Am actualizat reprezentarea locală a remote-ului cu `git fetch`, am făcut rebase muncii noastre pentru a reflecta noile modificări din remote și apoi le-am partajat cu `git push`."
|
||||
],
|
||||
"command": "git fetch; git rebase o/main; git push",
|
||||
"beforeCommand": "git clone; git fakeTeamwork; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Există alte moduri de a actualiza munca mea atunci când repozitoriul remote a fost actualizat? Desigur! Să vedem același lucru, dar cu `merge`.",
|
||||
"",
|
||||
"Deși `git merge` nu mută munca ta (ci creează un commit de merge), este o modalitate de a spune git că ai integrat toate modificările din remote. Acest lucru se datorează faptului că ramura remote este acum un *strămoș* al ramurii tale, ceea ce înseamnă că commit-ul tău reflectă toate commit-urile din ramura remote.",
|
||||
"",
|
||||
"Să vedem asta în acțiune..."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Și acum dacă în loc de rebase facem merge..."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Boom! Am actualizat reprezentarea locală a remote-ului cu `git fetch`, *am îmbinat* noile modificări în munca noastră (pentru a reflecta noile modificări din remote) și apoi le-am împins cu `git push`."
|
||||
],
|
||||
"command": "git fetch; git merge o/main; git push",
|
||||
"beforeCommand": "git clone; git fakeTeamwork; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Minunat! Există vreo modalitate de a face asta fără să tastez atât de multe comenzi?",
|
||||
"",
|
||||
"Desigur -- deja știi că `git pull` este doar o scurtătură pentru un fetch și un merge. Din fericire, `git pull --rebase` este o scurtătură pentru un fetch și un rebase!",
|
||||
"",
|
||||
"Să vedem aceste comenzi scurtate în acțiune."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Prima dată cu `--rebase`..."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Exact ca înainte! Doar că mult mai scurt."
|
||||
],
|
||||
"command": "git pull --rebase; git push",
|
||||
"beforeCommand": "git clone; git fakeTeamwork; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Și acum cu `pull` obișnuit"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Din nou, exact ca înainte!"
|
||||
],
|
||||
"command": "git pull; git push",
|
||||
"beforeCommand": "git clone; git fakeTeamwork; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Această secvență de `fetch`, `rebase`/`merge` și `push` este foarte comună. În lecțiile viitoare vom explora variante mai complicate ale acestui flux de lucru, dar pentru acum hai să încercăm asta.",
|
||||
"",
|
||||
"Pentru a rezolva acest nivel, urmează acești pași:",
|
||||
"",
|
||||
"* Clonează repozitoriul tău",
|
||||
"* Simulează o muncă a cuiva din echipă (1 commit)",
|
||||
"* Crează un commit cu munca ta (1 commit)",
|
||||
"* Publică munca ta prin *rebase*"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -5,6 +5,7 @@ exports.level = {
|
|||
"hint": {
|
||||
"en_US": "Make the feature branch from the local main before resetting it back to be the same as origin's main",
|
||||
"de_DE": "Erstelle einen Feature-Branch ausgehend vom lokalen Main-Branch, bevor du den Main-Branch auf den origin/main zurücksetzt.",
|
||||
"ro":"Creează o ramură feature din main-ul local înainte de a reseta main-ul pentru a fi la fel cu origin/main.",
|
||||
"ru_RU": "Создайте новую feature ветвь от main перед тем, как откатить изменения в main до состояния o/main.",
|
||||
"uk": "Створіть нову feature гілку від локального main перед тим, як відкотити зміни в main до стану o/main.",
|
||||
"zh_CN": "从本地的main创建一个feature分支, 然后重置main和origin main保持一致。",
|
||||
|
@ -24,6 +25,7 @@ exports.level = {
|
|||
"name": {
|
||||
"en_US": "Locked Main",
|
||||
"de_DE": "Gesperrter Main-Branch",
|
||||
"ro": "Main Blocat",
|
||||
"ru_RU": "Заблокированная ветвь main",
|
||||
"uk": "Заблокована гілка main",
|
||||
"zh_CN": "锁定的Main(Locked Main)",
|
||||
|
@ -161,6 +163,46 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Remote Respins!",
|
||||
"",
|
||||
"Dacă lucrezi într-o echipă mare, este probabil ca ramura `main` să fie blocată și să necesite un proces de Pull Request (Cerere pentru a partaja schimbări) pentru a îmbina modificările. Dacă faci commit direct pe `main` local și încerci să faci push, vei primi un mesaj similar cu acesta:",
|
||||
"",
|
||||
"```",
|
||||
" ! [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": [
|
||||
"## De ce a fost respins?",
|
||||
"",
|
||||
"Ramura remote a respins push-ul commit-urilor direct pe `main` din cauza politicii de pe `main` care necesită utilizarea Pull Request-urilor.",
|
||||
"",
|
||||
"Tu ai intenționat să urmezi procesul de creare a unei ramuri, apoi să faci push acelei ramuri și să faci un Pull Request, dar ai uitat și ai făcut commit direct pe `main`. Acum ești blocat și nu poți face push cu modificările tale."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Soluția",
|
||||
"",
|
||||
"Creează o altă ramură numită `feature` și împinge-o către remote. De asemenea, resetează ramura ta `main` pentru a fi sincronizată cu remote, altfel s-ar putea să ai probleme data viitoare când faci pull și commit-ul altcuiva intră în conflict cu al tău.",
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -13,6 +13,7 @@ exports.level = {
|
|||
"de_DE": "Änderungen vom Remote zusammenführen",
|
||||
"ja": "リモートとのmerge",
|
||||
"fr_FR": "Fusionner avec les branches distantes",
|
||||
"ro":"Fuzionare cu remote",
|
||||
"ru_RU": "Слияние с удалённым репозиторием",
|
||||
"ko": "원격 작업과 merge하기",
|
||||
"uk": "Мердж з віддаленим репозиторієм",
|
||||
|
@ -33,6 +34,7 @@ exports.level = {
|
|||
"de_DE": "Beachte den Ziel-Baum!",
|
||||
"ja": "ゴールツリーをよく見てください!",
|
||||
"fr_FR": "Respectez l'arbre représentant l'objectif !",
|
||||
"ro": "Fii atent la arborele din vizualizare!",
|
||||
"ru_RU": "Внимательно посмотрите на цель уровня!",
|
||||
"ko": "goal을 잘 살펴보세요!",
|
||||
"uk": "Уважно подивись як має виглядати результат!",
|
||||
|
@ -494,6 +496,51 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## De ce nu facem merge?",
|
||||
"",
|
||||
"Pentru a face push noilor actualizări către remote, tot ce trebuie să faci este să *încorporezi* ultimele modificări de pe remote. Asta înseamnă că poți face fie rebase *sau* merge pe ramura remote (de exemplu, `o/main`).",
|
||||
"",
|
||||
"Deci, dacă poți face oricare dintre metode, de ce lecțiile s-au concentrat până acum pe rebase? De ce nu există dragoste pentru `merge` atunci când lucrăm cu remote?",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Există multe dezbateri în comunitatea dezvoltatorilor despre avantajele și dezavantajele între merge și rebase. Iată avantajele și dezavantajele generale ale rebase-ului:",
|
||||
"",
|
||||
"Avantaje:",
|
||||
"",
|
||||
"* Rebase-ul face ca arborele tău de commit-uri să arate foarte curat, deoarece totul este într-o linie dreaptă",
|
||||
"",
|
||||
"Dezavantaje:",
|
||||
"",
|
||||
"* Rebase-ul modifică istoricul arborelui de commit-uri.",
|
||||
"",
|
||||
"De exemplu, commit-ul `C1` poate fi mutat *după* `C3`. Apoi pare că munca pentru `C1'` a venit după `C3`, când de fapt a fost finalizată înainte.",
|
||||
"",
|
||||
"Unii dezvoltatori iubesc să păstreze istoria și, prin urmare, preferă să facă merge. Alții (ca mine) preferă să aibă un arbore de commit-uri curat și preferă rebase-ul. Totul se reduce la preferințe :D"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Pentru acest nivel, să încercăm să rezolvăm nivelul anterior, dar cu *merge* în schimb. Poate fi puțin complicat, dar ilustrează bine punctul."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -13,6 +13,7 @@ exports.level = {
|
|||
"de_DE": "Git Pull",
|
||||
"ja": "Git Pull",
|
||||
"fr_FR": "Git pull",
|
||||
"ro": "Git pull",
|
||||
"ru_RU": "Git pull",
|
||||
"uk": "Git pull",
|
||||
"ko": "Git pull",
|
||||
|
@ -33,6 +34,7 @@ exports.level = {
|
|||
"de_DE": "Führe einfach git pull aus.",
|
||||
"ja": "単にgit pullを実行!",
|
||||
"fr_FR": "Utilisez facilement git pull !",
|
||||
"ro": "Pur și simplu rulează git pull!",
|
||||
"ru_RU": "Запустите комманду git pull !",
|
||||
"uk": "Просто виконай git pull !",
|
||||
"ko": "그냥 git pull을 하세요!",
|
||||
|
@ -574,6 +576,65 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Git Pull",
|
||||
"",
|
||||
"Acum că am văzut cum să preluăm datele de la un repozitoriu remote cu `git fetch`, hai să actualizăm munca noastră pentru a reflecta acele schimbări!",
|
||||
"",
|
||||
"Există, de fapt, multe moduri de a face asta -- odată ce ai noi commit-uri disponibile local, le poți integra ca și cum ar fi commit-uri normale pe alte ramuri. Asta înseamnă că poți executa comenzi precum:",
|
||||
"",
|
||||
"* `git cherry-pick o/main`",
|
||||
"* `git rebase o/main`",
|
||||
"* `git merge o/main`",
|
||||
"* etc., etc.",
|
||||
"",
|
||||
"De fapt, fluxul de lucru de *preluare* a schimbărilor remote și apoi *combinarea* lor este atât de comun încât git oferă o comandă care face ambele lucruri deodată! Acea comandă este `git pull`."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Să vedem mai întâi un `fetch` și un `merge` executate secvențial."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Boom -- am descărcat `C3` cu un `fetch` și apoi am combinat acea muncă cu `git merge o/main`. Acum ramura noastră `main` reflectă noua muncă de la remote (în acest caz, numit `origin`)"
|
||||
],
|
||||
"command": "git fetch; git merge o/main",
|
||||
"beforeCommand": "git clone; git commit; git fakeTeamwork"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Ce s-ar întâmpla dacă am folosi `git pull` în schimb?"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Exact același lucru! Asta ar trebui să facă foarte clar faptul că `git pull` este practic o scurtătură pentru un `git fetch` urmat de un merge al oricărei ramuri care a fost tocmai preluată."
|
||||
],
|
||||
"command": "git pull",
|
||||
"beforeCommand": "git clone; git commit; git fakeTeamwork"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Vom explora detaliile lui `git pull` mai târziu (inclusiv opțiuni și argumente), dar pentru acum hai să testăm comanda în acest nivel.",
|
||||
"",
|
||||
"Ține minte -- poți rezolva acest nivel folosind doar `fetch` și `merge`, dar asta te va costa o comandă suplimentară :P"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -14,6 +14,7 @@ exports.level = {
|
|||
"de_DE": "Optionen für Pull",
|
||||
"ja": "Pullの引数",
|
||||
"fr_FR": "Arguments de pull",
|
||||
"ro": "Argumente pentru pull",
|
||||
"ru_RU": "Аргументы для pull",
|
||||
"ko": "pull 인자들",
|
||||
"uk": "Аргументи pull",
|
||||
|
@ -35,6 +36,7 @@ exports.level = {
|
|||
"de_DE": "Du kannst neue lokale Branches mittels fetch / pull erstellen",
|
||||
"ja": "Fetchとpullの引数を利用してローカルで新規ブランチを作成できるのをお忘れなく",
|
||||
"fr_FR": "Vous pouvez aussi créer une nouvelle branche locale avec les arguments de fetch/pull",
|
||||
"ro":"Amintește-ți că poți crea ramuri locale noi folosind argumentele la fetch/pull",
|
||||
"ru_RU": "Напоминаю, что новые ветки можно создавать и с помощью команд fetch/pull",
|
||||
"ko": "fetch/pull 과 인자들로 새 로컬 브랜치를 생성할수 있다는것을 기억하세요.",
|
||||
"uk": "Пам'ятай, що ти можеш створювати нові гілки, використовуючи fetch/pull з аргументами",
|
||||
|
@ -868,6 +870,80 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Argumente pentru git pull",
|
||||
"",
|
||||
"Acum că știi practic *tot* ce este de știut despre argumentele pentru `git fetch` și `git push`, nu mai rămâne aproape nimic de acoperit pentru git pull :)",
|
||||
"",
|
||||
"Asta pentru că, la sfârșitul zilei, git pull este *cu adevărat* doar o prescurtare pentru un fetch urmat de un merge al ceea ce tocmai a fost fetch-uit. Poți să-l consideri ca și cum ai rula git fetch cu aceleași argumente specificate și apoi să faci merge în locul unde au ajuns acele commit-uri.",
|
||||
"",
|
||||
"Aceasta se aplică chiar și atunci când folosești argumente foarte complicate. Să vedem câteva exemple:"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Iată câteva comenzi echivalente în git:",
|
||||
"",
|
||||
"`git pull origin foo` este echivalent cu:",
|
||||
"",
|
||||
"`git fetch origin foo; git merge o/foo`",
|
||||
"",
|
||||
"Și...",
|
||||
"",
|
||||
"`git pull origin bar:bugFix` e echivalent:",
|
||||
"",
|
||||
"`git fetch origin bar:bugFix; git merge bugFix`",
|
||||
"",
|
||||
"Vezi? git pull este cu adevărat doar o prescurtare pentru fetch + merge, iar tot ce îi pasă lui git pull este unde au ajuns commit-urile (argumentul `destinatie` pe care îl determină în timpul fetch-ului).",
|
||||
"",
|
||||
"Să vedem o demonstrație:"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Dacă specificăm locul de unde să facem fetch, totul se întâmplă ca înainte cu fetch, dar vom face merge cu ceea ce tocmai am fetch-uit."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Vezi! Specificând `main`, am descărcat commit-urile în `o/main` ca de obicei. Apoi am făcut merge de `o/main` în locul unde ne aflăm acum, *indiferent* de unde ne aflam."
|
||||
],
|
||||
"command": "git pull origin main",
|
||||
"beforeCommand": "git clone; go -b bar; git commit; git fakeTeamwork"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Funcționează și dacă specificăm `<sursă>` și `<destinație>`? Sigur că da! Să vedem:"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Wow, o MULȚIME de lucruri într-o singură comandă. Am creat o nouă ramură locală numit `foo`, am descărcat commit-urile de pe `main` de la remote în această ramură `foo`, și apoi am făcut merge acestuia în ramura curentă `bar`."
|
||||
],
|
||||
"command": "git pull origin main:foo",
|
||||
"beforeCommand": "git clone; git fakeTeamwork; go -b bar; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Ok, pentru a termina, încearcă să atingi starea vizualizată în obiectiv. Vei avea nevoie să descarci câteva commit-uri, să creezi câteva ramuri noi și să faci merge unor ramuri în altele, dar nu ar trebui să fie prea multe comenzi :P"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -16,6 +16,7 @@ exports.level = {
|
|||
"de_DE": "Git Push",
|
||||
"ja": "Git Push",
|
||||
"fr_FR": "Git push",
|
||||
"ro": "Git Push",
|
||||
"ru_RU": "Git push",
|
||||
"uk": "Git push",
|
||||
"ko": "Git push",
|
||||
|
@ -35,6 +36,7 @@ exports.level = {
|
|||
"de_DE": "Denk dran, dass du einen Clone brauchst bevor du Pushen kannst!",
|
||||
"ja": "Pushができるようになるには、まずリポジトリをcloneする必要があるのをお忘れなく",
|
||||
"fr_FR": "Rappelez-vous que vous devez cloner avant de pouvoir faire un push !",
|
||||
"ro":"Amintiți-vă că trebuie să clonați înainte de a putea face push!",
|
||||
"ru_RU": "Помните, что прежде чем push-ить вам нужно склонировать репозиторий!",
|
||||
"uk": "Пам’ятай, що перед тим як щось push-нути потрібно склонувати репозиторій!",
|
||||
"ko": "push를 하기전에 clone을 먼저해야 된다는것을 기억하세요!",
|
||||
|
@ -425,6 +427,49 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Git Push",
|
||||
"",
|
||||
"Ok, deci am adus modificările de la remote și le-am integrat în munca mea locală. E grozav și așa... dar cum îmi pot împărtăși _eu_ munca mea minunată cu toată lumea?",
|
||||
"",
|
||||
"Bine, modul de a încărca partaja este opusul descărcării. Și care este opusul lui `git pull`? `git push`!",
|
||||
"",
|
||||
"`git push` este responsabil pentru încărcarea _modificărilor tale_ către un remote specificat și actualizarea acelui remote pentru a integra noile tale commit-uri. Odată ce `git push` se finalizează, toți prietenii tăi pot descărca munca ta de pe remote.",
|
||||
"",
|
||||
"Te poți gândi la `git push` ca la o comandă pentru a \"publica\" munca ta. Are câteva subtilități cu care vom lucra în curând, dar să începem cu pași mici...",
|
||||
"",
|
||||
"*notă -- comportamentul lui `git push` fără argumente variază în funcție de o setare git numită `push.default`. Valoarea implicită pentru această setare depinde de versiunea de git pe care o folosești, dar vom folosi valoarea `upstream` în lecțiile noastre. Nu este o problemă mare, dar merită să verifici setările înainte de a face push în proiectele tale.*"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Aici avem câteva modificări pe care remote-ul nu le are. Să le încărcăm!"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Remote-ul a primit commit-ul `C2`, ramura `main` de pe remote a fost actualizată pentru a indica către `C2`, iar propria noastră reflecție a remote-ului (`o/main`) a fost de asemenea actualizată. Totul este sincronizat!"
|
||||
],
|
||||
"command": "git push",
|
||||
"beforeCommand": "git clone; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Pentru a termina acest nivel, pur și simplu împărtășește două noi commit-uri cu remote-ul. Pregătește-te, pentru că aceste lecții vor deveni mult mai dificile!"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -17,6 +17,7 @@ exports.level = {
|
|||
"de_DE": "Optionen für Git Push",
|
||||
"ja": "Git pushの引数",
|
||||
"fr_FR": "Arguments de git push",
|
||||
"ro": "Argumente pentru git push",
|
||||
"ru_RU": "Аргументы git push",
|
||||
"ko": "git push의 인자들",
|
||||
"uk": "Аргументи git push",
|
||||
|
@ -37,6 +38,7 @@ exports.level = {
|
|||
"de_DE": "Du kannst dir die Zielsetzung des Levels immer wieder mit \"objective\" anzeigen lassen",
|
||||
"ja": "ダイアログの最後のスライドを参照するには\"objective\"を実行",
|
||||
"fr_FR": "Vous pouvez toujours regarder le dernier slide des dialogues en tapant \"objective\".",
|
||||
"ro": "Poți vedea întotdeauna ultimul slide tastând \"objective\".",
|
||||
"ru_RU": "Вы всегда можете ознакомиться с последним слайдом, воспользовавшись \"objective\".",
|
||||
"ko": "대화창의 마지막 슬라이드를 \"objective\"로 다시 볼 수 있습니다.",
|
||||
"uk": "Завжди можна подивитися останній слайд діалогу за допомогою \"objective\"",
|
||||
|
@ -701,6 +703,80 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Argumentele comenzii Push",
|
||||
"",
|
||||
"Perfect! Acum că știi despre urmărirea ramurilor remote, putem începe să descoperim câteva dintre misterele din spatele comenzilor git push, fetch și pull. Vom aborda câte o comandă pe rând, dar conceptele dintre ele sunt foarte similare.",
|
||||
"",
|
||||
"În primul rând, vom analiza `git push`. Ai învățat în lecția despre urmărirea ramurilor remote că git determină remote-ul *și* ramura la care să facă push prin examinarea proprietăților ramurii curente (remote-ul pe care îl \"urmărește\"). Acesta este comportamentul implicit atunci când nu sunt specificate argumente, dar git push poate accepta opțional argumente sub formă de:",
|
||||
"",
|
||||
"`git push <remote> <locatie>`",
|
||||
"",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Ce este un parametru `<locatie>`? Vom discuta mai detaliat în curând, dar mai întâi să vedem un exemplu. Executarea comenzii:",
|
||||
"",
|
||||
"`git push origin main`",
|
||||
"",
|
||||
"se traduce în română astfel:",
|
||||
"",
|
||||
"*Mergi la ramura numită \"main\" din repozitoriul meu, ia toate commit-urile, apoi mergi la ramura \"main\" de pe remote-ul numit \"origin\". Plasează acolo toate commit-urile care lipsesc și spune-mi când ai terminat.*",
|
||||
"",
|
||||
"Specificând `main` ca argument pentru \"locatie\", i-am spus lui git de unde vor veni commit-urile și unde vor merge. Este practic \"locația\" sau \"poziția\" care trebuie sincronizată între cele două repozitorii.",
|
||||
"",
|
||||
"Ține minte că, deoarece i-am spus lui git tot ce are nevoie să știe (specificând ambele argumente), el ignoră complet ramura pe care suntem la moment!"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Să vedem un exemplu în care specificăm ambele argumente. Observă poziția unde ne aflăm în acest exemplu."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Așa! `main` a fost actualizat pe remote deoarece am specificat aceste argumente."
|
||||
],
|
||||
"command": "git checkout C0; git push origin main",
|
||||
"beforeCommand": "git clone; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Ce s-ar fi întâmplat dacă nu am fi specificat argumentele?"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Comanda eșuează (așa cum poți vedea), deoarece `HEAD` nu este pe o ramură care urmărește un remote."
|
||||
],
|
||||
"command": "git checkout C0; git push",
|
||||
"beforeCommand": "git clone; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"În regulă, pentru acest nivel să actualizăm atât `foo` cât și `main` pe remote. Provocarea este că `git checkout` este dezactivat pentru acest nivel!",
|
||||
"",
|
||||
"*Notă: Ramurile remote sunt etichetate cu prefixul `o/` deoarece eticheta completă `origin/` nu încape în UI-ul nostru. Nu-ți face griji în legătură cu asta... folosește pur și simplu `origin` ca numele remote-ului ca de obicei.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -13,6 +13,7 @@ exports.level = {
|
|||
"de_DE": "Optionen für Git Push -- noch mehr!",
|
||||
"ja": "Git pushの引数 -- 拡張編!",
|
||||
"fr_FR": "Arguments de git push -- toujours plus !",
|
||||
"ro": "Argumente git push -- Continuarea!",
|
||||
"ru_RU": "Аргументы для push -- расширенная версия!",
|
||||
"ko": "git push 인자 -- 확장판!",
|
||||
"uk": "Розширені аргументи git push!",
|
||||
|
@ -33,6 +34,7 @@ exports.level = {
|
|||
"de_DE": "Vergiss nicht dass du aufgeben kannst, indem du \"show solution\" eingibst :P",
|
||||
"ja": "降参して解説を見るには\"show solution\"を実行できるのをお忘れなく",
|
||||
"fr_FR": "N'oubliez pas que vous pouvez toujours déclarer forfait avec \"show solution\" :P",
|
||||
"ro": "Nu uita că îți poți admite înfrângerea și tasta \"show solution\" pentru a vedea soluția :P",
|
||||
"ru_RU": "Помните, Вы всегда можете признать своё поражение, набрав команду \"show solution\" (показать решение) :P",
|
||||
"ko": "혹시 아세요? 패배를 인정하고 \"show solution\"을 입력할 수 있다는 걸요 :P",
|
||||
"uk": "Пам'ятай, ти завжди можеш визнати поразку і підглянути рішення командою \"show solution\" :P",
|
||||
|
@ -753,6 +755,76 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Detalii a argumentului `<locatie>`",
|
||||
"",
|
||||
"Îți amintești din lecția anterioară că atunci când am specificat `main` ca argument pentru git push, am specificat atât *sursa* de unde vor veni commit-urile cât și *destinația* unde vor merge.",
|
||||
"",
|
||||
"Te-ai putea întreba -- dar ce se întâmplă dacă vrem ca sursa și destinația să fie diferite? Ce se întâmplă dacă vrei să împingi commit-uri din ramura locală `foo` în ramura `bar` de pe remote?",
|
||||
"",
|
||||
"Ei bine, din păcate asta este imposibil în git... glumesc! Sigur că este posibil :)... git are o flexibilitate extrem de mare (poate chiar prea mare).",
|
||||
"",
|
||||
"Vom vedea cum în următorul slide..."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Pentru a specifica atât sursa cât și destinația pentru `<locatie>`, pur și simplu le unești folosind două puncte:",
|
||||
"",
|
||||
"`git push origin <sursa>:<destinatie>`",
|
||||
"",
|
||||
"Acest lucru este adesea denumit refspec cu două puncte. Refspec este doar un nume fain pentru o locație pe care git o poate înțelege (cum ar fi ramura `foo` sau chiar `HEAD~1`)",
|
||||
"",
|
||||
"Odată ce specifici atât sursa cât și destinația în mod independent, poți deveni foarte elegant și precis cu comenzile pentru remote. Hai să vedem o demonstrație!"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Amintește-ți, `sursa` este orice locație pe care git o poate înțelege:"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Wow! Aceasta este o comandă destul de ciudată, dar are sens -- git a rezolvat `foo^` într-o locație, a încărcat toate commit-urile care nu erau deja prezente pe remote și apoi a actualizat destinația."
|
||||
],
|
||||
"command": "git push origin foo^:main",
|
||||
"beforeCommand": "git clone; go -b foo; git commit; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Ce se întâmplă dacă destinația în care vrei să faci push nu există? Nicio problemă! Doar dă un nume de ramură și git va crea ramura pe remote pentru tine."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Super, asta e foarte fain :D"
|
||||
],
|
||||
"command": "git push origin main:newBranch",
|
||||
"beforeCommand": "git clone; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Pentru acest nivel, încearcă să ajungi la starea finală a obiectivului afișată în vizualizare și amintește-ți formatul:",
|
||||
"",
|
||||
"`<sursa>:<destinatie>`"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -13,6 +13,7 @@ exports.level = {
|
|||
"de_DE": "Denk dran, du kannst immer undo oder reset benutzen, um deine Befehle zurück zu nehmen.",
|
||||
"ja": "undoやresetコマンドをいつでも使用することができるのをお忘れなく",
|
||||
"fr_FR": "Rappelez-vous que vous pouvez toujours utiliser les commandes undo et reset.",
|
||||
"ro":"Amintește-ți că poți folosi oricând comenzile undo sau reset",
|
||||
"ru_RU": "Помни - ты всегда можешь отменить команды с помощью undo или reset",
|
||||
"ko": "명령어를 undo와 reset으로 되돌릴 수 있다는 것을 잊지마세요",
|
||||
"uk": "Пам'ятай, ти в будь-який момент можеш використовувати команди undo або reset",
|
||||
|
@ -33,6 +34,7 @@ exports.level = {
|
|||
"de_DE": "Push Main!",
|
||||
"ja": "Push Main!",
|
||||
"fr_FR": "Maître du push !",
|
||||
"ro": "Push Main!",
|
||||
"ru_RU": "Push Мастер!",
|
||||
"ko": "Push Main!",
|
||||
"uk": "Push Maйстер!",
|
||||
|
@ -521,6 +523,59 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Merge a ramurilor cu funcționalități",
|
||||
"",
|
||||
"Acum că ești confortabil cu fetch, pull și push, hai să punem la încercare aceste abilități cu un nou flux de lucru.",
|
||||
"",
|
||||
"Este obișnuit ca dezvoltatorii de pe proiecte mari să își facă toată munca pe ramuri cu funcționalități (de la `main`) și apoi să integreze acea muncă doar atunci când este gata. Acest lucru este similar cu lecția anterioară (unde ramurile secundare erau împinse către remote), dar aici introducem un pas în plus.",
|
||||
"",
|
||||
"Unii dezvoltatori fac push și pull doar când sunt pe ramura `main` -- astfel `main` rămâne mereu actualizat cu ceea ce este pe remote (`o/main`).",
|
||||
"",
|
||||
"Deci, pentru acest flux de lucru combinăm două lucruri:",
|
||||
"",
|
||||
"* integrarea muncii din ramurile cu funcționalități în `main`, și",
|
||||
"* pull și push de la remote"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Să ne reamintim rapid cum să actualizăm `main` și să partajăm munca făcută."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Am executat două comenzi aici:",
|
||||
"",
|
||||
"* rebase pentru a muta schimbările de la remote pe noi commit-uri, și",
|
||||
"* push pentru a publica munca noastră pe remote"
|
||||
],
|
||||
"command": "git pull --rebase; git push",
|
||||
"beforeCommand": "git clone; git commit; git fakeTeamwork"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Acest nivel este destul de complex -- iată o schiță generală pentru a-l rezolva:",
|
||||
"",
|
||||
"* Există trei ramuri cu funcționalități -- `side1`, `side2` și `side3`",
|
||||
"* Vrem să partajăm fiecare dintre aceste funcționalități, în ordine, către remote",
|
||||
"* La remote au fost făcute unele modificări, așa că va trebui să integrăm și acea muncă",
|
||||
"",
|
||||
":O intens! Mult noroc, finalizarea acestui nivel reprezintă un pas important."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -14,6 +14,7 @@ exports.level = {
|
|||
"de_DE": "Branches auf entfernten Servern",
|
||||
"ja": "リモートのブランチ",
|
||||
"fr_FR": "Les branches distantes",
|
||||
"ro": "Ramuri la distanță (Remote)",
|
||||
"ru_RU": "Удалённые ветки",
|
||||
"ko": "원격 브랜치(remote branch)",
|
||||
"uk": "Віддалені гілки",
|
||||
|
@ -35,6 +36,7 @@ exports.level = {
|
|||
"de_DE": "Beachte die Sortierung -- committe zuerst auf dem main!",
|
||||
"ja": "順番に注意 -- まずmainに対してcommitしましょう",
|
||||
"fr_FR": "Prêtez attention à l'ordre -- les commits sur main d'abord !",
|
||||
"ro": "Atenție la ordinea commit-urilor -- primul pe main!",
|
||||
"ru_RU": "Уделяйте внимание очерёдности -- сперва commit на main",
|
||||
"ko": "순서에 주의하세요: main 브랜치 에서 먼저 커밋하세요!",
|
||||
"uk": "Звертайте увагу на послідовність -- спочатку коміт в мастер!",
|
||||
|
@ -720,6 +722,69 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Ramuri Remote ",
|
||||
"",
|
||||
"Acum că ai văzut `git clone` în acțiune, să ne uităm mai atent la ceea ce s-a schimbat defapt.",
|
||||
"",
|
||||
"Primul lucru pe care l-ai observat este că a apărut o nouă ramură în repozitoriul nostru local numită `o/main`. Acest tip de ramură se numește ramură _remote_; ramurile remote au proprietăți speciale deoarece servesc un scop unic.",
|
||||
"",
|
||||
"Ramurile remote reflectă _starea_ repozitoriilor remote (de la ultima dată când ai vorbit cu aceste repozitorii remote). Ele te ajută să înțelegi diferența dintre munca ta locală și munca care este deja publicată - un pas critic de făcut înainte de a împărtăși munca ta cu alții.",
|
||||
"",
|
||||
"Ramurile remote au proprietatea specială că atunci când treci pe ele, ești pus în modul detached `HEAD` (HEAD detașat). Git face asta intenționat pentru că nu poți lucra direct pe aceste ramuri; trebuie să lucrezi în altă parte și apoi să împărtășești munca ta cu remote (după care ramurile tale remote vor fi actualizate).",
|
||||
"",
|
||||
"Pentru a fi clar: Ramurile remote sunt în repozitoriul tău _local_, nu în repozitoriul remote."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Ce este `o/`?",
|
||||
"",
|
||||
"Te-ai putea întreba ce înseamnă `o/` la începutul ramurilor remote. Ei bine, ramurile remote au și ele o convenție de denumire obligatorie -- sunt afișate în următorul format:",
|
||||
"",
|
||||
"* `<nume remote>/<nume ramură>`",
|
||||
"",
|
||||
"Deci, dacă te uiți la o ramură numită `o/main`, numele ramurii este `main`, iar numele remote-ului este `o`.",
|
||||
"",
|
||||
"Majoritatea dezvoltatorilor își numesc remote-ul principal `origin`, nu `o`. Acest lucru este atât de comun încât Git configurează de fapt remote-ul să fie numit `origin` atunci când faci `git clone` al unui repozitoriu.",
|
||||
"",
|
||||
"Din păcate, numele complet `origin` nu se potrivește în UI-ul nostru, așa că folosim `o` ca prescurtare :( Doar amintește-ți că atunci când folosești Git în viața reală, remote-ul tău se va numi probabil `origin`!",
|
||||
"",
|
||||
"Este mult de procesat, așa că hai să vedem totul în acțiune."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Hai să trecem pe o ramură remote și să vedem ce se întâmplă."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Așa cum poți vedea, Git ne-a pus în modul detached `HEAD` și nu a actualizat `o/main` când am adăugat un nou commit. Acest lucru se datorează faptului că `o/main` se va actualiza doar atunci când remote-ul se actualizează."
|
||||
],
|
||||
"command": "git checkout o/main; git commit",
|
||||
"beforeCommand": "git clone"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Pentru a termina acest nivel, fă un commit o dată pe `main` și apoi încă o dată după ce ai trecut pe `o/main`. Acest lucru te va ajuta să înțelegi cum se comportă diferit ramurile remote și că acestea se actualizează doar pentru a reflecta starea remote-ului."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -19,6 +19,7 @@ exports.level = {
|
|||
"de_DE": "Die Quelle des Nichts",
|
||||
"ja": "無のsource",
|
||||
"fr_FR": "Source de rien du tout",
|
||||
"ro":"Sursă goală",
|
||||
"ru_RU": "Пустой источник",
|
||||
"ko": "Source가 없다",
|
||||
"uk": "Нема джерела",
|
||||
|
@ -39,6 +40,7 @@ exports.level = {
|
|||
"de_DE": "Der branch Befehl ist für diesen Level inaktiv, du musst also fetch benutzen",
|
||||
"ja": "このレベルではbranchコマンドが無効になっているのでfetchを使うしかない!",
|
||||
"fr_FR": "La commande branch est désactivée pour ce niveau, vous devrez donc utiliser fetch !",
|
||||
"ro": "Comanda branch este dezactivată pentru acest nivel, așa că va trebui să folosești fetch!",
|
||||
"ru_RU": "Команда branch недоступна на этом упражнении, пользуйтесь командой fetch!",
|
||||
"ko": "branch 명령이 비활성화 되어있습니다. fetch를 사용해야 돼요!",
|
||||
"uk": "Команда branch недоступна на цьому уроці, користуйся командою fetch!",
|
||||
|
@ -583,6 +585,59 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Ciudățenii ale `<sursă>`",
|
||||
"",
|
||||
"Git abuzează parametrul `<sursă>` în două moduri ciudate. Aceste abuzuri vin din faptul că poți specifica tehnic \"nimic\" ca o `sursă` validă atât pentru git push cât și pentru git fetch. Modul în care specifici nimic este printr-un argument gol:",
|
||||
"",
|
||||
"* `git push origin :side`",
|
||||
"* `git fetch origin :bugFix`",
|
||||
"",
|
||||
"Să vedem ce fac acestea..."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Ce face git push cu \"nimic\" către o ramură remote? O șterge!"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Aici, am șters cu succes ramura `foo` de pe remote prin împingerea conceptului de \"nimic\" către ea. Asta are oarecum sens..."
|
||||
],
|
||||
"command": "git push origin :foo",
|
||||
"beforeCommand": "git clone; git push origin main:foo"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"În cele din urmă, făcând fetch \"nimicului\" într-un loc local creează de fapt o ramură nouă."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Foarte ciudat / bizar, dar nu contează. Așa este git-ul!"
|
||||
],
|
||||
"command": "git fetch origin :bar",
|
||||
"beforeCommand": "git clone"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Aceasta este un nivel mic -- pur și simplu șterge o ramură remote și creează o nouă ramură locală folosind `git fetch` pentru a termina!"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
|
@ -13,6 +13,7 @@ exports.level = {
|
|||
"de_DE": "Remote Tracking",
|
||||
"ja": "リモートのトラッキング",
|
||||
"fr_FR": "Suivi de branche distante",
|
||||
"ro":"Urmărirea unui remote",
|
||||
"ru_RU": "Слежка за удалённым репозиторием",
|
||||
"ko": "원격 저장소 추적하기",
|
||||
"uk": "Слідкуємо за віддаленим репозиторієм",
|
||||
|
@ -33,6 +34,7 @@ exports.level = {
|
|||
"de_DE": "Nicht vergessen, es gibt zwei Arten Remote Tracking einzurichten!",
|
||||
"ja": "リモートトラッキングを設定する方法が二つあるのをお忘れなく!",
|
||||
"fr_FR": "Rappelez-vous qu'il existe deux façons de configurer le suivi de branche distante !",
|
||||
"ro": "Amintește-ți că există două moduri de a urmări un remote!",
|
||||
"ru_RU": "Помни, есть два способа установить слежку за удалённым репозиторием!",
|
||||
"ko": "원격 추적하기를 설정하는데에는 두가지 방법이 있습니다!",
|
||||
"uk": "Пам'ятай, є два способи слідкувати за віддаленим репозиорієм!",
|
||||
|
@ -1106,6 +1108,124 @@ exports.level = {
|
|||
}
|
||||
]
|
||||
},
|
||||
"ro": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Ramuri de urmărire a Remote-urilor",
|
||||
"",
|
||||
"Un lucru care ar fi putut părea \"magic\" în lecțiile anterioare este că git știa că ramura `main` este legată de `o/main`. Sigur, aceste ramuri au nume asemănătoare și ar putea avea sens logic să conecteze ramura `main` de pe remote cu ramura locală `main`, dar această conexiune este demonstrată clar în două scenarii:",
|
||||
"",
|
||||
"* În timpul unei operațiuni de pull, commit-urile sunt descărcate în `o/main` și apoi *îmbinate* în ramura `main`. Ținta implicită a fuziunii este determinată de această conexiune.",
|
||||
"* În timpul unei operațiuni de push, lucrul din ramura `main` este împins pe ramura `main` a remote-ului (care este apoi reprezentată local de `o/main`). Destinația *push-ului* este determinată de conexiunea dintre `main` și `o/main`.",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"## Urmărirea Remote-urilor",
|
||||
"",
|
||||
"Pe scurt, această conexiune între `main` și `o/main` este explicată simplu prin proprietatea de \"urmărire a remote-urilor\" a ramurilor. Ramura `main` este setată să urmărească `o/main` -- asta înseamnă că există o țintă implicită de fuziune și o destinație implicită de push pentru ramura `main`.",
|
||||
"",
|
||||
"Te-ai putea întreba cum a fost setată această proprietate pe ramura `main` când nu ai rulat niciun fel de comandă pentru a o specifica. Ei bine, când clonezi un repozitoriu cu git, această proprietate este setată automat pentru tine.",
|
||||
"",
|
||||
"În timpul unei clonări, git creează o ramură remote pentru fiecare ramură de pe remote (de exemplu, ramuri precum `o/main`). Apoi creează o ramură locală care urmărește ramura activă de pe remote, care este `main` în majoritatea cazurilor.",
|
||||
"",
|
||||
"După ce clonarea git este completă, ai doar o ramură locală (astfel încât să nu fii copleșit), dar poți vedea toate ramurile diferite de pe remote (dacă ești foarte curios). Este cea mai bună variantă din ambele lumi!",
|
||||
"",
|
||||
"Aceasta explică de asemenea de ce ai putea vedea următorul mesaj când clonezi:",
|
||||
"",
|
||||
" local branch \"main\" set to track remote branch \"o/main\""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Pot specifica acest lucru?",
|
||||
"",
|
||||
"Da, poți! Poți face ca orice ramură să urmărească `o/main`, iar dacă faci asta, acea ramură va avea aceeași destinație implicită de push și țintă de combinare a commi-turilor ca `main`. Asta înseamnă că poți rula `git push` pe o ramură numită `totallyNotMain` și să împingi munca ta pe ramura `main` de pe remote!",
|
||||
"",
|
||||
"Există două moduri de a seta această proprietate. Primul este să faci treci la o ramură nouă folosind o ramură remote ca referință specificată. Rulând",
|
||||
"",
|
||||
"`git checkout -b totallyNotMain o/main`",
|
||||
"",
|
||||
"Creează o nouă ramură numită `totallyNotMain` și o setează să urmărească `o/main`."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Destul cu atâta vorbă, să vedem o demonstrație! Vom face un checkout la o nouă ramură numită `foo` și o vom seta să urmărească `main` de pe remote."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"După cum poți vedea, am folosit ținta implicită de fuziune `o/main` pentru a actualiza ramura `foo`. Observă că `main` nu este actualizată!"
|
||||
],
|
||||
"command": "git checkout -b foo o/main; git pull",
|
||||
"beforeCommand": "git clone; git fakeTeamwork"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Aceasta se aplică și pentru `git push`."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Bam. Am împins munca noastră pe `main` de pe remote chiar dacă ramura noastră se numea complet diferit."
|
||||
],
|
||||
"command": "git checkout -b foo o/main; git commit; git push",
|
||||
"beforeCommand": "git clone"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Metoda #2",
|
||||
"",
|
||||
"O altă modalitate de a seta urmărirea remote-urilor pe o ramură este să folosești opțiunea `git branch -u`. Rulând",
|
||||
"",
|
||||
"`git branch -u o/main foo`",
|
||||
"",
|
||||
"va seta ramura `foo` să urmărească `o/main`. Dacă ești deja pe ramura `foo`, poți chiar să o omiți:",
|
||||
"",
|
||||
"`git branch -u o/main`",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Hai să vedem rapid această altă modalitate de a specifica urmărirea remote-urilor..."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"La fel ca înainte, doar că este o comandă mai explicită. Grozav!"
|
||||
],
|
||||
"command": "git branch -u o/main foo; git commit; git push",
|
||||
"beforeCommand": "git clone; git checkout -b foo"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"Bine! Pentru acest nivel, trebuie să faci push muncii tale pe ramura `main` de pe remote *fără* a fi pe ramura `main` local. Îți las să descoperi restul singur, deja ești la un nivel avansat :P"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"ru_RU": {
|
||||
"childViews": [
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue