After I published an open source project which creates a static site generator(SSG), my second lab assignment was adding new features and making a Pull Request with my partner's same project. My partner, Anatoliy, also created a SSG in JavaScript and his way to convert text file(s) to HTML file(s) was organized and clear.
- Anatoliy's Project on GitHub: https://github.com/aserputov/qck-ssg-final
- My Project on GitHub: https://github.com/MizuhoOkimoto/pajama-ssg
New features
There are 2 required features.
- Modify the file handling so that it supports both .txt files as well as .md, and parse one aspect of Markdown into HTML.
- Implement one of the Markdown syntax features for Italics, Bold, Heading1.
First of all, I used Fork on his GitHub repository, and cloned to my GitHub repository. Then, I cloned it to my local computer, and created a new branch for my work with this command git checkout -b issue-5
.
Initial Thoughts
Last week, when I tested and reviewed his project, I thought I understood his way and the code structure. However, when I started trying to implement the new features, I hit a wall. I had to ask him to explain his way and he sent me some videos to explain!(It was at 2am! Thank you, my sweet friend😭)
I communicated with him and I finally implemented the new features by adding some functions for reading .md file, and used replace methods to replace to markdown. Unfortunately, I had another problem. I installed Prettier on my local machine globally, so when I type **
to make the line bold, it became -
or \*
, so I couldn't test the implementations.
Making a Pull Request
After I finished the implementations, I made a pull request on my fork repository.
On my terminal, I changed the branch to issue-5, added the JavaScript file and updated README.md, committed, and pushed to the issue-5.
I posted a comment what I implemented with a sample on GitHub, and asked him to review and merge it.
Receiving a Pull Request
I received a pull request from Anatoliy, and I found a problem. After he Fork my repository, I updated my project, so there were some conflicts. I was afraid I would lose my updates when I merged his code, so I asked my professor and he worked me through how to merge.
How I merged and rebased
First, I cloned my project's repository on my local computer, and checked with git status
. It showed Your branch is up to date with 'origin/main'
. Then, viewing git remote configurations($git remote
), and added Anatoliy's repository and named it anatoliy
($git remote add anatoliy https://github.com/aserputov/pajama-ssg.git
). After I added his repository, I checked remote configuration again, it showed anatoliy
origin
. So I downloaded the commits, files, and refs from a remote repository into my local repo($git fetch anatoliy
), and checked the past commits.
Then, I went back to my main branch($git checkout main
), and merged issue-5($git merge issue-5
).
I had some unmerged files, so I opened a pull request and filed changes on GitHub, so I could check what I should or shouldn't merge. For Example: $ git rm .\.DS_Store
and $git add README.md
After I committed it ($git commit
without message), I checked with $git log
, and I could see that I finally merged everything.
Closing a Pull Request
My professor taught me how to send a request change based on the pull request. First, inside the pull request page, I clicked the "View changes" button, checked the changes, then made a Review changes and submitted.
Conclusion:
I didn't like Git before, because it's complicated and I always get a bunch of error messages. However, after I watched my professor's lectures and through this assignment, I'm getting to like it. I feel like Git is magic💥 It was great to collaborate with my partner and get support from my professor.
I still have some issues to improve my project, so I will update it soon 👍
Top comments (12)
You can choose merge on github then use git stash command and pull from remote repository then git stash pop is fluent then your approach. Consider you have 5 collegue and they pushed so many commits. Manual operation is a bit pain in this scenario
Hi Tuğrul! Thank you for your comment and advice! I didn't know about git stash command 👀 Sounds tough if many people push many commits... I will try to use the command next time!
Hi Mizuho. You're welcome. Git is powerful and it has more tools in their toolbox. So interactive rebase is another good feature. You can edit entire history of commits but there is a vital point while making changes on. Commit history should not propagated your coworkers or you have to make plan and sync commit history all together with your coworkers
Git is very interesting, but I'm still afraid of working on it with other people. I hope I can be a git manster😆 Thank you for the informative information!
Thx for this! This is really what I wanted. Helped A LOT.
Can I translate in Korean this post? If you don't mind, I wanna share this awesome post in Korean. Surely, There will be a link directing to this original post.
Hello Se-ok! Thank you for saying so! I'm so happy if it would be helpful. I'm a still beginner at open-source and git, but I don't mind you sharing it 😍
Good going 👏
Thank you, Sanjeev😊 I like your JavaScript tutorial blog!
Always cool to see new devs getting excited about open source! You should check out Hacktoberfest in a few days.
Hi Zach! I was lost about what to do before but I'm pretty excited about open source now! My goal for the next four weeks is to sign up for the Hacktoberfest and actually make pull requests and get approved, so I'll post about it here again 😉
great
Thank you so much😃