Update From Dev To Main #1

Merged
radin merged 20 commits from dev into main 2026-03-13 10:35:06 +00:00
Showing only changes of commit 9cbf903552 - Show all commits

View File

@@ -1,215 +1,523 @@
# Git Commands Guide
# Git Commands Guide (DevOps-Oriented)
## 1. Installation and Setup
### Install Git
Download from [git-scm.com](https://git-scm.com/).
Download and install Git from:
[https://git-scm.com/](https://git-scm.com/)
Linux (Debian/Ubuntu):
```bash
sudo apt update && sudo apt install git -y
```
RHEL/CentOS:
```bash
sudo yum install git -y
```
macOS (Homebrew):
```bash
brew install git
```
### Verify Installation
```bash
git --version
```
### Configure User Info
Set your name and email for commits:
### Configure User Identity
Git uses this information for commits:
```bash
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
```
Check configuration:
```bash
git config --list
```
Configuration scopes:
* `--system`: All users
* `--global`: Current user
* `--local`: Repository only
---
## 2. SSH Key Configuration
Use a custom SSH key:
### Generate SSH Key
```bash
git config --add --local core.sshCommand 'ssh -i <PATH_TO_SSH_KEY>'
ssh-keygen -t ed25519 -C "your.email@example.com"
```
Clone with custom key:
Start SSH agent and add key:
```bash
git -c core.sshCommand="ssh -i <key-path>" clone host:repo
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
```
### Use Custom SSH Key (Per Repository)
```bash
git config --local core.sshCommand "ssh -i <PATH_TO_SSH_KEY>"
```
Clone with custom SSH key:
```bash
git -c core.sshCommand="ssh -i <key-path>" clone git@host:repo.git
```
---
## 3. Initialize Repository
Create a new Git repo:
Create a new Git repository:
```bash
git init -b main
```
- `-b main`: Sets default branch name to `main`.
Existing repository:
```bash
git init
```
---
## 4. Basic Workflow
### Stage and Commit
### Stage and Commit Changes
Stage all changes:
```bash
git add -A
```
Commit changes:
```bash
git commit -m "Initial Commit"
git commit -m "Initial commit"
```
### Connect to Remote
Link local repo to remote:
### Connect Local Repository to Remote
```bash
git remote add origin <Repo-Link>
git remote add origin <REPO_URL>
```
Verify:
```bash
git remote -v
```
### Push to Remote
First push:
```bash
git push origin main
git push -u origin main
```
Subsequent pushes:
```bash
git push
```
---
## 5. Repository Status and History
### Check Status
### Check Repository Status
```bash
git status
```
Shows staged, unstaged, and untracked files.
### View History
### View Commit History
```bash
git log
```
- `git log -p`: Shows diffs per commit.
- `git log -3`: Shows last 3 commits.
- `git log --graph`: Shows history as a graph.
- `git log --oneline`: Shows compact log.
### View Changes
Common options:
```bash
git log --oneline
git log --graph --oneline --all
git log -p
git log -3
```
### View File Changes
Unstaged changes:
```bash
git diff
```
Shows unstaged changes.
Staged changes:
```bash
git diff --staged
```
Shows staged changes.
Compare branches:
```bash
git diff main..dev
```
---
## 6. File Operations
### Stage Specific Files
```bash
git add <filename>
git add <file>
```
### Unstage Files
```bash
git reset <filename>
git reset <file>
```
### Discard Changes
### Discard Local Changes
```bash
git checkout -- <filename>
git checkout -- <file>
```
Restore using modern command:
```bash
git restore <file>
```
Reverts file to last committed state.
### Rename File
```bash
git mv <old-name> <new-name>
git mv old-name new-name
```
### Remove File
```bash
git rm <filename>
git rm <file>
```
Remove but keep locally:
```bash
git rm --cached <file>
```
---
## 7. Branch Management
### Create and Switch to Branch
### Create and Switch Branch
```bash
git checkout -b <branch-name>
```
Modern alternative:
```bash
git switch -c <branch-name>
```
### List Branches
```bash
git branch
```
List with details:
```bash
git branch -a
git branch -v
```
### Delete Branch
```bash
git branch -d <branch-name>
```
### Switch Branch
Force delete:
```bash
git checkout <branch-name>
git branch -D <branch-name>
```
## 8. Merging
### Rename Branch
```bash
git branch -m old-name new-name
```
---
## 8. Merging and Rebasing
### Merge Branch
```bash
git merge <branch-name>
```
**Merge Types:**
- **Fast-forward:** No conflicts; branch is ahead of target.
- **Three-way:** Conflicts possible; creates new merge commit.
Merge types:
* Fast-forward
* Three-way merge (creates merge commit)
### Rebase (Linear History)
```bash
git rebase main
```
Abort rebase:
```bash
git rebase --abort
```
Continue rebase:
```bash
git rebase --continue
```
---
## 9. Remote Operations
### List Remotes
```bash
git remote
```
### Show Remote Info
```bash
git remote -v
```
### Show Remote Details
```bash
git remote show origin
```
### Fetch Changes
```bash
git fetch
```
Get updates without merging.
```bash
git fetch
git fetch --all
```
Fetch from all remotes.
### Pull Changes
Fetch + merge:
```bash
git pull
```
Rebase instead of merge:
```bash
git pull --rebase
```
---
## 10. Commit Management
### Edit Last Commit Message
### Amend Last Commit
```bash
git commit --amend
```
### Show Commit Changes
### Show Commit Details
```bash
git show <commit-id>
```
### Revert Commit
```bash
git revert HEAD
```
Revert last commit.
### Revert Commit (Safe for Shared Branches)
```bash
git revert <commit-id>
```
Revert specific commit.
## 11. Miscellaneous
### Reset Commit (Use with Caution)
Soft reset:
```bash
git reset --soft HEAD~1
```
Mixed reset:
```bash
git reset HEAD~1
```
Hard reset:
```bash
git reset --hard HEAD~1
```
---
## 11. Stash (Temporary Changes)
Save work without committing:
```bash
git stash
```
List stashes:
```bash
git stash list
```
Apply stash:
```bash
git stash apply
```
Pop stash:
```bash
git stash pop
```
---
## 12. Tags (Releases)
Create tag:
```bash
git tag v1.0.0
```
Annotated tag:
```bash
git tag -a v1.0.0 -m "Release v1.0.0"
```
Push tags:
```bash
git push origin --tags
```
---
## 13. .gitignore
Create `.gitignore`:
```bash
touch .gitignore
```
Example:
```
.env
node_modules/
*.log
```
Apply after commit:
```bash
git rm -r --cached .
git add .
git commit -m "Apply gitignore"
```
---
## 14. Useful Configuration and Aliases
Change default editor:
### Change Default Editor
```bash
git config --global core.editor "vim"
```
### Clone Repository
Create aliases:
```bash
git clone <Repo-Link>
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.cm commit
git config --global alias.br branch
```
---
## 15. Troubleshooting and Recovery
Undo last commit but keep changes:
```bash
git reset --soft HEAD~1
```
Recover deleted branch:
```bash
git reflog
git checkout -b <branch-name> <commit-id>
```
Fix detached HEAD:
```bash
git checkout main
```
---
## 16. Clone Repository
Clone via SSH:
```bash
git clone git@github.com:user/repo.git
```
Clone specific branch:
```bash
git clone -b <branch> <repo-url>
```