When working on the library one should be working on a feature branch, and submit merge requests to move one's code onto the master branch.
Periodically the master branch will evolve and improve before a feature branch, and the feature branch should updated with changes in the master to test that this code works well together before a merge request is submitted.
There are multiple ways to move code updates from a master to a feature, but I'm going to describe the method that works for me. As an example, suppose one is working on the branch rohloff-obf, and there have been improvements to the master branch.
Generally one can rebase by doing the following:
Pull the latest code from both the rohloff-obf and master branches with the following commands:
git checkout master
git pull origin master
git checkout rohloff-obf
git pull origin rohloff-obf
Make sure both of branches build properly before going any further. Correct any bugs on the feature branch and commit that branch. Also check the mast branch and notify Kurt or Yuriy if there is an error in the master branch.
Run the following rebase operation:
git rebase master rohloff-obf
The changes are rebased into the feature branch one-by-one. Often there are conflicts. Suppose there is a conflict in binint.h. In this example, manually inspect binint.h and remove the conflict. When you are done working on the conflict, you would add the file back to the branch as follows:
git add src/math/cpu_int/binint.h
git commit -am "resolved conflict in binint.h"
As you resolve conflicts, continue the rebase:
git rebase --continue
Repeat the process of conflict resolution and continuing until the rebase is finished. Then build one final time as a sanity check, commit code, and push to the feature branch: