3.3 KiB
Git Cheat Sheet
Subtree Example
Add sub-project as remote
git remote add -f RemoteName RemoteUrl
Run git subtree
command
git subtree add --prefix Path/To/Put/Code NameOfRemote master --squash
Pull subtree as needed
git fetch NameOfRemote master
git subtree pull --prefix Path/To/Put/Code NameOfRemote master --squash
Reference
Create a branch without a parent
Very useful when you are updating a project that you are rewriting. For example, say you are using semantic versioning and are wanting to start a new major version.
git checkout --orphan BRANCH
Delete All Branches that have been merged
Great for cleaning up local branches that aren't being used any more.
git checkout master
git branch --merged | grep -v "\*" | xargs -n 1 git branch -d
Ignore changes to a file that is being tracked
Ignore
git update-index --assume-unchanged [directory|file]
Unignore
git update-index --no-assume-unchanged [directory|file]
How to ignore dirty submodules
Edit your .git/config
and add ignore = dirty
.
[submodule "path/to/submodule"]
path = path/to/submodule
url = git://github.com/username/repo.git
ignore = dirty
Clone a repo and give name other than origin
git clone -o upstream https://repo.git
Ignore Files for Repository without using .gitignore
Add the file .git/info/exclude
and fill it with the contents you want to ignore. This will ONLY apply to the
repository and will not be tracked by git.
Squash Commits
git log
Count the number of commits that you have made, let's say the previous 5 are your commits.
git rebase -i HEAD~5
The first commit leave as pick
the rest will need to be changed to squash
. After that you will be able to
leave a new commit message or just leave as is to keep the commit messages from all previous commits.
Search for a specific line of code/file in the history
git log -S[search term]
Example:
git log -SThatOneFile.php
Copy file from one branch to current branch
Copy a file from branch
and put into staging.
git checkout BRANCH path/to/file.ext
# Real Life Examples
git checkout origin/featureBranch web/js/random.js
# Pulls into your current branch web/js/random.js from
# origin/featureBranch
Git Grepping for fun and profit!
# Basic grep (case sensitive)
$ git grep 'search term'
# Case Insensitive search
$ git grep -i 'search term'
# Search within a directory
$ git grep 'search term' src/
# Search only files with `php` extension
$ git grep 'search term' -- '*.php'
# Grep in the 'src/` directory, only yml files
$ git grep 'search term' -- 'src/**.yml'
Push Branch to Remote Repository to a different branch name
git push origin localBranchName:remoteBranchName
Use Case: I will often use rebase, I will cut a branch off the branch I want to rebase and
do the rebase on the newly created branch. Once I am done, I will check the diff and see if
I screwed up. If it's all good, git push -f
NOTICE: DO NOT git push -f
unless you know
what you are doing.