mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-07-04 11:44:27 +02:00
70 lines
4.1 KiB
JavaScript
70 lines
4.1 KiB
JavaScript
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",
|
|
"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": "Reversing Changes in Git",
|
|
"hint": "",
|
|
"startDialog": {
|
|
"childViews": [
|
|
{
|
|
"type": "ModalAlert",
|
|
"options": {
|
|
"markdowns": [
|
|
"## Reversing Changes in Git",
|
|
"",
|
|
"There are many ways to reverse changes in Git. And just like committing, reversing changes in Git has both a low-level component (staging individual files or chunks) and a high-level component (how the changes are actually reversed). Our application will focus on the latter.",
|
|
"",
|
|
"There are two primary ways to undo changes in Git -- one is using `git reset` and the other is using `git revert`. We will look at each of these in the next dialog",
|
|
""
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "GitDemonstrationView",
|
|
"options": {
|
|
"beforeMarkdowns": [
|
|
"## Git Reset",
|
|
"",
|
|
"`git reset` reverts changes by moving a branch reference backwards in time to an older commit. In this sense you can think of it as \"rewriting history;\" `git reset` will move a branch backwards as if the commit had never been made in the first place.",
|
|
"",
|
|
"Let's see what that looks like:"
|
|
],
|
|
"afterMarkdowns": [
|
|
"Nice! Git simply moved the master branch reference back to `C1`; now our local repository is in a state as if `C2` had never happened"
|
|
],
|
|
"command": "git reset HEAD~1",
|
|
"beforeCommand": "git commit"
|
|
}
|
|
},
|
|
{
|
|
"type": "GitDemonstrationView",
|
|
"options": {
|
|
"beforeMarkdowns": [
|
|
"## Git Revert",
|
|
"",
|
|
"While reseting works great for local branches on your own machine, it's method of \"rewriting history\" doesn't work for remote branches that others are using.",
|
|
"",
|
|
"In order to reverse changes and *share* those reversed changes with others, we need to use `git revert`. Let's see it in action"
|
|
],
|
|
"afterMarkdowns": [
|
|
"Weird, a new commit plopped down below the commit we wanted to reverse. That's because this new commit `C1'` introduces *changes* -- it just happens to introduce changes that exactly reverses the commit of `C1`.",
|
|
"",
|
|
"With reverting, you can push out your changes to share with others."
|
|
],
|
|
"command": "git revert HEAD",
|
|
"beforeCommand": "git commit"
|
|
}
|
|
},
|
|
{
|
|
"type": "ModalAlert",
|
|
"options": {
|
|
"markdowns": [
|
|
"To complete this level, reverse the two most recent commits on both `local` and `pushed`.",
|
|
"",
|
|
"Keep in mind that `pushed` is a remote branch and `local` is a local branch -- that should help you chose your methods."
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
};
|