211 lines
4.2 KiB
Markdown
211 lines
4.2 KiB
Markdown
<!-- @format -->
|
||
|
||
# Git Assignment
|
||
|
||
## 1. What is Git and Version Control
|
||
|
||
What problem does Git solve?
|
||
Git tracks changes in files (especially code) and helps multiple people collaborate without overwriting each other’s work. It lets you save versions, go back if something breaks, and merge changes safely.
|
||
|
||
Real-life example:
|
||
A school group project where everyone writes different parts of the same report. Git combines everyone’s edits into one final version without losing work.
|
||
|
||
Why is Git better than emailing files?
|
||
Emailing creates many confusing copies (e.g., report_final.docx, report_final2.docx). Git keeps a single version, records who changed what, and merges edits automatically, making collaboration easier and safer.
|
||
|
||
|
||
## Git Version Check
|
||
|
||

|
||
|
||
---
|
||
|
||
## 2. Installing Git & Configuring User Info
|
||
|
||

|
||
|
||
---
|
||
|
||
## Git List
|
||
|
||

|
||
|
||
---
|
||
|
||
## 3. Initializing a Repository
|
||
|
||
## Git Init
|
||
|
||

|
||
|
||
---
|
||
|
||
## 4. Working Directory, Staging, and Commits
|
||
|
||
## Git Add
|
||
|
||

|
||

|
||

|
||

|
||
|
||
---
|
||
|
||
## 5. Adding & Committing Files
|
||
|
||
## Git Log
|
||

|
||
|
||
---
|
||
|
||
## 6. Viewing Commit Logs & Diffs
|
||
|
||
## Git Log (graph)
|
||
|
||

|
||
|
||
---
|
||
|
||
## Git Diff
|
||
|
||

|
||
|
||
---
|
||
|
||
## Git Diff (commit1 vs commit2)
|
||
|
||

|
||
|
||
---
|
||
|
||
## 7. Creating & Switching Branches
|
||
|
||
## Git Branch
|
||
|
||

|
||

|
||

|
||
|
||
|
||
---
|
||
|
||
## 8. Cloning a Remote Repository
|
||
|
||
## Git Clone
|
||
|
||

|
||

|
||
|
||
---
|
||
|
||
## 9. Adding & Managing Remotes
|
||
|
||
## Git Remote
|
||
|
||

|
||
|
||
---
|
||
|
||
## 10. Pushing & Pulling Changes
|
||
|
||
## Git Pull
|
||
|
||

|
||

|
||

|
||
|
||
|
||
## Git Push
|
||
|
||

|
||
|
||
---
|
||
|
||
## 11. Ignoring Files with .gitignore
|
||
|
||
## .gitignore
|
||
|
||

|
||

|
||
|
||
---
|
||
## Part 1: Viewing File History
|
||
|
||
## git log -- filename.extension
|
||
|
||

|
||
|
||
## git log -p -- filename.extension
|
||
|
||

|
||
|
||
## git log --oneline -- filename.extension
|
||
|
||

|
||
|
||
---
|
||
|
||
How many commits modified this file?
|
||
3
|
||
|
||
What differences do you see when adding the -p option?
|
||
It describes what changed — which lines were added (+), which lines were removed (−)
|
||
|
||
---
|
||
|
||
## Part 2: Viewing File History with Blame
|
||
|
||
## git blame -- filename.extension
|
||
|
||

|
||
|
||
## git blame -L 1,5 -- filename.extension
|
||
|
||

|
||
|
||
## git blame -e -- filename.extension
|
||
|
||

|
||
|
||
---
|
||
|
||
Who changed each line of the file?
|
||
Arjun,Renejit, Arjun, Arjun
|
||
ec0f5f8e (Arjun G 2025-09-10 23:41:01 +0530 1) Tech Thursday assignment 3 updated
|
||
ae37ccf5 (Renejit 2025-09-10 16:29:53 +0530 2) date 10-09-2025
|
||
f97b76b3 (Arjun G 2025-09-11 00:00:58 +0530 3) wednesday
|
||
dc7fc330 (Arjun G 2025-09-11 00:01:50 +0530 4) Practise session extended to Thursday
|
||
|
||
How does -L help when the file is large?
|
||
Limits the blame output to just a range of lines when the file is large.
|
||
|
||
What extra information does -e provide?
|
||
Author email
|
||
|
||
---
|
||
|
||
## Part 3: Merging Branches
|
||
|
||
## git checkout -b feature/feature-1
|
||
|
||

|
||
|
||
## git merge feature/feature-1
|
||
|
||

|
||
|
||
## git log --graph --oneline --all
|
||
|
||

|
||
|
||
---
|
||
|
||
Did Git perform a fast-forward merge or a 3-way merge?
|
||
3 way merge
|
||
|
||
What does git log --graph --oneline --all show after the merge?
|
||
shows a merge commit (06f4ad1) at the top.
|
||
The graph shows two diverging branches (main & feature/feature-1) and how they were joined together.
|
||
main now contains all changes from both histories.
|
||
|