mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-07-01 10:14:28 +02:00
commit
9af9743318
11 changed files with 60 additions and 60 deletions
|
@ -36,7 +36,7 @@ exports.strings = {
|
||||||
'zh_TW': '太強了,您的答案符合我們的預期甚至更好!',
|
'zh_TW': '太強了,您的答案符合我們的預期甚至更好!',
|
||||||
'es_AR': '¡Fabuloso! Igualaste o superaste nuestra solución.',
|
'es_AR': '¡Fabuloso! Igualaste o superaste nuestra solución.',
|
||||||
'fr_FR': 'Fabuleux ! Votre solution a égalé ou surpassé notre solution.',
|
'fr_FR': 'Fabuleux ! Votre solution a égalé ou surpassé notre solution.',
|
||||||
'ru_RU': 'Отлично! Ваше решение соответсвует или превосходит наше.'
|
'ru_RU': 'Отлично! Ваше решение соответствует или превосходит наше.'
|
||||||
},
|
},
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
'finish-dialog-lose': {
|
'finish-dialog-lose': {
|
||||||
|
|
|
@ -22,7 +22,7 @@ exports.level = {
|
||||||
"pt_BR": "Lembre-se que você pode especificar quantos commits quer simular",
|
"pt_BR": "Lembre-se que você pode especificar quantos commits quer simular",
|
||||||
"zh_CN": "记住为fake中的commit指定数量",
|
"zh_CN": "记住为fake中的commit指定数量",
|
||||||
"zh_TW": "你要記得指定要送多少個 commit 出去",
|
"zh_TW": "你要記得指定要送多少個 commit 出去",
|
||||||
"ru_RU": "помните, Вы можете указать колличество фейковых коммитов"
|
"ru_RU": "помните, Вы можете указать количество фейковых коммитов"
|
||||||
},
|
},
|
||||||
"startDialog": {
|
"startDialog": {
|
||||||
"en_US": {
|
"en_US": {
|
||||||
|
@ -415,7 +415,7 @@ exports.level = {
|
||||||
"",
|
"",
|
||||||
"Это означает, что нам следует \"сделать вид\", как будто мы знаем о том, что наш удалённый репозиторий, с которым мы работаем, был изменён наработками, сделанными одним из Ваших коллег / друзей / единомышленников. Это может быть какая-то ветка, либо же какой-то конкретный коммит.",
|
"Это означает, что нам следует \"сделать вид\", как будто мы знаем о том, что наш удалённый репозиторий, с которым мы работаем, был изменён наработками, сделанными одним из Ваших коллег / друзей / единомышленников. Это может быть какая-то ветка, либо же какой-то конкретный коммит.",
|
||||||
"",
|
"",
|
||||||
"Для того, чтобы добится своих целей, нам предоставляется комманда со звучным именем `git fakeTeamwork`! Имя комманды однозначно даёт понят что она выполняет. Давайте ознакомимся с демо..."
|
"Для того, чтобы добиться своих целей, нам предоставляется команда со звучным именем `git fakeTeamwork`! Имя команды однозначно даёт понять что она выполняет. Давайте ознакомимся с демо..."
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -423,10 +423,10 @@ exports.level = {
|
||||||
"type": "GitDemonstrationView",
|
"type": "GitDemonstrationView",
|
||||||
"options": {
|
"options": {
|
||||||
"beforeMarkdowns": [
|
"beforeMarkdowns": [
|
||||||
"Поведение комманды `fakeTeamwork` по-умолчанию заключается в том, чтобы просто \"инициировать\" коммит на master-е"
|
"Поведение команды `fakeTeamwork` по умолчанию заключается в том, чтобы просто \"инициировать\" коммит на master-е"
|
||||||
],
|
],
|
||||||
"afterMarkdowns": [
|
"afterMarkdowns": [
|
||||||
"Ну вот - удалённый репозиторый был изменён при помощи добавления нового коммита, и мы не ещё не скачали этот коммит, потому что не запустили комманду `git fetch`."
|
"Ну вот - удалённый репозиторый был изменён при помощи добавления нового коммита, и мы ещё не скачали этот коммит, потому что не запустили команду `git fetch`."
|
||||||
],
|
],
|
||||||
"command": "git fakeTeamwork",
|
"command": "git fakeTeamwork",
|
||||||
"beforeCommand": "git clone"
|
"beforeCommand": "git clone"
|
||||||
|
@ -436,10 +436,10 @@ exports.level = {
|
||||||
"type": "GitDemonstrationView",
|
"type": "GitDemonstrationView",
|
||||||
"options": {
|
"options": {
|
||||||
"beforeMarkdowns": [
|
"beforeMarkdowns": [
|
||||||
"В данной комманде Вам доступна возможность указать ветку и колличество добавляемых коммитов"
|
"В данной команде Вам доступна возможность указать ветку и количество добавляемых коммитов"
|
||||||
],
|
],
|
||||||
"afterMarkdowns": [
|
"afterMarkdowns": [
|
||||||
"С помощью одной лишь комманды мы симулируем добавление трёх коммитов в ветку `foo` на удалённом репозитории"
|
"С помощью одной лишь команды мы симулируем добавление трёх коммитов в ветку `foo` на удалённом репозитории"
|
||||||
],
|
],
|
||||||
"command": "git fakeTeamwork foo 3",
|
"command": "git fakeTeamwork foo 3",
|
||||||
"beforeCommand": "git branch foo; git clone"
|
"beforeCommand": "git branch foo; git clone"
|
||||||
|
|
|
@ -615,11 +615,11 @@ exports.level = {
|
||||||
"markdowns": [
|
"markdowns": [
|
||||||
"## Git Fetch",
|
"## Git Fetch",
|
||||||
"",
|
"",
|
||||||
"Работа с удалёнными git репозиториями сводится к передаче данных _в_ и _из_ других репозиториев. До тех пор, пока мы может отправлять коммиты туда-обратно, мы можем делиться любыми изменениями, которые отслеживает git (следовательно, делиться новыми файлами, свежими идеями, любовными письмами и т.д.).",
|
"Работа с удалёнными git репозиториями сводится к передаче данных _в_ и _из_ других репозиториев. До тех пор, пока мы можем отправлять коммиты туда-обратно, мы можем делиться любыми изменениями, которые отслеживает git (следовательно, делиться новыми файлами, свежими идеями, любовными письмами и т.д.).",
|
||||||
"",
|
"",
|
||||||
"В этом уроке Вы научитесь тому, как извлекать данные _из_ удалённого репозитория - и для этого у нас есть соответсвтующая команда `git fetch`.",
|
"В этом уроке Вы научитесь тому, как извлекать данные _из_ удалённого репозитория - и для этого у нас есть соответствующая команда `git fetch`.",
|
||||||
"",
|
"",
|
||||||
"Вы увидете, что как только мы изменим представление нашего удалённого репозитория, наши _удалённые_ ветки обновятся соответствующим образом и отобразят это представление. Это связывает воедино предыдущий урок про удалённые репозитории"
|
"Вы увидите, что как только мы изменим представление нашего удалённого репозитория, наши _удалённые_ ветки обновятся соответствующим образом и отобразят это представление. Это связывает воедино предыдущий урок про удалённые репозитории."
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -645,11 +645,11 @@ exports.level = {
|
||||||
"`git fetch` выполняет две и только две основные операции. А именно:",
|
"`git fetch` выполняет две и только две основные операции. А именно:",
|
||||||
"",
|
"",
|
||||||
"* связывается с указанным удалённым репозиторием и забирает все те данные проекта, которых у вас ещё нет, при этом...",
|
"* связывается с указанным удалённым репозиторием и забирает все те данные проекта, которых у вас ещё нет, при этом...",
|
||||||
"* у вас должны появиться ссылки на все ветки из этого удалённого репозиториея (например, `o/master`)",
|
"* у вас должны появиться ссылки на все ветки из этого удалённого репозитория (например, `o/master`)",
|
||||||
"",
|
"",
|
||||||
"Фактически `git fetch` синхронизирует _локальное_ представление удалённых репозиториев с тем, что является _актуальным_ на текущий момент времени.",
|
"Фактически `git fetch` синхронизирует _локальное_ представление удалённых репозиториев с тем, что является _актуальным_ на текущий момент времени.",
|
||||||
"",
|
"",
|
||||||
"Насколько Вы помните, в предыдущем уроке мы сказали о том, что удалённые ветки отображают состояние удалённых репозиториев _на тот момент_ когда вы 'общались' с ними в последний раз. `git fetch` является тем механизмом, который даёт Вам возможность общатся с удалёнными репозиториями! Надеюсь, что связь между удалёнными ветками и коммандой `git fetch` теперь прояснилась.",
|
"Насколько Вы помните, в предыдущем уроке мы сказали о том, что удалённые ветки отображают состояние удалённых репозиториев _на тот момент_ когда вы 'общались' с ними в последний раз. `git fetch` является тем механизмом, который даёт Вам возможность общаться с удалёнными репозиториями! Надеюсь, что связь между удалёнными ветками и командой `git fetch` теперь прояснилась.",
|
||||||
"",
|
"",
|
||||||
"`git fetch` обычно 'общается' с удалёнными репозиториями посредством Интернета (через такие протоколы, как `http://` или `git://`).",
|
"`git fetch` обычно 'общается' с удалёнными репозиториями посредством Интернета (через такие протоколы, как `http://` или `git://`).",
|
||||||
""
|
""
|
||||||
|
@ -664,9 +664,9 @@ exports.level = {
|
||||||
"",
|
"",
|
||||||
"Важно отметить, что команда `git fetch` забирает данные в ваш _локальный_ репозиторий, но не сливает их с какими-либо вашими наработками и не модифицирует то, над чем вы работаете в данный момент.",
|
"Важно отметить, что команда `git fetch` забирает данные в ваш _локальный_ репозиторий, но не сливает их с какими-либо вашими наработками и не модифицирует то, над чем вы работаете в данный момент.",
|
||||||
"",
|
"",
|
||||||
"Важно это помнить и понимать, потому что многие разработчики думают, что, запустив комманду `git fetch`, они приведут всю свою локальную работу к такому же виду как и на удалённом репозитории. Комманда всего-лишь скачивает все необходимые данные, но Вам необходимо вручную слить эти данные с вашими, когда вы будете готовы. В следующих уроках мы научимся это делать :D",
|
"Важно это помнить и понимать, потому что многие разработчики думают, что, запустив команду `git fetch`, они приведут всю свою локальную работу к такому же виду как и на удалённом репозитории. Команда всего-лишь скачивает все необходимые данные, но Вам необходимо вручную слить эти данные с вашими, когда вы будете готовы. В следующих уроках мы научимся это делать :D",
|
||||||
"",
|
"",
|
||||||
"Одним словом вы можете относится к `git fetch` как к процедуре скачивания."
|
"Одним словом вы можете относиться к `git fetch` как к процедуре скачивания."
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -1034,9 +1034,9 @@ exports.level = {
|
||||||
"markdowns": [
|
"markdowns": [
|
||||||
"## Когда наработки расходятся",
|
"## Когда наработки расходятся",
|
||||||
"",
|
"",
|
||||||
"Вот мы и познакомились с тем, как забирать (`pull`) чужие коммиты и как закачивать (`push`) свои наработки и изменения. Выглядит всё довольно просто, и не ясно какие же могу возникать у людей трудности со всем этим ?",
|
"Вот мы и познакомились с тем, как забирать (`pull`) чужие коммиты и как закачивать (`push`) свои наработки и изменения. Выглядит всё довольно просто, и не ясно какие же могут возникать у людей трудности со всем этим?",
|
||||||
"",
|
"",
|
||||||
"Сложности возникают тогда, когда история репозитория *расходится*. Давайте посмотрим на пример прежде чем идти дальше...",
|
"Сложности возникают тогда, когда история репозитория *расходится*. Прежде чем идти дальше, давайте посмотрим на пример...",
|
||||||
""
|
""
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -1045,9 +1045,9 @@ exports.level = {
|
||||||
"type": "ModalAlert",
|
"type": "ModalAlert",
|
||||||
"options": {
|
"options": {
|
||||||
"markdowns": [
|
"markdowns": [
|
||||||
"Представьте себе, Вы склонировали репозиторий в понедельник и начали разрабатывать какую-то новую и уникальную часть приложения (на сленге разработчиков - `фича`). В пятницу вечером Вы наконец-то готовы опубликовать Вашу фичу. Но, о нет! Ваш коллега в течении недели написал кучу кода, который делает все Ваши наработки устарелыми. Этот код был также закоммичен и опубликован на общедоступном удалённом репозитории, поэтому теперь *Ваш* код базируется на *устаревшей* версии проект и более не уместен.",
|
"Представьте себе, Вы склонировали репозиторий в понедельник и начали разрабатывать какую-то новую и уникальную часть приложения (на сленге разработчиков - `фича`). В пятницу вечером Вы наконец-то готовы опубликовать Вашу фичу. Но, о нет! Ваш коллега в течении недели написал кучу кода, который делает все Ваши наработки устарелыми. Этот код был также закоммичен и опубликован на общедоступном удалённом репозитории, поэтому теперь *Ваш* код базируется на *устаревшей* версии проекта и более не уместен.",
|
||||||
"",
|
"",
|
||||||
"В этому случае использование комманды `git push` является сомнительным. Как поведёт себя комманда `git push` если Вы её выполните ? Может быть она изменит удалённый репозиторий и вернёт всё к тому состоянию, которое было в понедельник ? А может быть комманда попробует добавить Ваш код, не удаляя при этом новый? Или же она проигнорирует Ваши изменения, так как они уже устарели?",
|
"В этом случае использование команды `git push` является сомнительным. Как поведёт себя команда `git push`, если Вы её выполните? Может быть она изменит удалённый репозиторий и вернёт всё к тому состоянию, которое было в понедельник? А может быть команда попробует добавить Ваш код, не удаляя при этом новый? Или же она проигнорирует Ваши изменения, так как они уже устарели?",
|
||||||
"",
|
"",
|
||||||
"По причине того, что в данной ситуации (когда история расходится) слишком много двусмысленностей и неопределённостей, git не даст Вам закачать (`push`) Ваши изменения. Чтобы поделится и закачать свои наработки, git будет принуждать Вас включить в состав своей работы все те последние наработки и изменения, находящиеся на удалённом репозитории."
|
"По причине того, что в данной ситуации (когда история расходится) слишком много двусмысленностей и неопределённостей, git не даст Вам закачать (`push`) Ваши изменения. Чтобы поделится и закачать свои наработки, git будет принуждать Вас включить в состав своей работы все те последние наработки и изменения, находящиеся на удалённом репозитории."
|
||||||
]
|
]
|
||||||
|
@ -1057,10 +1057,10 @@ exports.level = {
|
||||||
"type": "GitDemonstrationView",
|
"type": "GitDemonstrationView",
|
||||||
"options": {
|
"options": {
|
||||||
"beforeMarkdowns": [
|
"beforeMarkdowns": [
|
||||||
"Слишком много болтавни! Давайте посмотрим, как всё работает на живом примере"
|
"Слишком много болтовни! Давайте посмотрим, как всё работает на живом примере"
|
||||||
],
|
],
|
||||||
"afterMarkdowns": [
|
"afterMarkdowns": [
|
||||||
"Видите? Ничего не произошло. Всё потому, что комманда `git push` не выполнилась успешно. Дело в том, что Ваш последний коммит `C3` основан на удалённом коммите `C1`. В свою очередь удалённый репозиторий уже изменился под воздействием `C2`. Вот почему git отклонил Ваш push."
|
"Видите? Ничего не произошло. Всё потому, что команда `git push` не выполнилась успешно. Дело в том, что Ваш последний коммит `C3` основан на удалённом коммите `C1`. В свою очередь удалённый репозиторий уже изменился под воздействием `C2`. Вот почему git отклонил Ваш push."
|
||||||
],
|
],
|
||||||
"command": "git push",
|
"command": "git push",
|
||||||
"beforeCommand": "git clone; git fakeTeamwork; git commit"
|
"beforeCommand": "git clone; git fakeTeamwork; git commit"
|
||||||
|
@ -1070,9 +1070,9 @@ exports.level = {
|
||||||
"type": "ModalAlert",
|
"type": "ModalAlert",
|
||||||
"options": {
|
"options": {
|
||||||
"markdowns": [
|
"markdowns": [
|
||||||
"Как же разрешит данную ситуацию? Всё очень просто! Всё что Вам нужно - перебазировать свою работу на наиболее последнюю версию удалённой ветки.",
|
"Как же разрешить данную ситуацию? Всё очень просто! Всё что Вам нужно - перебазировать свою работу на наиболее последнюю версию удалённой ветки.",
|
||||||
"",
|
"",
|
||||||
"Существует множество путей, как сделать это, но наиболее простой способ 'сдвинуть' свои наработки - через пребазировку или rebasing. Давайте посмотрим, как это выглядит."
|
"Существует множество путей, как сделать это, но наиболее простой способ 'сдвинуть' свои наработки - через перебазировку или rebasing. Давайте посмотрим, как это выглядит."
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1093,9 +1093,9 @@ exports.level = {
|
||||||
"type": "ModalAlert",
|
"type": "ModalAlert",
|
||||||
"options": {
|
"options": {
|
||||||
"markdowns": [
|
"markdowns": [
|
||||||
"А есть ещё какие-либо варианты чтобы обновить мои наработки, к тому моменту как удалённый репозиторий был обновлён? Конечно есть! Давайте ознакомимся с парочкой новых штучек, но в этот раз с помощью комманды `merge`.",
|
"А есть ещё какие-либо варианты чтобы обновить мои наработки, к тому моменту как удалённый репозиторий был обновлён? Конечно есть! Давайте ознакомимся с парочкой новых штучек, но в этот раз с помощью команды `merge`.",
|
||||||
"",
|
"",
|
||||||
"Не смотря на то, что `git merge` не передвигает ваши наработки (а всего лишь создаёт новый коммит, в котором Ваши и удалённые изменения объеденены), этот способ помогает указать git-у на то, что Вы собираетесь включить в состав Ваших наработок все изменения с удалённого репозитория. Это значит, что Ваш коммит отразится на всех коммитах удалённой ветки, поскольку удалённая ветка является *предком* Вашей собственной локальной ветки.",
|
"Несмотря на то, что `git merge` не передвигает ваши наработки (а всего лишь создаёт новый коммит, в котором Ваши и удалённые изменения объединены), этот способ помогает указать git-у на то, что Вы собираетесь включить в состав Ваших наработок все изменения с удалённого репозитория. Это значит, что Ваш коммит отразится на всех коммитах удалённой ветки, поскольку удалённая ветка является *предком* Вашей собственной локальной ветки.",
|
||||||
"",
|
"",
|
||||||
"Давайте взглянем на демонстрацию..."
|
"Давайте взглянем на демонстрацию..."
|
||||||
]
|
]
|
||||||
|
@ -1105,7 +1105,7 @@ exports.level = {
|
||||||
"type": "GitDemonstrationView",
|
"type": "GitDemonstrationView",
|
||||||
"options": {
|
"options": {
|
||||||
"beforeMarkdowns": [
|
"beforeMarkdowns": [
|
||||||
"Таким образм если мы объеденим (merge) вместо перебазирования (rebase)..."
|
"Таким образом, если мы объединим (merge) вместо перебазирования (rebase)..."
|
||||||
],
|
],
|
||||||
"afterMarkdowns": [
|
"afterMarkdowns": [
|
||||||
"Опа! Мы обновили наше локальное представление удалённого репозитория с помощью `git fetch`, *объединили* Ваши новые наработки с нашими наработками (чтобы отразить изменения в удалённом репозитории), и затем опубликовали их с помощью `git push`"
|
"Опа! Мы обновили наше локальное представление удалённого репозитория с помощью `git fetch`, *объединили* Ваши новые наработки с нашими наработками (чтобы отразить изменения в удалённом репозитории), и затем опубликовали их с помощью `git push`"
|
||||||
|
@ -1118,9 +1118,9 @@ exports.level = {
|
||||||
"type": "ModalAlert",
|
"type": "ModalAlert",
|
||||||
"options": {
|
"options": {
|
||||||
"markdowns": [
|
"markdowns": [
|
||||||
"Здорово! А можно ли как-то зделать всё тоже самое, но с меньшим количеством комманд?",
|
"Здорово! А можно ли как-то сделать всё тоже самое, но с меньшим количеством команд?",
|
||||||
"",
|
"",
|
||||||
"Конечно -- ведь Вы уже знаете комманду `git pull`, которая является аналогом и более кратким аналогом для совместных fetch и merge. А команда `git pull --rebase` - аналог для совместно вызванных fetch и rebase!",
|
"Конечно -- ведь Вы уже знаете команду `git pull`, которая является аналогом и более кратким аналогом для совместных fetch и merge. А команда `git pull --rebase` - аналог для совместно вызванных fetch и rebase!",
|
||||||
"",
|
"",
|
||||||
"Давайте взглянем на эти оба варианта."
|
"Давайте взглянем на эти оба варианта."
|
||||||
]
|
]
|
||||||
|
@ -1156,13 +1156,13 @@ exports.level = {
|
||||||
"type": "ModalAlert",
|
"type": "ModalAlert",
|
||||||
"options": {
|
"options": {
|
||||||
"markdowns": [
|
"markdowns": [
|
||||||
"Рабочий процесс получения изменений (fetching), перебазирования/объединения (rebase/merging) и публикации изменений (pushing) довольно часто используемый. В последующий уроках мы изучим более сложные варианты этих рабочих процессов, но пока что, давайте остановимся на том, что есть.",
|
"Рабочий процесс получения изменений (fetching), перебазирования/объединения (rebase/merging) и публикации изменений (pushing) довольно часто используемый. В последующих уроках мы изучим более сложные варианты этих рабочих процессов, но пока что, давайте остановимся на том, что есть.",
|
||||||
"",
|
"",
|
||||||
"Выполните следующее, чтобы выполнить задание уровня:",
|
"Выполните следующее, чтобы выполнить задание уровня:",
|
||||||
"",
|
"",
|
||||||
"* Склонируйте репозиторий",
|
"* Склонируйте репозиторий",
|
||||||
"* Сфабрикуйте командную работу (1 коммит)",
|
"* Сфабрикуйте командную работу (1 коммит)",
|
||||||
"* Сделайте свой собственный коммит (1 commit)",
|
"* Сделайте свой собственный коммит (1 коммит)",
|
||||||
"* Опубликуйте свои наработки посредствам *перебазировки rebasing*"
|
"* Опубликуйте свои наработки посредствам *перебазировки rebasing*"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ exports.level = {
|
||||||
"de_DE": "Beachte den Ziel-Baum!",
|
"de_DE": "Beachte den Ziel-Baum!",
|
||||||
"ja" : "ゴールツリーをよく見てください!",
|
"ja" : "ゴールツリーをよく見てください!",
|
||||||
"fr_FR": "Respectez l'arbre représentant l'objectif !",
|
"fr_FR": "Respectez l'arbre représentant l'objectif !",
|
||||||
"ru_RU": "Внимательно посмотрите на цель уровня !"
|
"ru_RU": "Внимательно посмотрите на цель уровня!"
|
||||||
},
|
},
|
||||||
"compareOnlyMaster": true,
|
"compareOnlyMaster": true,
|
||||||
"startDialog": {
|
"startDialog": {
|
||||||
|
@ -394,9 +394,9 @@ exports.level = {
|
||||||
"markdowns": [
|
"markdowns": [
|
||||||
"## Merge? Нет, нет, спасибо.",
|
"## Merge? Нет, нет, спасибо.",
|
||||||
"",
|
"",
|
||||||
"Чтобы закачать (push) новые изменения в удалённый репозиторий, всё что Вам нужно сделать - это *смешать* последние изменения из удалённого репозитория. Это значит что Вы можете выполнить rebase *или* merge на удалённом репозитории (например, `o/master`).",
|
"Чтобы закачать (push) новые изменения в удалённый репозиторий, всё что Вам нужно сделать - это *смешать* последние изменения из удалённого репозитория. Это значит, что Вы можете выполнить rebase *или* merge на удалённом репозитории (например, `o/master`).",
|
||||||
"",
|
"",
|
||||||
"Если мы можем воспользоваться одним из двух методов, то почему же эти упражнения сфокусированы в основном на rebase? К чему такая нелюбовь к `merge`, когда речь идёт о работе с удалённым репозиториями?",
|
"Если мы можем воспользоваться одним из двух методов, то почему же эти упражнения сфокусированы в основном на rebase? К чему такая нелюбовь к `merge`, когда речь идёт о работе с удалёнными репозиториями?",
|
||||||
""
|
""
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -415,9 +415,9 @@ exports.level = {
|
||||||
"",
|
"",
|
||||||
"* Метод rebasing явно изменяет историю коммитов в дереве.",
|
"* Метод rebasing явно изменяет историю коммитов в дереве.",
|
||||||
"",
|
"",
|
||||||
"Например, коммит `C1` может быть перебазирован *после* `C3`. Соответственно, в дереве работа над `C1'` будет отображатся как идущая после `C3`, хотя на самом деле она была выполнена раньше.",
|
"Например, коммит `C1` может быть перебазирован *после* `C3`. Соответственно, в дереве работа над `C1'` будет отображаться как идущая после `C3`, хотя на самом деле она была выполнена раньше.",
|
||||||
"",
|
"",
|
||||||
"Некоторые разработчики любят сохранять историю и, таким образом, предпочитают слияние (merging). Другие (такие как я) предпочитают иметь чистое дерево коммитов, и пользуются перебазировкой (rebasing). Всё зависит от Ваших предпочтений и вкусов :D"
|
"Некоторые разработчики любят сохранять историю, и таким образом, предпочитают слияние (merging). Другие (такие как я) предпочитают иметь чистое дерево коммитов, и пользуются перебазировкой (rebasing). Всё зависит от Ваших предпочтений и вкусов :D"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -425,7 +425,7 @@ exports.level = {
|
||||||
"type": "ModalAlert",
|
"type": "ModalAlert",
|
||||||
"options": {
|
"options": {
|
||||||
"markdowns": [
|
"markdowns": [
|
||||||
"Для этого уровня, давайте решим предыдущие задачи но с помощью *слияния (merging)*. Может быть поулчится слегка неказисто, однако такое упражнение хорошо отразит суть различий."
|
"Для этого уровня, давайте решим предыдущие задачи, но с помощью *слияния (merging)*. Может быть получится слегка неказисто, однако такое упражнение хорошо отразит суть различий."
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -448,7 +448,7 @@ exports.level = {
|
||||||
"",
|
"",
|
||||||
"Теперь, когда мы познакомились с тем, как извлекать данные из удалённого репозитория с помощью `git fetch`, давайте обновим нашу работу чтобы отобразить все эти изменения!",
|
"Теперь, когда мы познакомились с тем, как извлекать данные из удалённого репозитория с помощью `git fetch`, давайте обновим нашу работу чтобы отобразить все эти изменения!",
|
||||||
"",
|
"",
|
||||||
"Существует множество вариантов решений -- как только у вас имеется локальный коммит, Вы можете соединить его с другой веткой. Это значит Вы можете выполнить одну из комманд:",
|
"Существует множество вариантов решений -- как только у вас имеется локальный коммит, Вы можете соединить его с другой веткой. Это значит Вы можете выполнить одну из команд:",
|
||||||
"",
|
"",
|
||||||
"* `git cherry-pick o/master`",
|
"* `git cherry-pick o/master`",
|
||||||
"* `git rebase o/master`",
|
"* `git rebase o/master`",
|
||||||
|
@ -489,9 +489,9 @@ exports.level = {
|
||||||
"type": "ModalAlert",
|
"type": "ModalAlert",
|
||||||
"options": {
|
"options": {
|
||||||
"markdowns": [
|
"markdowns": [
|
||||||
"Мы изучим детали комманды `git pull` чуть позже (включая опции и аргументы вызова команды), а пока что давайте просто попробуем эту комманду.",
|
"Мы изучим детали команды `git pull` чуть позже (включая опции и аргументы вызова команды), а пока что давайте просто попробуем эту команду.",
|
||||||
"",
|
"",
|
||||||
"Помните -- мы также можете выполнить этот уровень с помощью комманд `fetch` и `merge`, но нужно ли делать так, когда можно воспользоваться всего-лишь одной коммандой ? :P"
|
"Помните -- Вы также можете выполнить этот уровень с помощью команд `fetch` и `merge`, но нужно ли делать так, когда можно воспользоваться всего лишь одной командой ? :P"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ exports.level = {
|
||||||
"de_DE": "Denk dran, dass du einen Clone brauchst bevor du Pushen kannst!",
|
"de_DE": "Denk dran, dass du einen Clone brauchst bevor du Pushen kannst!",
|
||||||
"ja" : "Pushができるようになるには、まずリポジトリをcloneする必要があるのをお忘れなく",
|
"ja" : "Pushができるようになるには、まずリポジトリをcloneする必要があるのをお忘れなく",
|
||||||
"fr_FR": "Rappelez-vous que vous devez cloner avant de pouvoir faire un push !",
|
"fr_FR": "Rappelez-vous que vous devez cloner avant de pouvoir faire un push !",
|
||||||
"ru_RU": "Помните, что прежде чем push-ить вам нужно сколнировать репозиторий!"
|
"ru_RU": "Помните, что прежде чем push-ить вам нужно склонировать репозиторий!"
|
||||||
},
|
},
|
||||||
"startDialog": {
|
"startDialog": {
|
||||||
"en_US": {
|
"en_US": {
|
||||||
|
@ -328,13 +328,13 @@ exports.level = {
|
||||||
"",
|
"",
|
||||||
"Хорошо, мы скачали изменения с удалённого репозитория и включили их в наши локальные наработки. Всё это замечательно, но, как нам поделиться _своими_ наработками и изменениями с другими участниками проекта?",
|
"Хорошо, мы скачали изменения с удалённого репозитория и включили их в наши локальные наработки. Всё это замечательно, но, как нам поделиться _своими_ наработками и изменениями с другими участниками проекта?",
|
||||||
"",
|
"",
|
||||||
"Способ, которым мы воспользуемся, является противоположным тому способу, которым мы пользовались ранее для скачивания наработок (`git pull`). Этот способ - использование комманды `git push`!",
|
"Способ, которым мы воспользуемся, является противоположным тому способу, которым мы пользовались ранее для скачивания наработок (`git pull`). Этот способ - использование команды `git push`!",
|
||||||
"",
|
"",
|
||||||
"Комманда `git push` отвечает за загрузку _Ваших_ изменений в указанный удалённый репозиторий, а также включение Ваших коммитов в состав удалённого репозитория. По окончанию работы комманды `git push` все Ваши друзья смогут скачать себе все сделанные Вами наработки.",
|
"Команда `git push` отвечает за загрузку _Ваших_ изменений в указанный удалённый репозиторий, а также включение Ваших коммитов в состав удалённого репозитория. По окончанию работы команды `git push` все Ваши друзья смогут скачать себе все сделанные Вами наработки.",
|
||||||
"",
|
"",
|
||||||
"Вы можете рассматривать комманду `git push` как \"публикацию\" своей работы. Эта комманда скрывает в себе множество тонкостей и ньюансов, с которыми мы познакомимся в ближайшее время, а пока что давайте начнём с малого...",
|
"Вы можете рассматривать команду `git push` как \"публикацию\" своей работы. Эта команда скрывает в себе множество тонкостей и нюансов, с которыми мы познакомимся в ближайшее время, а пока что давайте начнём с малого...",
|
||||||
"",
|
"",
|
||||||
"*замечание -- поведение комманды `git push` без аргументов варьируется в зависимости он значения `push.default`,указанной в настройках git-а. Значение по-умолчанию зависит от версии git, которую Вы используете, однако в наших уроках мы будем использовать значение `upstream`. Лучше всегда проверят эту опцию прежде чем push-ить Ваши настоящие проекты.*"
|
"*замечание -- поведение команды `git push` без аргументов варьируется в зависимости от значения `push.default`, указанной в настройках git-а. Значение по умолчанию зависит от версии git, которую Вы используете, однако в наших уроках мы будем использовать значение `upstream`. Лучше всегда проверять эту опцию прежде чем push-ить Ваши настоящие проекты.*"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -541,7 +541,7 @@ exports.level = {
|
||||||
"markdowns": [
|
"markdowns": [
|
||||||
"## Аргументы команды Push",
|
"## Аргументы команды Push",
|
||||||
"",
|
"",
|
||||||
"Отлично! Теперь, когда Вы знаете, как следить за удалёнными ветками мы можем начать изучение того, что скрыто под занавесом работы команд git push, fetch, и pull. Мы будем рассматривать одну команду за другой, однако принципы у них очень схожи.",
|
"Отлично! Теперь, когда Вы знаете, как следить за удалёнными ветками, мы можем начать изучение того, что скрыто под занавесом работы команд git push, fetch, и pull. Мы будем рассматривать одну команду за другой, однако принципы у них очень схожи.",
|
||||||
"",
|
"",
|
||||||
"Сперва взглянем на `git push`. В уроке посвящённому слежением за удалённым репозиторием, Вы узнали о том, что git находит удалённый репозиторий *и* ветку, в которую нужно необходимо push-ить, благодаря свойствам текущей ветки, на которой мы находимся. Это так называемое поведение без аргументов, однако команда git push может быть также использована и с аргументами. Вид команды в данном случае:",
|
"Сперва взглянем на `git push`. В уроке посвящённому слежением за удалённым репозиторием, Вы узнали о том, что git находит удалённый репозиторий *и* ветку, в которую нужно необходимо push-ить, благодаря свойствам текущей ветки, на которой мы находимся. Это так называемое поведение без аргументов, однако команда git push может быть также использована и с аргументами. Вид команды в данном случае:",
|
||||||
"",
|
"",
|
||||||
|
@ -555,15 +555,15 @@ exports.level = {
|
||||||
"type": "ModalAlert",
|
"type": "ModalAlert",
|
||||||
"options": {
|
"options": {
|
||||||
"markdowns": [
|
"markdowns": [
|
||||||
"Что за такой параметр `<целевая_ветка>`? Мы узнаем об этом через секунду, а пока что рассмотрим пример. Допустим, у мы выполняем такую команду:",
|
"Что за такой параметр `<целевая_ветка>`? Мы узнаем об этом через секунду, а пока что рассмотрим пример. Допустим, мы выполняем такую команду:",
|
||||||
"",
|
"",
|
||||||
"`git push origin master`",
|
"`git push origin master`",
|
||||||
"",
|
"",
|
||||||
"дословный перевод с английского будет таким:",
|
"дословный перевод с английского будет таким:",
|
||||||
"",
|
"",
|
||||||
"*Перейди в ветку с именем \"master\" в моём локальном репозитории, возьми все коммиты, и затем перейди на ветку \"master\" на удалённом репозитории \"origin.\". На этоу удалённую ветку скопируй все отсутствующие коммиты, которые есть у меня, и скажи, когда ты закончишь.*",
|
"*Перейди в ветку с именем \"master\" в моём локальном репозитории, возьми все коммиты, и затем перейди на ветку \"master\" на удалённом репозитории \"origin.\". На эту удалённую ветку скопируй все отсутствующие коммиты, которые есть у меня, и скажи, когда ты закончишь.*",
|
||||||
"",
|
"",
|
||||||
"Указывая `master` в качестве аргумента \"целевая_ветка\", мы тем самым говорим git-у откуда будут *приходить* и *уходить* наши коммиты. Аргумент \"целевая_ветка\" или \"местонахождение\" - это синхранизация между двумя репозиториями.",
|
"Указывая `master` в качестве аргумента \"целевая_ветка\", мы тем самым говорим git-у откуда будут *приходить* и *уходить* наши коммиты. Аргумент \"целевая_ветка\" или \"местонахождение\" - это синхронизация между двумя репозиториями.",
|
||||||
"",
|
"",
|
||||||
"Имейте ввиду, что с тех пор, как мы сказали git-у всё, что ему необходимо (указав оба аргумента), ему - git-у - абсолютно всё равно что Вы зачекаутили до этого!"
|
"Имейте ввиду, что с тех пор, как мы сказали git-у всё, что ему необходимо (указав оба аргумента), ему - git-у - абсолютно всё равно что Вы зачекаутили до этого!"
|
||||||
]
|
]
|
||||||
|
@ -586,7 +586,7 @@ exports.level = {
|
||||||
"type": "GitDemonstrationView",
|
"type": "GitDemonstrationView",
|
||||||
"options": {
|
"options": {
|
||||||
"beforeMarkdowns": [
|
"beforeMarkdowns": [
|
||||||
"А что бы было, ели бы мы не указывали эти аргументы, при этом используя тот же алгоритм?"
|
"А что бы было, если бы мы не указывали эти аргументы, при этом используя тот же алгоритм?"
|
||||||
],
|
],
|
||||||
"afterMarkdowns": [
|
"afterMarkdowns": [
|
||||||
"Как Вы видите, команда не выполнилась, так как `HEAD` потерялся и не находится на удалённо-отслеживаемой ветке."
|
"Как Вы видите, команда не выполнилась, так как `HEAD` потерялся и не находится на удалённо-отслеживаемой ветке."
|
||||||
|
|
|
@ -525,9 +525,9 @@ exports.level = {
|
||||||
"",
|
"",
|
||||||
"Помните, когда в прошлом занятии мы указали в качестве аргумента ветку `master` для команды git push, мы указали совместно *источник* откуда будут приходить коммиты и *пункт назначения (получатель)*, куда коммиты будут уходить.",
|
"Помните, когда в прошлом занятии мы указали в качестве аргумента ветку `master` для команды git push, мы указали совместно *источник* откуда будут приходить коммиты и *пункт назначения (получатель)*, куда коммиты будут уходить.",
|
||||||
"",
|
"",
|
||||||
"Однако, Вы, наверное, задаётесь вопросом -- а что, если я хочу, чтобы мои источник и получатель коммитов были различными? Что если мы хотм запушить коммиты из локальной ветки `foo` в ветку `bar` на удалённом репозитории?",
|
"Однако, Вы, наверное, задаётесь вопросом -- а что, если я хочу, чтобы мои источник и получатель коммитов были различными? Что если мы хотим запушить коммиты из локальной ветки `foo` в ветку `bar` на удалённом репозитории?",
|
||||||
"",
|
"",
|
||||||
"К огромному сожалению, это не возможно сделать средствами git... Да ладно! Я пошутил! Конечно это возможно :)... git сам по себе достаточно гибок (даже слишком).",
|
"К огромному сожалению, это невозможно сделать средствами git... Да ладно! Я пошутил! Конечно это возможно :)... git сам по себе достаточно гибок (даже слишком).",
|
||||||
"",
|
"",
|
||||||
"Мы увидим как на следующем слайде..."
|
"Мы увидим как на следующем слайде..."
|
||||||
]
|
]
|
||||||
|
|
|
@ -11,7 +11,7 @@ exports.level = {
|
||||||
"de_DE": "Denk dran, du kannst immer undo oder reset benutzen, um deine Befehle zurück zu nehmen.",
|
"de_DE": "Denk dran, du kannst immer undo oder reset benutzen, um deine Befehle zurück zu nehmen.",
|
||||||
"ja" : "undoやresetコマンドをいつでも使用することができるのをお忘れなく",
|
"ja" : "undoやresetコマンドをいつでも使用することができるのをお忘れなく",
|
||||||
"fr_FR": "Rappelez-vous que vous pouvez toujours utiliser les commandes undo et reset.",
|
"fr_FR": "Rappelez-vous que vous pouvez toujours utiliser les commandes undo et reset.",
|
||||||
"ru_RU": "Помни - ты всегда можешь отменить комманды с помощью undo или reset"
|
"ru_RU": "Помни - ты всегда можешь отменить команды с помощью undo или reset"
|
||||||
},
|
},
|
||||||
"name": {
|
"name": {
|
||||||
"en_US": "Push Master!",
|
"en_US": "Push Master!",
|
||||||
|
@ -405,7 +405,7 @@ exports.level = {
|
||||||
"markdowns": [
|
"markdowns": [
|
||||||
"## Слияние фича-бранчей (веток)",
|
"## Слияние фича-бранчей (веток)",
|
||||||
"",
|
"",
|
||||||
"Теперь, когда Вы умело владеете коммандами fetch, pull и push давайте применим эти навыки в сочетании с новым рабочим процессом (он же workflow).",
|
"Теперь, когда Вы умело владеете командами fetch, pull и push давайте применим эти навыки в сочетании с новым рабочим процессом (он же workflow).",
|
||||||
"",
|
"",
|
||||||
"Для разработчиков, вовлечённых в большой проект, является довольно распространённым выполнять всю свою работу в так называемых фича-бранчах (вне `master`). А затем, как только работа выполнена, разработчик интегрирует всё что было им сделано. Всё это, за исключением одного шага, довольно похоже на предыдущий урок (там, где мы закачивали ветки на удалённый репозиторий)",
|
"Для разработчиков, вовлечённых в большой проект, является довольно распространённым выполнять всю свою работу в так называемых фича-бранчах (вне `master`). А затем, как только работа выполнена, разработчик интегрирует всё что было им сделано. Всё это, за исключением одного шага, довольно похоже на предыдущий урок (там, где мы закачивали ветки на удалённый репозиторий)",
|
||||||
"",
|
"",
|
||||||
|
@ -425,7 +425,7 @@ exports.level = {
|
||||||
"Давайте быстренько вспомним, как нам обновить `master` и закачать выполненную работу."
|
"Давайте быстренько вспомним, как нам обновить `master` и закачать выполненную работу."
|
||||||
],
|
],
|
||||||
"afterMarkdowns": [
|
"afterMarkdowns": [
|
||||||
"Здесь мы выполнили две комманды, которые:",
|
"Здесь мы выполнили две команды, которые:",
|
||||||
"",
|
"",
|
||||||
"* перебазировали нашу работу на новенький коммит, пришедший с удалённого репозитория, и",
|
"* перебазировали нашу работу на новенький коммит, пришедший с удалённого репозитория, и",
|
||||||
"* закачали свои наработки в удалённый репозиторий"
|
"* закачали свои наработки в удалённый репозиторий"
|
||||||
|
|
|
@ -866,15 +866,15 @@ exports.level = {
|
||||||
"markdowns": [
|
"markdowns": [
|
||||||
"## Удалённые-отслеживаемые ветки",
|
"## Удалённые-отслеживаемые ветки",
|
||||||
"",
|
"",
|
||||||
"Короче, связь между `master` и `o/master` объясняется не инчае как свойство \"удалённое отслеживание\" веток. Ветка `master` настроена так, чтобы следить за `o/master` -- это подразумевает наличие источника для merge и пункта назначения для, в контексте ветки `master`.",
|
"Короче, связь между `master` и `o/master` объясняется не иначе как свойство \"удалённое отслеживание\" веток. Ветка `master` настроена так, чтобы следить за `o/master` -- это подразумевает наличие источника для merge и пункта назначения для, в контексте ветки `master`.",
|
||||||
"",
|
"",
|
||||||
"Вы должно быть удивлены, как это отслеживание появилось на ветке `master`, если мы не запускали ни одной специфической команды. На самом деле, когда Вы клонируете репозиторий это слежение включается автоматически.",
|
"Вы должно быть удивлены, как это отслеживание появилось на ветке `master`, если мы не запускали ни одной специфической команды. На самом деле, когда Вы клонируете репозиторий это слежение включается автоматически.",
|
||||||
"",
|
"",
|
||||||
"В процессе клонирования, git локально создаёт удалённые ветки для каждой ветки с удалённого репозитория (такие как `o/master`). Затем он - git - создаёт локальные ветки, которые отслеживают текущую, активную ветку на удалённом репозитории. В большинстве случаев - это `master`.",
|
"В процессе клонирования, git локально создаёт удалённые ветки для каждой ветки с удалённого репозитория (такие как `o/master`). Затем он - git - создаёт локальные ветки, которые отслеживают текущую, активную ветку на удалённом репозитории. В большинстве случаев - это `master`.",
|
||||||
"",
|
"",
|
||||||
"К тому моменту как git clone завершит своё выполнение, у Вас будет лишь одна локальная ветка (так что вы ешё не сильно перегружены), но, если Вам будет интересно Вы сможете увидить все удалённые ветки (при желании).",
|
"К тому моменту как git clone завершит своё выполнение, у Вас будет лишь одна локальная ветка (так что вы ещё не сильно перегружены), но, если Вам будет интересно, Вы сможете увидеть все удалённые ветки (при желании).",
|
||||||
"",
|
"",
|
||||||
"Именно это объясняет, почему сразу после клонирования Вы видите в консоле надпись:",
|
"Именно это объясняет, почему сразу после клонирования Вы видите в консоли надпись:",
|
||||||
"",
|
"",
|
||||||
" local branch \"master\" set to track remote branch \"o/master\"",
|
" local branch \"master\" set to track remote branch \"o/master\"",
|
||||||
"",
|
"",
|
||||||
|
@ -886,7 +886,7 @@ exports.level = {
|
||||||
"type": "ModalAlert",
|
"type": "ModalAlert",
|
||||||
"options": {
|
"options": {
|
||||||
"markdowns": [
|
"markdowns": [
|
||||||
"### А могу ли я сделать это самостоятельно ?",
|
"### А могу ли я сделать это самостоятельно?",
|
||||||
"",
|
"",
|
||||||
"Само собой! Вы можете сказать любой из веток, чтобы она отслеживала `o/master`, и если Вы так сделаете, эта ветка будет иметь такой же пункт назначения для push и merge как и локальная ветка `master`. Это значит, что Вы можете выполнить `git push`, находясь на ветке `totallyNotMaster`, и все Ваши наработки с ветки `totallyNotMaster` будут закачены на ветку `master` удалённого репозитория!",
|
"Само собой! Вы можете сказать любой из веток, чтобы она отслеживала `o/master`, и если Вы так сделаете, эта ветка будет иметь такой же пункт назначения для push и merge как и локальная ветка `master`. Это значит, что Вы можете выполнить `git push`, находясь на ветке `totallyNotMaster`, и все Ваши наработки с ветки `totallyNotMaster` будут закачены на ветку `master` удалённого репозитория!",
|
||||||
"",
|
"",
|
||||||
|
@ -902,7 +902,7 @@ exports.level = {
|
||||||
"type": "GitDemonstrationView",
|
"type": "GitDemonstrationView",
|
||||||
"options": {
|
"options": {
|
||||||
"beforeMarkdowns": [
|
"beforeMarkdowns": [
|
||||||
"Хватит болтавни, давайте взглянем на демонстрацию! Мы выполним checkout для новой ветки `foo` и укажем ей, чтобы она отслеживала `master` с удалённого репозитория."
|
"Хватит болтовни, давайте взглянем на демонстрацию! Мы выполним checkout для новой ветки `foo` и укажем ей, чтобы она отслеживала `master` с удалённого репозитория."
|
||||||
],
|
],
|
||||||
"afterMarkdowns": [
|
"afterMarkdowns": [
|
||||||
"Как вы увидели, мы использовали `o/master` чтобы обновить ветку `foo`. Обратите внимание, как обновился master!!"
|
"Как вы увидели, мы использовали `o/master` чтобы обновить ветку `foo`. Обратите внимание, как обновился master!!"
|
||||||
|
@ -918,7 +918,7 @@ exports.level = {
|
||||||
"Это работает также и для git push"
|
"Это работает также и для git push"
|
||||||
],
|
],
|
||||||
"afterMarkdowns": [
|
"afterMarkdowns": [
|
||||||
"Оп! Мы закачали наши наработки на ветку `master` нашего удалённого репозитория. При том, что наша локальная ветка называется асболютно по другому."
|
"Оп! Мы закачали наши наработки на ветку `master` нашего удалённого репозитория. При том, что наша локальная ветка называется абсолютно по-другому."
|
||||||
],
|
],
|
||||||
"command": "git checkout -b foo o/master; git commit; git push",
|
"command": "git checkout -b foo o/master; git commit; git push",
|
||||||
"beforeCommand": "git clone"
|
"beforeCommand": "git clone"
|
||||||
|
@ -958,7 +958,7 @@ exports.level = {
|
||||||
"type": "ModalAlert",
|
"type": "ModalAlert",
|
||||||
"options": {
|
"options": {
|
||||||
"markdowns": [
|
"markdowns": [
|
||||||
"Отлично! Для выполнения этого уровня давайте выполним push наших наработок в ветку `master` на удалённом репозитории при этом *не* скачивая и не создавай ветку `master` локально. Я объясню Вам оставшееся чуть позже, тк это продвинутый курс :P"
|
"Отлично! Для выполнения этого уровня давайте выполним push наших наработок в ветку `master` на удалённом репозитории при этом *не* скачивая и не создавая ветку `master` локально. Я объясню Вам оставшееся чуть позже, т.к. это продвинутый курс :P"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue