Clone existing repo
git clone https://<path>Align remote changes
git fetchAlign remote changes inside local repo
git pullMerge a remote repo inside your local
git checkout <local>
git pull origin <remote>Create new branch
# Create a new branch starting from the current code
git checkout -b <new_branch_name>
# Create a new branch given a SHA
git checkout -b <branch> <sha>Check status
git statusCreate new branch
git checkout -b <new_branch_name>Push new branch
git push -u origin <new_branch_name>Commit changes
git commit -m "change name"List git branches that contain a given commit
If you need to know which are the branches that contains a certain commit, git is your friend
# local branches
git branch --contains <commit_hash>
# remote branches
git branch -a --contains <commit_hash>Save git credential locally
# your credential will be stored ~/.git-credential after the first push
git config credential.helper store
git push
# unset saved credential
git config --global --unset credential.helper
# open the git-credentials file located in the home of the current user and delete the proper entry
user@localhost:~$ vim /home/user/.git-credentialsCheck the attached remote repo
git remote -v
# origin https://<path>/<repo>.git (fetch)
# origin https://<path>/<repo>.git (push)
# #####
# change repo remote url
git remote set-url origin https://<address>.gitRemove git ssl check
# not recommended
git config --global http.sslVerify falseDelete branch local repo
git branch -d <branch_name>
# force delete
git branch -D <branch_name>Delete all local branches except branch name
git branch | grep -v <branch_name>| xargs git branch -dDelete all local branches already merged in master
git branch --merged master --no-color | grep -v master | grep -v stable | xargs git branch -dDelete remote branch
git branch -D <branch_name>
# remote_origin is origin if is in the root
# remote_name most of the times is equal to branch_name
git push <remote_origin> --delete <remote_name>Rename branch
git checkout <old_branch>
git branch -m <new_branch>
# push the new branch remotely
git push -u origin <new_branch>
# delete the old branch remotely
git push --delete origin <old_branch>Revert last commit
# reset last commit
git reset HEAD~1
# reset and discard files
git reset --hard HEAD~1
# if it is already pushed on origin
git push -f <origin> <remote_branch_name>Git show
Useful command when git does not resolve automatically conflicts between files or git does not understand properly the conflict (for example someone has formatted badly the entire file)
# create the merged file
user@localhost: git show :1:./Filename.ext > ./Filename.MERGED.java
# create the local version of the file (mine)
user@localhost: git show :2:./Filename.ext > ./Filename.LOCAL.java
# create the remote version of the file (theirs)
user@localhost: git show :3:./Filename.ext > ./Filename.REMOTE.javaGit show useful script
#!/bin/bash
if [ -z "$1" ]; then
echo "Param is empty"
exit
fi
if [ -z "$2" ]; then
`git show :2:./$1 > ./$1.LOCAL`
`git show :3:./$1 > ./$1.REMOTE`
else
`git show :2:./$1 > ./$1.LOCAL.$2`
`git show :3:./$1 > ./$1.REMOTE.$2`
fi
# add the alias git-show if you like in the .bashrc file
# alias git-show='sh ~/<path>/git-show.sh'To see differences without creating a file it’s possibile to use “git mergetool” command and select your favourite editor (ex: meld)
Cleanup the local references to remote branch
git remote prune originShow only modified lines
git diff --unified=0Push local branch from repo A to repo B
# repoA == origin
# repoB == origin2
git remote add origin2 https://user@github.com/example/new_repo.git
# check results
git remote -v
git push origin2 local_branch:new_repo_branch
Git reflog
git reflog shows a log of all the recent movements of HEAD in your repository.
Every commit, checkout, reset, merge, rebase, etc. It’s your safety net that tracks where HEAD has been, even for commits that aren’t currently reachable through any branch, making it possible to recover “lost” work from operations like hard resets or deleted branches.
git reflogInterested in Git cherry pic ?
Interested in Git merge branch excluding a file ?
0 Comments