This is an old revision of the document!
GIT
CHECK OUT REMOTE BRANCH
git switch --track origin/branch-name // 1. Creates a new local branch called branch-name // 2. Set its upstream to origin/branch-name (the remote branch) // 3. Move your working directory to that branch
DELETE REMOTE BRANCH
Your local Git keeps a list of remote branches under remote/origin/*, you can see it with:
git branch -a git fetch -p # Remove any stale references from your local list that no longer exist remotely
Delete remote branch:
git push origin --delete <branch-name>
ACCIDENTALLY COMITED ON MASTER
If changes were accidentally committed on master and we want to move them to a new branch:
git switch -c new-branch // Creates a new branch and switches to it. git checkout master // Go back to master # Cleaning master - Option 1 git reset --hard origin/master # This will delete the commit from master, # but it still exists on new branch # Resets to match the remote branch exactly. # Used to discard all local commits since last fetch/pull # Cleaning master - Option 2 git reset --hard HEAD~1 # Moves one commit back in local history. # Used to undo the last local commit (or a few with HEAD~2) # Bonus - local history in compact form git log --oneline master
SQUASH
Scenario - you would like to “squash” several commits in your branch before submitting the merge request, so that all your changes look like a single commit.
Step 1 - Find the base commit where your branch diverged from main
git merge-base master HEAD
Step 2 - Start interactive rebase from that commit:
git rebase -i abc123
Step 3 - In editor which will open, change all but the first pick to squash or just s:
pick abc123 My first commit squash def456 My second commit squash ghi789 My third commit
Step 4 - Editor will open again for a commit message. Edit as you wish.
Step 5 - Push with force:
git push --force
Step 6 - When trying to pull after these changes, you might need to rebase:
git config pull.rebase true git pull
