
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
```





# π¦ 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)