Your cart is currently empty!
Cloning Large Repos and Working with Shallow Clones
- Shallow Clone:
git clone --depth=1 <repo-url>
to download just the latest commit. - Unshallow: To fetch the rest of the history after shallow cloning, use
git fetch --unshallow
.
Fetch, Merge, and Pull
- Fetch updates without merging:
git fetch origin master
- Merge changes from
origin/master
into the current branch:git merge origin/master
- Pull changes (fetch + merge in one step):
git pull origin master
Commit Management
- Change the most recent commit message:
git commit --amend
- Push commits and tags to
origin
:git push origin master
git push origin master --tags
Inspecting and Resetting Files
- List tracked files:
git ls-files
- Unstage a file:
git reset HEAD <filename>
- Reset changes to a file:
git checkout <filename>
Logs and History
- Graphical commit log:
git log --graph --oneline --decorate --all
- Follow file history, including renames:
git log --follow <filename>
- See reflog (checkout, commit, pull history):
git reflog
Merging and Rebasing
- Merge a branch without fast-forwarding:
git merge branchname --no-ff
- Rebase a branch onto another:
git rebase master
- Abort or continue a rebase:
git rebase --abort
git rebase --continue
Stashing Changes
- Save changes to stash:
git stash save "message"
- Apply a specific stash:
git stash apply stash@{1}
- Stash both tracked and untracked files:
git stash -u
Tagging
- Create a simple tag:
git tag myTag
- Create an annotated tag:
git tag -a ver1.0
- Delete a tag:
git tag -d myTag
Cherry Picking
- Apply a specific commit from another branch:
git cherry-pick <commitID>
Branch Management
- Delete a branch:
git branch -d branchName
- Create a new branch from another branch:
git branch newBranch origin/otherBranch
- Set a branch to track another remote branch:
git branch --set-upstream-to=<remote/branch>
Dealing with Merge Conflicts
After a conflict arises, resolve it by editing files, staging the changes, and committing the merge: