---
# System prepended metadata

title: Git basics - Notes
tags: [GIT]

---

###### tags: `GIT`

# Git basics - Notes

[ToC]

## Credits :pray:
:::info
Credit goes to below content creators.
- CoreySchafer Git Fundamentals video  -  [CoreySchafer](https://www.youtube.com/watch?v=HVsySz-h9r4)
:::

## :point_right:Instantiation of Git 

### Check the git installation

:::success
**git --version**
:::

### Instantiate the Global variables

:::success
Set Username --> **git config --global user.name {username}**
Set Username --> **git config --global user.email {email}**
Retrieve the configured variables --> **git config --list**
:::

## :point_right:Git help

:::success
- **git help {action}**
- **git {action} --help**
:::

## :point_right:Initialize, revoke and check status of git in a folder
### Initialization

:::success
**git init**
:::


### Revoke

:::danger
**rm -rf .git**
:::

### Status

This command will share the information of all the tracked & untracked files and status of files.
:::info
==**git status**==
:::

## :point_right:Stage files to Stagging area - Local
### To stage a specific file

:::success
**git add {file_name}**
:::

### To stage ALL files

:::success
**git add -A**
:::

### To stage all files starting with data

:::success
**git add data***
:::

### To Ignore set of files from git tracking in folder

- Create a file with the name ==.gitignore==
- Add the file names or folder names to .gitignore.

### To reset particular file from staging.

This command will remove all the files form staging area

:::danger
**git reset {file_name}**
:::

### To reset all the files from staging.

This command will remove all the files form staging area

:::danger
**git reset**
:::


## :point_right:Commit the files to Git Folder - Locally

:::success
**git commit -m {descriptive_message}**
:::

## :point_right:Check the logs of previous commits

This command provides the information of previous commited 

- hash information
- Author information
- message of previous commit
- Date and time of commits

:::info
==**git log**==
:::

## :point_right:Git Clone
This command will create a copy of the repository to new directory for modifications. It can copy from local repo or from the remote repository 
### Git Clone from Directory

:::success
**git clone ../{from_directory.git} <to_directory>**
:::

==**.**== represents - Local directory and generally used for to_directory.
### Git Clone from remote with remote URL info

:::success
**git clone <github_url> <to_directory>**
:::
==**.**== represents - Local directory and generally used for to_directory.

## :point_right:View the branches for Repositories

### List all the local branches

:::info
**git branch -a**
:::
### List all the remote branches

:::info
**git branch -r**
:::

## :point_right:Adding branches

### Add a local branch for repository 

:::success
**git branch {branch_name}**
:::

### Add a remote branch tracking for local repository

:::success
**git remote add {git_remote_branch_name} {remote_branch_url}**
:::

## :point_right:Deleting branches
### Delete a local branch from repository

:::danger
**git branch -d {branch_name}**
**git branch --delete {branch_name}**
:::

### Delete a remote tracking branch for repository

:::danger
**git branch -d -r {branch_name}**
:::

### Delete a remote branch 
:::danger
**git push origin --delete {branch_name}**
:::


## Switch or checkout between branches

:::info
**git switch {branch_name}**
**git checkout {branch_name}**
:::

## :point_right: Workflow - Create local repo and attach to git remote repo

:::warning
```
# Creating a new file README.md
     echo "# flask-intro" >> README.md

# Initializing git
     git init

# Adding README.md to staging area
     git add README.md

# Commit the changes
     git commit -m "first commit"

# by default the name of the initial branch is MASTER
# below command will renamefrom "master" to "main"
     git branch -M main

# Add the origin of remote repository
     git remote add origin https://github.com/ruppalur/flask-intro.git

# push the changes to remote respository
     git push -u origin main
```
:::

## :point_right: Workflow - Existing local repo and attach to git remote repo
:::warning
```
# Add the origin of remote repository
     git remote add origin https://github.com/ruppalur/flask-intro.git

# by default the name of the initial branch is MASTER
# below command will renamefrom "master" to "main"
     git branch -M main

# push the changes to remote respository
     git push -u origin main
```
:::


## :point_right: Workflow - Merging a branch to Master
:::warning
```
# Switch to the Master branch 
    git checkout master
    
# Git pull all the changes down to master to makes sure Master repo is updated
    git pull origin master
    
# Check if the existing branch is merged to master
# Below command will display all the branches which are merged
    git branch --merged
    
# Merge the branch with master 
    git merge {branch_name}
    
# Push the repo to remote origin
    git push origin master
```
:::

## :point_right: Flow diagrams
```sequence
Note left of Local Folder: LOCAL SYSTEM

Local Folder --> Stagging Repo : "git Add"
Local Folder --> Local Repo : "git commit "
Git Repo -> Local Repo: "PULL"
Local Repo -> Git Repo: "PUSH"  
Note right of Git Repo: Github 
```


## Reveiw 

- [ ] Review 1
- [ ] Review 2
- [ ] Review 3
- [ ] Review 4
- [ ] Review 5

## Disclaimer :thumbsup: 
:::info
This content is purely created for educational purpose for future referance and credits belongs to above acknowledged content creators  
:::