Useful git commmands
Now that I've started adding useful commit messages it's really use to make sense of my commits, more so when you use single line mode.
$ git log --oneline 3b04513 doc: add 'comment' tag to explain purpose of new templates 86cc454 feat: add tags to search 7286f90 feat: add twitter share button 24cfc85 feat: add todo 20d28d7 chore: remove manually generated lunr index ...
Started working on a feature/fix, but forgot you we're in master?
This assumes you haven't committed your changes...
git checkout -b new_branch # add and commit your changes git checkout master # clean up any files you don't want to commit...
Sync your repo with the upstream
Setup a remote to the upstream.
git remote add upstream <path/to/upstream> # e.g. https://github.com/cobalt-org/liquid-rust.git
git fetch upstream # gets branches and commits from upstream git checkout master # switch to your fork’s master branch (if you're not already there) git merge upstream/master # sync git push -u origin master # update remote repo of your fork
This can also be used to push your GitHub repos to other hosted SCM providers i.e. GitLab and BitBucket
You want to add repo
Bar to your own repo
git submodule add https://path/to/bar
To pull the changes in
git submodule init
To do this at clone time
git clone --recursive https://repo/contain/submodules
To refresh the submodule (assuming the dir name is the same as the submodule)
git submodule update --remote submodule_name
Possible gotcha if you refresh your submodule, you will need to commit new version into your own repo.
N.B. Tags when push to GitHub become releases!
git tag v1.0.0
to see what tag we're on
git push --tags
git fetch --tags
Fixing "fatal: refusing to merge unrelated histories"
Warning: this is destructive, if you've got local uncommitted changes do not proceed!
$ git pull origin master From github.com:booyaa/broken_repo * branch master -> FETCH_HEAD fatal: refusing to merge unrelated histories $ git fetch # may be superflurous $ git reset --hard origin/master $ git branch --set-upstream-to=origin/master master Branch master set up to track remote branch master from origin.
Updating a branch with new changes from master
git checkout out_of_date_branch git merge origin/master git push origin out_of_date_branch