The easiest way to integrate the branches, as we’ve already covered, is the merge
command. It performs a three-way merge between the two latest branch snapshots and the most recent common ancestor of the two , creating a new snapshot (and commit).
However, there is another way: you can take the patch of the change that was introduced on one branch and reapply it on top of another branch. In Git, this is called rebasing. With the rebase command, you can take all the changes that were committed on one branch and replay them on a different branch.
In the blog, I continued working on my repo, a static site generator (SSG) writing with Python. It started with working on a new branch git checkout -b refactoring
, and the goal is to improve the structure and maintainability of the code without altering its behaviour. The main funtionality of this SSG has already been encapsulated in a class Generator
, and this class was called in the main()
function. Therefore, I was trying to polish the code with variables rename, making code style consistent and rewriting the support of config
file functionality, which was wrote by other contributors.
The original support of config
file functionality was achieved by using json
parser. However, there are several packages published to support the command line config file. Here, the click_config_file
module was used to support configuration file. In this way, the main()
function was simlified a lot by replacing the json parser and reading json file line by line code part with a single function decorator (function annotation).
Moreover, the code style was improved on several places. For instance, inp != None
was changed to inp is not None
and several indentations were fixed.
Finally, an example config
file was added.
Now, with several commits, we can use the terminal command git rebase main -i
. This open an interactive window. Then, we can squash
all commits into the first one. Additionaly, if there is a need, use git --amend
to edit commit message.
Eventually, merge to main use:
git checkout main
git merge refactoring
git push origin main
The combined commit can be found here.
Top comments (0)