mirror of
https://github.com/bregman-arie/devops-exercises.git
synced 2026-02-04 23:59:11 +00:00
clarified the HEAD~2 root commit issue and suggested using --root or creating an initial commit (#10569)
This commit is contained in:
parent
5fde9ba3d3
commit
2a9bfcb78b
@ -1,24 +1,27 @@
|
||||
## Git - Squashing Commits - Solution
|
||||
|
||||
|
||||
1. In a git repository, create a new file with the content "Mario" and commit the change
|
||||
1. In a git repository, create a new file with the content "Mario" and commit the change:
|
||||
|
||||
```
|
||||
echo "Mario" > new_file
|
||||
git add new_file
|
||||
echo "Mario" -> new_file
|
||||
git commit -a -m "New file"
|
||||
git commit -m "New file"
|
||||
```
|
||||
|
||||
2. Make change to the content of the file you just created so the content is "Mario & Luigi" and create another commit
|
||||
2. Make a change to the content of the file you just created so it becomes "Mario & Luigi," then create another commit:
|
||||
|
||||
```
|
||||
echo "Mario & Luigi" > new_file
|
||||
git commit -a -m "Added Luigi"
|
||||
```
|
||||
|
||||
3. Verify you have two separate commits - `git log`
|
||||
3. Verify you have two separate commits by running:
|
||||
|
||||
4. Squash the two commits you've created into one commit
|
||||
```
|
||||
git log
|
||||
```
|
||||
|
||||
4. Squash the two commits you've created into one commit:
|
||||
|
||||
```
|
||||
git rebase -i HEAD~2
|
||||
@ -31,19 +34,25 @@ pick 5412076 New file
|
||||
pick 4016808 Added Luigi
|
||||
```
|
||||
|
||||
Change `pick` to `squash`
|
||||
|
||||
Change `pick` to `squash`:
|
||||
|
||||
```
|
||||
pick 5412076 New file
|
||||
squash 4016808 Added Luigi
|
||||
```
|
||||
|
||||
Save it and provide a commit message for the squashed commit
|
||||
Save it and provide a commit message for the squashed commit.
|
||||
|
||||
> **Note**: If running `git rebase -i HEAD~2` returns a fatal error (e.g., "invalid upstream 'HEAD~2'"), that usually means your second commit is actually the root commit and there's no valid parent before it. In that case, you can either:
|
||||
> * Use `git rebase -i --root` to allow rewriting the root commit, **or**
|
||||
> * Create an initial commit before these two commits so that `HEAD~2` points to valid commits.
|
||||
|
||||
### After you complete the exercise
|
||||
|
||||
Answer the following:
|
||||
**Answer the following:**
|
||||
|
||||
* What is the reason for squashing commits? - history becomes cleaner and it's easier to track changes without commit like "removed a character" for example.
|
||||
* Is it possible to squash more than 2 commits? - yes
|
||||
* **What is the reason for squashing commits?**
|
||||
History becomes cleaner and it's easier to track changes without many small commits like "removed a character," for example.
|
||||
|
||||
* **Is it possible to squash more than 2 commits?**
|
||||
Yes.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user