Compare commits
20 Commits
main
...
feature/me
| Author | SHA1 | Date | |
|---|---|---|---|
| 1a73cb683a | |||
| abc73d0ce2 | |||
| 05049ea57f | |||
| 1e1e03c8e4 | |||
| 5331b6d65c | |||
| ed79fb70d2 | |||
| c308eee613 | |||
| 8bcd72e90a | |||
| e1a3c897e8 | |||
| eb6050dd62 | |||
| 9d7507e339 | |||
| 791c79c49a | |||
| cbc3474940 | |||
| 4f1013c54a | |||
| d6a89cf704 | |||
| 40b8a82d3a | |||
| 75c55a72dc | |||
| 44b93e00b5 | |||
| 4004eb1a26 | |||
|
|
1bea8be7b4 |
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
this file wont visibile in git
|
||||||
|
secret.txt
|
||||||
|
.env
|
||||||
16
ASSIGNMENT-04-09-2025.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
## Q1: Did Git perform a fast-forward merge or a 3-way merge?
|
||||||
|
|
||||||
|
Git performed a **3-way merge**.
|
||||||
|
|
||||||
|
### Explanation:
|
||||||
|
- A **fast-forward merge** happens when the branch pointer can just be moved forward because no new commits exist on the target branch since the branching point.
|
||||||
|
- A **3-way merge** happens when both branches have new commits, and Git needs to create a merge commit by combining changes from both sides.
|
||||||
|
|
||||||
|
In my case, both `feature/bugReport` and `feature/mergeFile` had new commits, so Git created a merge commit.
|
||||||
|
Thus, it was a **3-way merge**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Q2: What does `git log --graph --oneline --all` show after the merge?
|
||||||
|
|
||||||
|

|
||||||
@@ -1,7 +1,208 @@
|
|||||||
## Create Repository in Organization
|
# 🚀 Git Assignment – My Version Control Journey
|
||||||
|
|
||||||
- Visited the Git-Training-Hub organization on Git Comorin.
|
---
|
||||||
- Created a new repository named git-practice-Ajin with no README, .gitignore, or license.
|
|
||||||
- The repository is empty as required.
|
|
||||||
|
|
||||||

|
## 🛠 Step 1: Verifying Git Installation
|
||||||
|
|
||||||
|
📌 _First step was making sure Git was installed and working fine._
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
✅ The output displayed the installed Git version.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📂 Step 2: Checking Repository Status
|
||||||
|
|
||||||
|
👀 _Next, I checked the repo to see if there were pending changes._
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
🔎 Git shows tracked, untracked, and staged files.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ➕ Step 3: Moving Files to Staging
|
||||||
|
|
||||||
|
✨ _I noticed some modifications and added them with_ `git add`.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
🗂 Files are now ready to be saved in the next commit.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Step 4: Reviewing Commit History
|
||||||
|
|
||||||
|
📖 _Every commit is part of the project’s story, so I reviewed mine._
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
🕒 Shows commit messages, author names, and dates.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔹 Step 5: Simplified Commit Log
|
||||||
|
|
||||||
|
👾 _To avoid too much detail, I used_ `git log --oneline`.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
⚡ A compact and easy-to-read commit history.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌳 Step 6: Visualizing History with Graph
|
||||||
|
|
||||||
|
🎨 _History is better when visualized, so I used graph mode._
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
🌿 Displays branches and merges clearly.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔍 Step 7: Checking File Changes
|
||||||
|
|
||||||
|
🖋 _Before committing, I inspected changes with_ `git diff`.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
🔑 Shows exact line changes inside files.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🆚 Step 8: Comparing Two Versions
|
||||||
|
|
||||||
|
⚔️ _To see what changed between two commits, I compared them._
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📌 Helps track project progress over time.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌿 Step 9: Working with Branches
|
||||||
|
|
||||||
|
🔀 _I explored branches to work independently without touching main code._
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
🌱 Branches allow experimentation safely.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📥 Step 10: Cloning a Repository
|
||||||
|
|
||||||
|
🛰 _I downloaded a project from remote using_ `git clone`.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📂 A full copy is now available locally.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📥 Step 11: Pulling Remote Updates
|
||||||
|
|
||||||
|
🛰 _To stay up to date, I fetched and merged with_ `git pull origin`.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌐 Step 12: Checking Remote Connections
|
||||||
|
|
||||||
|
🔗 _I verified linked remote repositories with_ `git remote -v`.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚫 Step 13: Using .gitignore
|
||||||
|
|
||||||
|
📄 _Added a `.gitignore` file to skip tracking unnecessary stuff._
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
## 🔀 Step 14: Performing a Merge
|
||||||
|
|
||||||
|
⚡ _I merged changes from another branch into my current branch._
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📌 Since both branches had commits, Git created a **3-way merge commit** (not a fast-forward merge).
|
||||||
|
|
||||||
|
---
|
||||||
|
## 📜 Step 15: Inspecting Merge Commit Details
|
||||||
|
|
||||||
|
👀 _I used `git log -p -- merge.txt` to review the merge commit changes._
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📝 Shows added and modified lines from both branches.
|
||||||
|
|
||||||
|
---
|
||||||
|
## 🗂 Step 16: Checking Simplified Log After Merge
|
||||||
|
|
||||||
|
⚡ _To quickly see the commit history after the merge, I ran:_
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
## 🌳 Step 17: Visualizing All Branches and Merge
|
||||||
|
|
||||||
|
🎨 Using the graph mode to visualize history clearly:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
🌿 Shows both branches and the merge commit.
|
||||||
|
|
||||||
|
---
|
||||||
|
## Step 18: Blame – Tracking Line History
|
||||||
|
|
||||||
|
🖊 With git blame, I checked who wrote each line in merge.txt.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
🔑 Each line is attributed to its commit.
|
||||||
|
|
||||||
|
---
|
||||||
|
## 🎯 Step 19: Blame with Line Range
|
||||||
|
|
||||||
|
🎯 To narrow focus, I ran blame only for lines 1–5.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📧 Step 20: Blame with Email
|
||||||
|
|
||||||
|
📧 Finally, I checked the author emails using git blame -e.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
## 🔀 Step 21: Merging Branch `feature/mergeFile` into Main
|
||||||
|
|
||||||
|
⚡ _I merged the branch `feature/bugReport` into `feature/mergeFile` using the command:_
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
# ✨ Summary
|
||||||
|
|
||||||
|
1. ✅ **Git Version Check** – Verified installation.
|
||||||
|
2. ✅ **Git Status** – Checked repository state.
|
||||||
|
3. ✅ **Git Add** – Staged changes.
|
||||||
|
4. ✅ **Git Log** – Viewed history.
|
||||||
|
5. ✅ **Git Log (oneline/graph)** – Short + visual log.
|
||||||
|
6. ✅ **Git Diff** – Compared file changes.
|
||||||
|
7. ✅ **Git Branch** – Created/checked branches.
|
||||||
|
8. ✅ **Git Clone** – Cloned repo locally.
|
||||||
|
9. ✅ **Git Pull** – Pulled updates.
|
||||||
|
10. ✅ **Git Remote** – Checked remotes.
|
||||||
|
11. ✅ **Git Ignore** – Excluded files.
|
||||||
|
12. ✅ **Git Merge** – Performed and confirmed a 3-way merge.
|
||||||
|
13. ✅ **Git Blame** – Tracked who wrote each line (with -L and -e options).
|
||||||
|
---
|
||||||
BIN
git_blame_-L_1,5_merge.txt.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
git_blame_-e_merge.txt.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
git_blame_merge.txt.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
git_branch.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 11 KiB |
BIN
git_clone.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
BIN
git_log_--_merge.txt.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
git_log_--graph_--oneline_--all.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
git_log_--oneline.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
git_log_--oneline_--_merge.txt.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
BIN
git_log_-p_--_merge.txt.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
git_merge.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
git_pull.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
git_readme.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
git_remote.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
git_status.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
git_version.png
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
BIN
gitignore_file.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
17
index.html
@@ -1,17 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Document</title>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<h1>Hello World</h1>
|
|
||||||
<p>This is a sample HTML document.</p>
|
|
||||||
<p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Libero magni porro totam consequatur architecto ipsum
|
|
||||||
id, voluptate ullam ex facilis fugit quae consequuntur animi, quis deserunt laboriosam! Harum, vero ut.</p>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
7
merge.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# created new merge file
|
||||||
|
# added a second line for this file
|
||||||
|
# added a third line for this file
|
||||||
|
# added a fourth line for this file
|
||||||
|
# added a fifth line for this file
|
||||||
|
# added a sixth line for this file
|
||||||
|
# changed to new mergeFile branch
|
||||||
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
2
new_branch.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
create new branch and checkout to the new branch
|
||||||
|
edit text
|
||||||
35
readme.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
1️⃣ Reproduce the situation
|
||||||
|
|
||||||
|
- Initially, my repo had a file called readme.md.
|
||||||
|
- I renamed it to README.md (only case change).
|
||||||
|
- After running:
|
||||||
|
|
||||||
|
`git status`
|
||||||
|
|
||||||
|
Git showed no changes, meaning it did not detect the rename.
|
||||||
|
|
||||||
|
📸  – Git did not show any changes after renaming readme.md → README.md
|
||||||
|
|
||||||
|
2️⃣ Investigate why Git is not tracking the rename
|
||||||
|
|
||||||
|
- Git depends on the filesystem to detect changes.
|
||||||
|
- On Windows (NTFS, FAT), the filesystem is case-insensitive.
|
||||||
|
- That means readme.md and README.md are treated as the same file.
|
||||||
|
- Because Windows reports no difference, Git assumes nothing happened.
|
||||||
|
|
||||||
|
3️⃣ Correct steps to make Git recognize and commit the rename
|
||||||
|
|
||||||
|
To force Git to recognize the case-only rename:
|
||||||
|
|
||||||
|
`git mv -f readme.md README.md`
|
||||||
|
`git commit -m "Rename readme.md to README.md"`
|
||||||
|
|
||||||
|
4️⃣ Underlying reason
|
||||||
|
|
||||||
|
- Git itself is case-sensitive → it can distinguish between readme.md and README.md.
|
||||||
|
- Windows filesystems are case-insensitive → both names point to the same file.
|
||||||
|
- On Linux/macOS (case-sensitive), Git would automatically detect the rename.
|
||||||
|
- On Windows, we must explicitly force it with git mv -f.
|
||||||
|
|
||||||
|
✅ Conclusion:
|
||||||
|
It’s due to the way Git (case-sensitive) interacts with Windows (case-insensitive) filesystems.
|
||||||
BIN
repo_update.png
Normal file
|
After Width: | Height: | Size: 27 KiB |