If you wish to contribute to Taskwarrior, you should:
- create a fork on GitHub
- clone your fork to your machine
- For ssh:
git clone [email protected]:<YOUR GITHUB USERNAME>/taskwarrior.git
- For https:
git clone https://github.com/<YOUR GITHUB USERNAME>/taskwarrior.git
- add a new remote repo to track
- this means you can push/pull as normal to your own repo, but also easily track & update from the Taskwarrior repo
- for ssh:
git remote add upstream [email protected]:helmecke/taskwarrior.git
- for https:
git remote add upstream https://github.com/helmecke/taskwarrior.git
- any time you create a branch to do some work, use
$ git fetch upstream && git checkout -b dev-myFEAT upstream/main
- only use the --rebase flag to update your dev branch
- this means that there are no
Merge taskwarrior/main into devBranch
commits, which are to be avoided
$ git pull upstream --rebase
- this means that there are no
-
When making a PR (pull request), please be very descriptive about what you've done!
-
PR titles should be formatted with 'fix', 'chore' or 'feat'. ex:
feat: add undo command
-
PRs should follow the pull request formats where applicable
-
We are open to all PRs, but may decline some for a myriad of reasons. Though don't be discouraged! We'll still be open to discussions.
You may have been directed here to remove a commit such as a merge commit:
Merge taskwarrior/main into devBranch
from your PR
As these commands edit your git history, you may need to force push with
git push origin --force
- Run the following:
$ git rebase -i HEAD~<NUMBER OF COMMITS TO GO BACK>
Example
$ git rebase -i HEAD~4
pick 28b2dcb statusline add lsp status
pick dad9a39 feat: Added lsp radial progress
pick 68f72f1 add clickable btn for exiting nvim
pick b281b53 avoid using q! for quitting vim
# Rebase 52b655b..b281b53 onto 52b655b (4 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# . create a merge commit using the original merge commit's
# . message (or the oneline, if no original merge commit was
# . specified). Use -c <commit> to reword the commit message.
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
- Change the
pick
commands to whatever you wish, you may wish tod
drop
ore
edit
a commit. Then save & quit this git file to run it.
Example
pick 28b2dcb statusline add lsp status
pick dad9a39 feat: Added lsp radial progress
edit 68f72f1 add clickable btn for exiting nvim
d b281b53 avoid using q! for quitting vim
# Rebase 52b655b..b281b53 onto 52b655b (4 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# . create a merge commit using the original merge commit's
# . message (or the oneline, if no original merge commit was
# . specified). Use -c <commit> to reword the commit message.
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
- If you picked
drop
you are done, if you pickededit
then edit your files, then run:
$ git add <files>
- Once you have edited & added your files, run:
$ git rebase --continue
- You will likely need to push using:
$ git push origin --force