Github

Title Code
Command
1st create a folder for git on pc
Basic configration...

$ git init	create .git file 
$ git --version
$ git config --global user.name "Aslam"
$ git config --global user.email "aslam@gmail.com"
$ git config --list
clear

Each of every project user & email
$ git config user.name "aslam"
$ git config user.email "aslam@gmail.com"


upload file...
$ git status
$ git add file.txt	[save this file]
$ git add --all	 or
$ git add .
$ git commit -m "message"
$ git remote add origin https...
$ git push -u origin master 

download file...
git status
git log
first create a folder...
git clone https link...

update.....
git status
git add .
git commit -m "message"
git log
git pull	
git push	[upload to master branch]

log 	[list of commit]
$ git log
$ git log --oneline

download from branch
create a branch first in git hub...

git clone https link...  -b branchName
branchName= about, help, contact etc
command2
switch go any repository or branch
git checkout  a1b2c3

How to switch back to 'master' with git?

git stash or git commit -m "abcd"
git checkout master
git branch -D merchantApi

Note: Above steps will delete the branch locally.

For deleting the branch you have to stash
 the changes made on the branch 
or you need to commit the changes
 you made on the branch. 
Follow the below steps if you made
 any changes in the current branch.
Github delete last commit
2nd commit : 2020
1st commit : 1010
---------------------
git reset --hard 1010
git push --force
Git check user
Local check
git config user.name
git config user.email
-----------------------
Global check
git config --global user.name
git config --global user.email
-----------------------
Change local
git config user.name "gitHub-UserName"
git config user.email "gitHub-email"
-----------------------
Change global
git config --global user.name "gitHub-UserName"
git config --global user.email "gitHub-email"
git info
github set project url
	->git remote set-url origin [repository link]
	
	example: https://github.com/aslamcsebd/project.git

github show project url
	->git remote show origin

https://mhagemann.medium.com/how-to-fix-ssh-permission-denied-with-git-clone-f669b65f90ac
Rename last commit
git commit --amend -m "New commit message"
git move other commit
git fetch origin [commit no]
git checkout FETCH_HEAD
Undo Git Pull
git reset commitNumber --hard
Git Uncommit
git reset --soft HEAD~1
git project url change
git remote set-url origin https://github.com/projectName.git
git push -u origin main
git branch
create branch
=> git branch anyName

edit branch
You edit branch which branch you stay
=> git branch -m newName

delete branch
You don't delete this branch which branch you stay now.
=> git branch -d branchName

Switch any branch
=> git checkout branchName

branch status see
=> git branch

->dev
->*main

[(* icon) means you are now stay main branch]


N:B: You are now [main branch] and you have 3 commit. when you create [dev branch] the main branch's all commit copy from main to dev branch.
So you should work now dev branch and when you have 5 commit you can merger the main branch.

But if you want to dev branch merge, you stay now main branch and pull/copy code from dev branch.

=> git merge dev


git merge: if you are now main branch with no code or commit, but want to merge/copy from another/dev branch.

In locally pc
-------------
git merge origin dev --allow-unrelated-histories


from server/cloud
-----------------
git pull origin masterOrDev --allow-unrelated-histories


N:B: if you want default main branch to dev, it working in the github server. There are many option to rename, default any branch as root/main branch.
How to reset your Git Settings
git config --global --unset user.name
git config --global --unset user.email
git config --global --unset credential.helper
cmdkey /delete:LegacyGeneric:target=git:https://github.com
git config --global user.name “username”
git config --global user.email emailaddr
git config  credential.helper ‘store’
git remote add origin repolink
git remote -v
git init 
git add .   (Stage)
git commit -m “message”  (Commit)
git push origin master  (Push)


https://www.youtube.com/watch?v=HGfT8JFkC2I
git reset last work and move last commit
git reset --hard
ssh key create
open terminal root folder
open .ssh folder or create
cmd: ssh-keygen -o -t rsa -C githubEmail
see: ls
cmd: open id_rsa.pub

copy then add : https://github.com/settings/keys

also use: ssh-keygen -t ed25519 -C "your_email@example.com"
for small key
Git info print
use Illuminate\Support\Facades\Log;

public function gitInfo()
{
    $branch = trim(shell_exec('git rev-parse --abbrev-ref HEAD'));
    $commitHash = trim(shell_exec('git rev-parse HEAD'));
    $commitMessage = trim(shell_exec('git log -1 --pretty=%B'));

    return response()->json([
        'branch' => $branch,
        'commit_hash' => $commitHash,
        'commit_message' => $commitMessage,
    ]);
}
Ignore .env file
git rm --cached .env
git commit -m "Stop tracking .env"
git push
Password save for pull
Generate SSH Key (if you haven’t already):
ssh-keygen -t ed25519 -C "your_email@example.com"

Add the SSH key to your SSH agent:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Copy your public SSH key to clipboard:
cat ~/.ssh/id_ed25519.pub

Add the key to GitHub/GitLab/Bitbucket:
GitHub: https://github.com/settings/keys
GitLab: https://gitlab.com/-/profile/keys

Change your Git remote to use SSH:
git remote set-url origin git@github.com:username/repo.git

If you must use HTTPS, store your credentials using a credential manager.
git config --global credential.helper store
git config --global credential.helper cache

check if tou want
git config --global credential.helper
One github project send another account
My goal:
Push an existing Git project (committed as user1)
To a new GitHub account (user2)
But show commit history as if it was from user2 instead of user1

And right now GitHub is denying access, because the commits are still under user1 and Git is trying to push using that account.

Keep commit history but change author info to supremeGlobal

# Step into your project
cd /var/www/html/supreme

# Rewrite all commits to a new author
git filter-branch --env-filter '
OLD_EMAIL="old@example.com"
CORRECT_NAME="supremeGlobal"
CORRECT_EMAIL="supremeglobalbd@gmail.com"

if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags


Replace OLD_EMAIL with your actual old email (from git log)

git log
Author: user2 <user2@gmail.com>

git remote remove origin
git remote add origin https://user2:your_classic_token@github.com/supremeGlobal/supreme.git
git push -u origin main --force
Remove git commit user name
old user email: abc@gmail.com
new user name: xyz
new user email: xyz@gmail.com 
=========================
git filter-branch --env-filter '
OLD_EMAIL="abc@gmail.com"
CORRECT_NAME="xyx"
CORRECT_EMAIL="xyz@adroetech.com"

if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

git push origin --force --all
git push origin --force --tags
Copy 1 commit one brance to another branch
If i want copy 1 commit

Example situation
Branch A → you did some small work and committed.
Branch B → main branch where you want to apply that specific commit.

✅ Steps

Go to the target branch (where you want to apply it):

git checkout B


Find the commit hash from your first branch:

git log A


Copy the commit hash (e.g. abc1234).

Apply (cherry-pick) that commit:

git cherry-pick abc1234


Git will apply the exact same changes from that commit into branch B.
If conflicts appear, fix them and then:

git add .
git cherry-pick --continue


If i want copy many commit
If you want to move several commits (continuous range):

git cherry-pick commit1_hash^..commit2_hash

⚠️ Note

This creates new commits in the target branch with the same changes, not merges.

It’s perfect when you don’t want to merge all updates from branch A — just one or two commits.



https://chatgpt.com/c/68f617d2-060c-8322-9027-7905ff616222