Git
Git command reference.
Upload all files in a local directory to a new Git repository
If you have a project on your computer and you just created an empty Git repository in GitHub, use these commands to upload everything to Git.
cd your-directory
git init
git remote add origin git@github.com:your-username/your-repo.git
git add .
git commit -am "Message"
git push -u origin masterDownload all files from Git repository to a local directory
The opposite of the above option - for example, if your repository exists in GitHub, and you're working on it in a different local computer. Run this command outside of where you want the new directory to appear (not within the directory you want it to appear).
git clone git@github.com:your-username/your-repo.git # using SSH
git clone https://github.com/your-username/your-repo.git # using HTTPSRemove one file from Git cache
Remove one cached file.
git rm -r —-cached file.txtOverride entire local directory
If you have some merge conflicts, or accidentally started to make a change to your local directory before pulling the changes from the master, here's how you can revert your local directory to what's on GitHub.
git fetch --all
git reset --hard origin/masterIgnore a directory
If you've been tracking a directory and later decide to ignore the whole directory, simply adding it to .gitignore isn't enough. First you must add the directory to .gitignore, then run this command:
git rm -r --cached your-directoryThen push the changes.
Add .gitignore to an existing repository
Similar to above, but if you've added a .gitignore with a lot of changes.
git rm -r --cached .
git add .
git commit -m "Message"Force a push or pull
When you really want your local repository to override the remote.
git push -f origin master
git pull -f origin masterMerging changes from remote pull request with conflicts
Make a new branch with their changes.
git checkout -b their-branch master
git pull their.git masterPlay with the files and commit them.
git add files
git commit -m “Message"
git push origin masterMerge back into your branch.
git checkout master
git merge --no-ff <their-branch) (:wq!)
git push origin masterRemove branch
Put a : in front to remove instead of update remotely.
git push origin :branch-nameUse --delete or -D for local.
git branch --delete branch-name
Replace master with contents of another branch
git checkout branch-name
git merge -s ours master
git checkout master
git merge branch-nameRemove all local branches except master
git branch | grep -v "master" | xargs git branch -DMore than one branch may be added to the grep. To remove all local branches except "master" and "develop":
git branch | grep -v "master\|develop" | xargs git branch -DAllow empty commit
Fix the problem of git hooks claiming everything is "Up-to-date".
git push production master
git commit --allow-empty -m 'push to execute post-receive'
git push production masterMerge new-feature branch into master
Merge branches.
git checkout master
git pull origin master
git merge new-feature
git push origin masterSwitch to branch that exists on origin
git fetch --prune --all
git checkout other-branchFetch branch from origin
git fetch origin
git checkout --track origin/<remote_branch_name>Accept all incoming changes
git pull -XtheirsRebase from develop
git fetch --prune --all
git rebase origin/develop
git pull
git pushStashing
Put your changes away and switch to another branch
git stash
git checkout -b new-branch
git stash popAccidentally committed to develop and want to move that commit to a branch
git branch new-branch
git reset HEAD~1
git checkout <files>GitHub pages to non-docs folder
"dist" or whatever you want.
git subtree push --prefix dist origin gh-pagesSubtree within repo
git subtree add --prefix <local-dir> https://github.com/taniarascia/<repo> master --squash
git subtree pull --prefix <local-dir> https://github.com/taniarascia/<repo> master --squash
git subtree push --prefix <local-dir> https://github.com/taniarascia/<repo> master --squashExiting VIM
For those new to command line, ending up at the commit message screen (often when you forget to the add -m flag to a commit) is confusing because pressing escape (or CTRL + C) does not exit the screen, as the default editor for Git is VIM. Instead, press escape (if you've started attempting to type something) and type the following command:
:qAnd press enter, and you'll return to where you were.