- Published on
Useful GIT commands
- Authors
- Name
- Alex Buaiscia
- @AlexBuaiscia
I'm creating this post for reminding myself about some useful git features... and updating it along the way.
-- Create new git local repository
git init
-- Normal way for committing and pushing
git add .
git commit -m "message"
git push origin master
-- Check status
git status
-- Create new branch
git checkout -b branchname
-- Switch between branches
git checkout branchname
-- Push branch to remote
git push origin branchname
-- Push local working branch to its correspondent on Github
git push origin HEAD
-- Merge branch into master
git checkout master
git merge branchname
-- How to remove file/dir from git after adding it to .gitignore
git rm --cached (file)
-- Command to check which files are ignored
git status --ignored
-- How to force revert to last status of master if pulled by mistake from remote depository
git reset --hard master@{time to revert back in minutes}
possibly losing last commit
git reset --hard a0d3fe6
reverting to last commit
-- How to force revert after a rebase
git reflog` ## check the HEAD{number} before the rebase starts
git reset --hard HEAD{number}
-- Wrong name branch? No problem: delete the one in GH, rename the local one and repush it
git push origin :old-name-of-branch-on-github
git branch -m old-name-of-branch-on-github new-name-for-branch-you-want
git push origin new-name-for-branch-you-want
-- Need to change the branch but have uncommitted, unstaged changes that can conflict with the other branch? Stash comes to help
git stash list
-- list all stashes
git stash
-- stash (saves all unstaged changes in a temporary state under the current commit name)
git stash apply
-- place back all the last stashed changes
git stash apply stash@{3}
-- place back all the changes stashed at the stash n.4 (counting from 0)
git stash drop stash@{3}
-- delete a particular stash
git stash clear
-- delete all stashes
-- Make a diff between two branches. In a situation, for example, in which I need to rebase, or check the changes between the two branches
git diff branch1..branch2
-- Rebase. You have new merged changes on the master branch and need to merge in a clean way those changes in your local branch. It will place in the local log all master commit logs as well. After rebase, push -f origin HEAD
Flow:
git checkout master
git pull origin master
git checkout localbranch
git rebase master
git push -f origin localbranch
-- Get remote branch locally
git fetch
git checkout remote-branch
-- _...Or the alternative way
git checkout -b remote-branch
git pull origin remote-branch
-- _Delete multiple branches in git
git branch | grep "<pattern>"
to preview the branches
git branch | grep "<pattern>" | xargs git branch -D
to actually delete them