Add rebasing instructions to CONTRIBUTING.md (#17256)

This commit is contained in:
Maxim Ivanov 2020-07-17 09:49:37 +03:00 committed by GitHub
parent 320c001c4c
commit 3381edae96
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 58 additions and 5 deletions

View File

@ -17,15 +17,68 @@ try to keep the codebase consistent and clean.
## Getting Started
* Make sure you have a GitHub account.
* Make sure you have a GitHub account and solid ability to use `git`.
* Fork the repository on GitHub.
* Create a topic branch from master. Please avoid working directly on the ```master``` branch.
* Create a topic branch from master. Please avoid working directly on the `master` branch.
* Make commits of logical units.
* Check for coding style issues with ```git diff master..mybranch | ./sys/clang-format-diff.py -p1``` and be sure to follow the CODINGSTYLE (more on this in [DEVELOPERS.md](https://github.com/radareorg/radare2/blob/master/DEVELOPERS.md)).
* Check for coding style issues with:
git diff master..mybranch | ./sys/clang-format-diff.py -p1
and be sure to follow the CODINGSTYLE (more on this in [DEVELOPERS.md][]).
* Submit the Pull Request(PR) on Github.
* When relevant, write a test in [test/](test).
## Rebasing onto updated master
Every so often, your PR will lag behind `master` and get conflicts.
To "update" your branch `my-awesome-feature`, you *rebase* it onto
the latest `radareorg/master`, and *force-push* the result into your fork.
#### Step 1: Switch to `master` branch.
$ git checkout master
#### Step 2: Pull new commits published to radareorg repo.
$ git pull https://github.com/radareorg/radare2
#### Step 3: Switch back to `my-awesome-feature` branch.
$ git checkout my-awesome-feature
#### Step 4: Rebase the `my-awesome-feature` branch.
$ git rebase master
Optionally, use the alternative mode "interactive rebase". It allows
to `squash` your commits all into one, reorder, reword them, etc.
$ git rebase -i master
Follow git instructions when conflicts arise.
#### Step 5: publish your updated local branch.
$ git push -f
This `-f` *force-flag* is needed because git commits are immutable: rebasing
creates newer versions of them. git needs to confirm the destruction of
previous incarnations.
When afraid to touch force and risk losing your work (do backups!..),
try *merging master into your branch* instead of rebasing onto it.
This is discouraged, as it produces ugly hard-to-maintain commit history.
# Additional resources
* [README.md](https://github.com/radareorg/radare2/blob/master/README.md)
* [DEVELOPERS.md](https://github.com/radareorg/radare2/blob/master/DEVELOPERS.md)
* [README.md][]
* [DEVELOPERS.md][]
[README.md]: https://github.com/radareorg/radare2/blob/master/README.md
[DEVELOPERS.md]: https://github.com/radareorg/radare2/blob/master/DEVELOPERS.md
If you need more confidence in your git skills, check out this quick guide:
<https://learnxinyminutes.com/docs/git/>