# GIT README Shortcuts to recurrent Git commands ## Sync remote fork ```bash git fetch public git checkout master git merge public/master ``` List branch remote git branch -vv Checkout from a remote branch git co -b upstream/master Push to a remote upstream branch git push : eg: git push upstream foo:master Read more [here](https://help.github.com/articles/syncing-a-fork/). ## Pull options git config pull.rebase false # merge (the default strategy) git config pull.rebase true # rebase git config pull.ff only # fast-forward only ## Subtree The `tests` directory is a Git subtree created with the following commands: git remote add tests git@github.com:nextflow-io/tests.git git subtree add --squash --prefix=tests/ tests integration To pull changes from the [tests repo](https://github.com/nextflow-io/tests) use this command: git subtree pull --squash --prefix=tests/ tests integration To push changes to the [tests repo](https://github.com/nextflow-io/tests) use this command: git subtree push --prefix=tests/ tests integration Read more [here](https://andrey.nering.com.br/2016/git-submodules-vs-subtrees/). ## Stash shortcuts git stash list git stash pop git stash pop stash@{1} git showtool stash@{0} git stash drop git stash drop stash@{1} git stash clear git diff stash git diff stash@{1} [other] ## Misc Find a commit in any branch introducing a change git log -S --source --all Reset last merge pushed git reset --hard HEAD@{1} Read more https://stackoverflow.com/a/11722640/395921 ## GPG keys To sign Git commits with a GPG key on Mac use [GPG Suite](https://gpgtools.org/), import your key, then: git config --global gpg.program /usr/local/MacGPG2/bin/gpg2 git config --global user.signingkey git config --global commit.gpgsign true git config --global format.signoff true ## TO AVOID TO SPECIFY -S option each time Read more: https://gist.github.com/danieleggert/b029d44d4a54b328c0bac65d46ba4c65 ## Change Git history root https://stackoverflow.com/questions/4515580/how-do-i-remove-the-old-history-from-a-git-repository # Pull master while in a another branch git fetch origin master:master # Alternative to `git pull` Use `git fetch && git rebase`