mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-07-25 13:14:30 +02:00
101 lines
4.8 KiB
JavaScript
101 lines
4.8 KiB
JavaScript
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!"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
};
|
|
|