Before development

1. Ensure that Git, Java JDK >= 1.8 are installed.
You can find information about development environment preparation here: Prepare development environment in Ubuntu.
2. Fork your copy from Checkstyle main project. As it is described here
3. Checkout the current source code from: https://github.com/you_user_name/checkstyle/
by running

git clone git@github.com:you_user_name/checkstyle.git
        
Attention for Windows users, command should be:
git config --global core.autocrlf true
git clone git@github.com:you_user_name/checkstyle.git
        

Starting Development

Here you can find instructions of importing and debugging the project for IDEs:
Eclipse IDE
NetBeans IDE
IntelliJ IDEA IDE

Follow these instructions of Git usage and creating a Pull Request:
1) Configure remotes:

git remote add main https://github.com/checkstyle/checkstyle
           
2) Create a branch for a new check:
git checkout -b my-new-check
           
3) Commit changes to my-new-check branch:
git add .
git commit -m "commit message"
           
4) Push branch to GitHub, to allow your mentor to review your code:
git push origin my-new-check
           
5) Repeat steps 3-4 till development is complete
All additional commits, please squash to first. Please read all rules for PullRequest at our wiki.
git rebase -i master
git push --force origin my-new-check
           
6) Update current branch and local master by pulling changes that were done
by other contributors:
git pull main master
git push origin master
           
7) Rebase your branch over your updated master
git rebase master
           
8) In the process of the rebase, it may discover conflicts.
In that case it will stop and allow you to fix the conflicts.
After fixing conflicts, use git add . to update the index with those contents,
and then just run:
git rebase --continue
           
9) Push branch to GitHub (with all your final changes and actual code of Checkstyle):
git push --force origin my-new-check
           
10) Only after all content is finished and testing is done - send a Pull Request