mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-07-10 06:34:26 +02:00
Better flip logic, visuals improvement, and also advanced level section
featuring Aaron's modifier tutorial Merge pull request #80 from aschrab/multiple_parents
This commit is contained in:
parent
46d71cd93a
commit
57db1be39e
15 changed files with 510 additions and 47 deletions
101
src/levels/advanced/1.js
Normal file
101
src/levels/advanced/1.js
Normal file
|
@ -0,0 +1,101 @@
|
|||
exports.level = {
|
||||
"goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C7\",\"id\":\"master\"},\"bugWork\":{\"target\":\"C2\",\"id\":\"bugWork\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C2\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C4\",\"C5\"],\"id\":\"C6\"},\"C7\":{\"parents\":[\"C6\"],\"id\":\"C7\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
|
||||
"solutionCommand": "git branch bugWork master^^2^",
|
||||
"startTree": "{\"branches\":{\"master\":{\"target\":\"C7\",\"id\":\"master\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C2\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C4\",\"C5\"],\"id\":\"C6\"},\"C7\":{\"parents\":[\"C6\"],\"id\":\"C7\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
|
||||
"name": {
|
||||
"en_US": "Multiple parents"
|
||||
},
|
||||
"hint": {
|
||||
"en_US": "Use `git branch bugWork` with a target commit to create the missing reference."
|
||||
},
|
||||
"startDialog": {
|
||||
"en_US": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Specifying Parents",
|
||||
"",
|
||||
"Like the `~` modifier, the `^` modifier also accepts an optional number after it.",
|
||||
"",
|
||||
"Rather than specifying the number of generations to go back (what `~` takes), the modifier on `^` specifies which parent reference to follow from a merge commit. Remember that merge commits have multiple parents, so the path to choose is ambiguous.",
|
||||
"",
|
||||
"Git will normally follow the \"first\" parent upwards from a merge commit, but specifying a number with `^` changes this default behavior.",
|
||||
"",
|
||||
"Enough talking, let's see it in action",
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Here we have a merge commit. If we checkout `master^` without the modifier, we will follow the first parent after the merge commit. ",
|
||||
"",
|
||||
"(*In our visuals, the first parent is positioned directly above the merge commit.*)"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Easy -- this is what we are all used to"
|
||||
],
|
||||
"command": "git checkout master^",
|
||||
"beforeCommand": "git checkout HEAD^; git commit; git checkout master; git merge C2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Now lets try specifying the second parent instead..."
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"See! We followed the other parent upwards"
|
||||
],
|
||||
"command": "git checkout master^2",
|
||||
"beforeCommand": "git checkout HEAD^; git commit; git checkout master; git merge C2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"The `^` and `~` modifiers can make moving around a commit tree very powerful:"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Lightning fast"
|
||||
],
|
||||
"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 master; git merge C5; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Even crazier, these modifiers can be chained together! Check this out:"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"The same movement as before, but all in one command"
|
||||
],
|
||||
"command": "git checkout HEAD~^2~2",
|
||||
"beforeCommand": "git commit; git checkout C0; git commit; git commit; git commit; git checkout master; git merge C5; git commit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Put it to practice",
|
||||
"",
|
||||
"To complete this level, create a new branch at the specified destination.",
|
||||
"",
|
||||
"Obviously it would be easy to specify the commit directly (with something like `C6`), but I challenge you to use the modifiers we talked about instead!"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
@ -21,6 +21,9 @@ exports.levelSequences = {
|
|||
require('../../levels/mixed/1').level,
|
||||
require('../../levels/mixed/2').level,
|
||||
require('../../levels/mixed/3').level
|
||||
],
|
||||
advanced: [
|
||||
require('../../levels/advanced/1').level
|
||||
]
|
||||
};
|
||||
|
||||
|
@ -75,6 +78,14 @@ exports.sequenceInfo = {
|
|||
'ko': 'Git을 다루는 다양한 팁과 테크닉을 다양하게 알아봅니다',
|
||||
'zh_CN': 'Git技术,技巧与贴士'
|
||||
}
|
||||
},
|
||||
advanced: {
|
||||
displayName: {
|
||||
'en_US': 'Advanced Topics'
|
||||
},
|
||||
about: {
|
||||
'en_US': 'For the truly brave!'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
exports.level = {
|
||||
"goalTreeString": "%7B%22branches%22%3A%7B%22master%22%3A%7B%22target%22%3A%22C1%22%2C%22id%22%3A%22master%22%7D%2C%22pushed%22%3A%7B%22target%22%3A%22C2%27%22%2C%22id%22%3A%22pushed%22%7D%2C%22local%22%3A%7B%22target%22%3A%22C1%22%2C%22id%22%3A%22local%22%7D%7D%2C%22commits%22%3A%7B%22C0%22%3A%7B%22parents%22%3A%5B%5D%2C%22id%22%3A%22C0%22%2C%22rootCommit%22%3Atrue%7D%2C%22C1%22%3A%7B%22parents%22%3A%5B%22C0%22%5D%2C%22id%22%3A%22C1%22%7D%2C%22C2%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C2%22%7D%2C%22C3%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C3%22%7D%2C%22C2%27%22%3A%7B%22parents%22%3A%5B%22C2%22%5D%2C%22id%22%3A%22C2%27%22%7D%7D%2C%22HEAD%22%3A%7B%22target%22%3A%22pushed%22%2C%22id%22%3A%22HEAD%22%7D%7D",
|
||||
"solutionCommand": "git reset HEAD~1;git checkout pushed;git revert HEAD",
|
||||
"compareOnlyBranches": true,
|
||||
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"pushed\":{\"target\":\"C2\",\"id\":\"pushed\"},\"local\":{\"target\":\"C3\",\"id\":\"local\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"local\",\"id\":\"HEAD\"}}",
|
||||
"name": {
|
||||
"en_US": "Reversing Changes in Git",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue