
Git & GitHub: Essential Commands
| π my website | Git docs. | Exams MCQ |
| β | β | β |
|
My YouTube Channel |
| β |
</br>
Table of Contents

- linux-basics-course
- Install Git & VS Code
- Check Git Installation
- Configuring Git (Terminal)
- Create Repository
- Add and Commit (Local)
- Push to Remote Repository on GitHub
- VS-code & Web-editor β οΈ Merge Conflicts
- π Update the Git Remote URL
- Initialize a New Repository
- Branch Commands
- Merging Code
- GitHub Exam
Install Git & VS Code
Just copy & paste the code into your PowerShell - Done βοΈ
You can install Git Bash using Chocolatey, a package manager for Windows. If you havenβt installed Chocolatey yet, run the following command in PowerShell with administrative privileges:
Set-ExecutionPolicy Bypass -Scope Process -Force; `
[System.Net.ServicePointManager]::SecurityProtocol = `
[System.Net.ServicePointManager]::SecurityProtocol -bor 3072; `
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
Then, install Git and VS Code:
choco install git.install
choco install vscode
Check Git Installation

#check where oyu are?
pwd
#The folder tracked by git or not ?
git status
| docs |
| β |
Configuring Git (Terminal)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

π¦ Create an Repository Locally, Edit, and Push from GitHub

Main Folder
β
βββ Folder 01
βββ Folder 02: I want to track this folder
Py Projects
Main Folder
β
βββ Folder 01
βββ Folder 02
β
βββ .git: β οΈ
β οΈ Not showing .git Folder ?
Open Vs code -> Settings -> Exclud -> Remove Git from here.
image Guide 

Or, π¦ Clone an Existing Repository Locally, Edit, and Push from GitHub
Clone and Check Status
git clone https://github.com/username/repository.git
Status Indicators
Hereβs a comprehensive table summarizing the states and their short indicators in Git, along with descriptions:
State |
Short Indicator |
Description |
Icon |
Untracked |
?? |
Files that Git doesnβt track yet. They are new and need to be added git add . to start tracking. |
(No specific icon provided) |
Modified |
M |
Files that have been changed but are not yet staged for commit. |
 |
Staged |
A or M |
Files added to the staging area. A for newly added, M for modified files staged for commit. |
 |
Unmodified |
(none) |
Files that are tracked and have not been modified; they remain in their last committed state. |
(No specific icon provided) |
Unmerged |
U (or UU ) |
Files with conflicts during a merge; need resolution before completing the merge. |
 |
UU
for a file that is unmerged with conflicts.
AA
, DD
, etc., for specific merge conflict cases (e.g., both sides added or deleted a file).

Add and Commit (Local)

βοΈ Create new file β> add & commit
touch "file 01" "file 02"
Py Projects
Main Folder
β
βββ Folder 01
βββ Folder 02
β
βββ .git:
βββ file 01
βββ file 02
# git add filename_01.txt filename_02.txt
git add .
New file add . 
Again create a New file
& commit all
Use git add .
to add all changes.
git commit -m "1st commit"
βοΈ Modified (edit) any file β> again add & Commit again
Next img 
Again Use git add .
to add all changes.
git commit -m "2nd commet after modified a file"

Push (Upload to Remote Repository on GitHub)

β οΈβ οΈβ οΈ VS-code & Web-editor β Merge Conflicts β οΈβ οΈβ οΈ 
[](https://www.youtube.com/watch?v=mryez-QqMj4)
### β οΈ I have a github propository in the github. And I clone this repository using http URL, so I directly push my all changes through VS code. But what happened eat I open Github web editor and modify any file and push from it. This time how to sync my geethab with vs code in this two cases - case1 - if my I not work on vs good and there was no modified or changes. And in case2 - what happened I update from GitHub web editor but there was also some modification exist in v.s code which is comet but not push β οΈ
### β
Solution β
To synchronize your local repository (in VS Code) with the remote GitHub repository in both cases, follow these steps:
---
### β
**Case 1: No Local Changes in VS Code**
You updated a file in the GitHub web editor, but no changes were made in your local repository.
1. **Pull the Latest Changes**:
- Open the terminal in VS Code or use the Source Control tab.
- Run:
```bash
git pull origin
```
- Replace `` with the branch you are working on (e.g., `main` or `master`).
2. **Confirm Sync**:
- After pulling, your local repository will now match the remote repository since there were no local changes to cause a conflict.
---
### β
**Case 2: Local Changes in VS Code Not Pushed Yet**
You updated a file in the GitHub web editor and also made changes locally that are committed but not pushed.
1. **Pull the Latest Changes**:
- First, fetch and merge the remote changes using:
```bash
git pull origin
```
2. β οΈ **Resolve Merge Conflicts (if any)**:
- If there are conflicts between the changes made locally and those from the GitHub web editor, Git will indicate the files with conflicts. Resolve these conflicts by:
- Opening the conflicted files in VS Code.
- Looking for conflict markers (`<<<<<<<`, `=======`, `>>>>>>>`).
- Deciding whether to keep your changes, the remote changes, or both.
- After resolving the conflicts, stage the resolved files:
```bash
git add
```
- Commit the resolved changes:
```bash
git commit -m "Resolved merge conflicts"
```
3. **Push Your Changes**:
- Once the merge is complete and there are no conflicts, push your changes back to the remote repository:
```bash
git push origin
```
---
### **Notes**
- Always pull the latest changes before starting work in VS Code to minimize conflicts.
- Use `git status` frequently to check the state of your repository and understand whether changes are staged, unstaged, or committed.
- If you only want to review the changes made in the GitHub web editor before pulling, use:
```bash
git fetch origin
git log origin/
```
[](https://www.youtube.com/watch?v=vArkGr5nzVU)
#### β
This approach keeps both your local and remote repositories in sync efficiently. β
</div>
</details>
### Push Changes to a Remote Repository
Once you've committed your changes locally, use the `git push` command to push those changes to a remote repository.
**Syntax:**
```bash
git push
```
**Example:**
```bash
git push origin main
```
*Replace `origin` with the name of your remote repository, and `main` with the name of the branch you're pushing to.*
If it's your first time pushing to the remote repository, you may need to set up tracking:
```bash
git push -u origin main
```
*After the initial setup, simply use `git push` for future pushes.*
```bash
git push
```
π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯
## Update the Git Remote URL
π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯
### 1. π git clone from a another profile/repo

### 2. π Check the Targate repo

### 3. π Update the Targate repo
#### Step 1: Update the Git Remote URL
In the `node-todo-cicd` directory, update the remote URL to point to your repository:
```bash
git remote set-url origin https://github.com/akashdip2001/AWS.git
```
Verify the change with:
```bash
git remote -v
```
It should now display:
```plaintext
origin https://github.com/akashdip2001/AWS.git (fetch)
origin https://github.com/akashdip2001/AWS.git (push)
```
---
### Step 2: Move the Files to the Target Directory
1. Create the directory structure in your repository:
```bash
mkdir -p Projects/CI-CD/Project\ 001
mv * Projects/CI-CD/Project\ 001/
```
2. Ensure no unnecessary files (e.g., `.git` from the original project) are moved:
```bash
rm -rf Projects/CI-CD/Project\ 001/.git
```
---
### Step 3: Stage and Commit the Changes
1. Add the new directory and its content to the staging area:
```bash
git add Projects/CI-CD/Project\ 001/
```
2. Commit the changes with an appropriate message:
```bash
git commit -m "Added node-todo-cicd project to Projects/CI-CD/Project 001"
```
---
### Step 4: Push the Changes
Push the changes to your repository on GitHub:
```bash
git push origin master
```
Replace `master` with the branch name you're using if it differs.
---
### Step 5: Verify the Upload
1. Go to your repository on GitHub: [https://github.com/akashdip2001/AWS](https://github.com/akashdip2001/AWS).
2. Navigate to `Projects/CI-CD/Project 001` to ensure the files are correctly placed.
---
This method ensures the project is correctly uploaded to the desired directory in your repository.

π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯π₯
---
---
## Initialize a New Repository
**`init`** - Used to create a new repository
```bash
mkdir
cd
git init
```
*Use `cd ..` to navigate back to the main folder.*
*`mkdir` creates a new folder and `cd` enters it. Then, create or edit files within the folder.*
```bash
git status
git add .
git commit -m "Initial commit"
git status
```
```bash
git push origin main
```

# π¦ Creating a Repository on GitHub (Without README) & Uploading Local Files
**Without a README**: This allows you to clone the repository locally, initialize Git, and push all local files.
```bash
git remote add origin https://github.com/username/repository.git
git remote -v
```
*Use `git remote -v` to verify the remote connection.*
## Check the Branch
```bash
git branch
```
*If you're on the `master` branch, rename it to `main`.*
### Rename the Branch to `main`
```bash
git branch -M main
git push -u origin main
```
*The `-u` flag sets up tracking for future pushes, allowing you to use `git push` without specifying the remote and branch.*
## Push Any Changes Locally
```bash
git status
git add .
git commit -m "Add new file or update"
git push
```
# π¦ Branch Commands
### βοΈ Check the Branch
```bash
git branch
```
### βοΈ Rename a Branch
```bash
#git branch -M main
git branch -m
```
### βοΈ Create a New Branch
```bash
git branch
```
```bash
git checkout -b
```
### βοΈ Check all existing Branches
```bash
git branch
```
also check using HEAD file
### βοΈ Navigate Between Branches
```bash
# create new Branch Then switch
git branch
```
```bash
git switch
```
```bash
git checkout
```
```bash
# Auto create the branct (if not exist) & switch
git switch -c
```
### βοΈ Delete a Branch
```bash
git branch -d
```
### β
After Making Changes
```bash
git status
git add .
git commit -m "Your commit message"
git push origin
```
| [docs](https://docs.chaicode.com/branches-in-git/) |
| --- |
## Create a new Branch in VS-Code β οΈ git push
steps 

```bash
git branch
```
```bash
git branch "Test-Share-link"
```
```bash
git switch "Test-Share-link"
```
```bash
git branch
```
```bash
git status
```
```bash
git add .
git commit -m "add Test-Share-link .md file"
# β git push
```
```bash
# β
git push --set-upstream origin Test-Share-link
```





---
# Some practical-Problems
## create a Project Locallyt with branch name `master` and π΅ want to upload a existing Repo with `main' branch.
### π’ Normally you can push your code with `master` and Marge the Branch in GitHub βοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈ
> *βThe workspace currently open doesnβt have any folders containing Git repositories.β*
You want to upload this directory to your **existing GitHub repo**:
π [`https://github.com/akashdip2001/Arduino-IDE-setup`](https://github.com/akashdip2001/Arduino-IDE-setup)
---
### β
Steps to Upload Your Current Directory to That Repo:
Follow these simple steps inside VS Code terminal:
---
#### π’ 1. Initialize Git in Your Project Folder
If you havenβt yet:
```bash
cd path/to/ESP8266_LED_Control
git init
```
---
#### π’ 2. Add Remote Link to Your Existing GitHub Repo
```bash
git remote add origin https://github.com/akashdip2001/Arduino-IDE-setup.git
```
> If you get an error like *βremote origin already existsβ*, use:
```bash
git remote set-url origin https://github.com/akashdip2001/Arduino-IDE-setup.git
```
---
#### π’ 3. Add and Commit All Files
```bash
git add .
git commit -m "Upload ESP8266 LED Control project"
```
---
#### π’ 4. Push to GitHub
> If your GitHub repo's branch is `main`:
```bash
git push -u origin main
```
> Or if it's `master`:
```bash
git push -u origin master
```
---
#### β
Done! Check your repo
Go to your repo page: [github.com/akashdip2001/Arduino-IDE-setup](https://github.com/akashdip2001/Arduino-IDE-setup) β your files should now be uploaded π
---
## π΅β οΈ Some Tile error comes when try to upload in `main` branch
you **can directly upload to the `main` branch**, but hereβs whatβs happening and how to fix it in the cleanest way:
---
### π What Happened ??
- Your **local branch** is named `master` by default.
- Your **GitHub repo (`https://github.com/akashdip2001/Arduino-IDE-setup.git`)** has the **`main` branch** (not `master`).
- When you tried `git push origin main`, Git said:
`error: src refspec main does not match any`
β€ Because your local branch is still named `master`.
---
### β
Two Easy Fix Options
#### π΅ **Option 1: Rename Local `master` to `main`** (RECOMMENDED)
This way, youβll align with GitHubβs default and wonβt create extra branches.
```bash
git branch -m master main
git push -u origin main
```
Done! Now youβre working with the `main` branch directly, just like your GitHub repo. βοΈ
---
#### π΅ **Option 2: Push `master` as `main`**
If you don't want to rename the local branch but still push it to `main` on GitHub:
```bash
git push -u origin master:main
```
This tells Git: βPush my local `master` branch **to the remote `main` branch**.β
---
### π§Ή Clean Tip
To always start your new projects with a `main` branch locally, you can set this globally:
```bash
git config --global init.defaultBranch main
```
This avoids the `master` vs `main` mix-up in the future. β
---
## β οΈ error come for **Option 1**
This is just a small sync issue between your **local `main`** branch and the **remote `main`** branch on GitHub.
---
### π₯ What's the problem ??
The remote `main` branch **already has some commits** (probably a README or `.gitignore` added through GitHub's UI), but your local `main` doesn't have them. So Git is blocking your push to avoid overwriting remote history.
---
### β
How to fix it safely
Hereβs the step-by-step:
---
### π΅
1. **Pull remote `main` first** and merge
```bash
git pull origin main --allow-unrelated-histories
```
- The `--allow-unrelated-histories` flag helps when your local repo and the GitHub repo were initialized separately.
- You may be asked to enter a merge commit message. Just accept it (save and close the editor).
---
### 2. **Now push successfully**
```bash
git push -u origin main
```
Boom π₯! Now your local project is successfully pushed to GitHubβs `main` branch.

---
### β
Optional Cleanup (Next time)
To avoid this in future projects:
- **Create the repo on GitHub *without* any files** (uncheck README, .gitignore, License).
- Or **initialize your local repo first**, then push, and GitHub wonβt have conflicts.
---
βοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈβοΈ
# π¦ Merging Code
## Method 1: Using Git Commands
```bash
#git diff # Compare commits, branches, files & more
git merge
```
GUI
## Method 2: Creating a Pull Request (PR)
```bash
git pull origin main # Download and synchronize with GitHub
```

---
| π [Documentation](https://docs.chaicode.com/git-and-github/) |
[My YouTube Channel](https://youtu.be/q8EevlEpQ2A?si=AFDUT-cTa-OXjufz&t=6370) |
| --- | --- |
---
# [GitHub Exam](./Exam/1%20github%20foundations%20certification/readme.md)
[](https://github.com/akashdip2001/git-github/tree/main/Exam)