107 lines
7.2 KiB
Plaintext
107 lines
7.2 KiB
Plaintext
|
|
Episode: 2664
|
||
|
|
Title: HPR2664: My git workflow
|
||
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr2664/hpr2664.mp3
|
||
|
|
Transcribed: 2025-10-19 07:10:09
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
This is HBR Episode 2664 entitled, My Git Workflow, and is part of the series Introduction to Git.
|
||
|
|
It is hosted by first-time host Yannick, and is about 8 minutes long, and carries a clean flag.
|
||
|
|
The summary is, in this episode I talk about the workflow I use to contribute to open source project using Git.
|
||
|
|
Today's show is licensed under a CC Zero License.
|
||
|
|
This episode of HBR is brought to you by an honesthost.com.
|
||
|
|
Get 15% discount on all shared hosting with the offer code HBR15. That's HBR15.
|
||
|
|
Better web hosting that's honest and fair at An Honesthost.com.
|
||
|
|
Hello, my name is Yannick, I'm also known in some parts of the internet as the French guy from Switzerland.
|
||
|
|
This is my first contribution to HBR.
|
||
|
|
Today I'm going to talk about my Git workflow, because I'm recording this on the 2nd of October, and it's the beginning of Hacktoberfest.
|
||
|
|
So I'm deep into creating pull requests and using Git, so I thought maybe it's the right time for my first contribution.
|
||
|
|
So how do I create this pull request and contribute to open source project using Git?
|
||
|
|
I'm going to use GitHub as an example, but I'm sure it will work the same on GitLab, for example, or a bit bucket or even self-hosted platforms.
|
||
|
|
So the first thing I will do is fork the project I want to work on.
|
||
|
|
So I will have a repository that is even with the original project.
|
||
|
|
I'm going to give names to those repositories.
|
||
|
|
I will call upstream the project to which I want to contribute.
|
||
|
|
And origin will be my fork of this project, so that will be my repository on GitHub.
|
||
|
|
Then I will clone my own repository on my local machine using the command git clone, and with then the URL of my repository and GitHub.
|
||
|
|
So that will give me my local repository.
|
||
|
|
And then I will reference the upstream project on my local repository using the command git remote add upstream, and then the URL of the original project.
|
||
|
|
So now on my machine, I have a local copy of the project which references my own fork on GitHub with the name origin and the original project with the name upstream.
|
||
|
|
Now on my workflow, I never ever work on the master branch on my local repository.
|
||
|
|
That way I can always come back to that if I want to have a reference, see what was there originally or start working on something else.
|
||
|
|
So I never work on the master branch.
|
||
|
|
So what I do is I create a specific branch for a feature or bug fix, for example.
|
||
|
|
So let's say we're going to fix a bug to the original project.
|
||
|
|
So I will create a branch using the command git checkout hyphen B and then the name of the branch.
|
||
|
|
So let's say it's called bug fix.
|
||
|
|
Then I can now start working on this project.
|
||
|
|
I can start modifying files, adding files, removing other files, etc.
|
||
|
|
And at some point I want to stage my modifications.
|
||
|
|
So I will use the command git add.
|
||
|
|
Usually I add everything that I've modified.
|
||
|
|
So I use git add dot.
|
||
|
|
So it takes everything and stage that or sometimes when I just want to stage some parts of my changes.
|
||
|
|
I can use git add and then the name of the file or the directory I want to stage.
|
||
|
|
But yeah, usually I use git add dot and add everything.
|
||
|
|
And then at some point I want to save that.
|
||
|
|
I want to commit all my changes.
|
||
|
|
So I will use the command git commit.
|
||
|
|
I will then add the commit message.
|
||
|
|
At this point I can make more changes.
|
||
|
|
So I will again use git add and then git commit to save those changes.
|
||
|
|
And when I'm happy with my changes when I've tested everything and I'm ready to contribute.
|
||
|
|
This fix to the original project.
|
||
|
|
I will push my local branch to branch on my own GitHub repository.
|
||
|
|
So I will use the command git push hyphen you origin bug fix.
|
||
|
|
So that origin is my repository on GitHub and bug fixes the name of the branch.
|
||
|
|
I want to push to which is also the name of the local my local branch.
|
||
|
|
This will create the branch on GitHub on my repository.
|
||
|
|
And since I have forked the original repository, the original project,
|
||
|
|
GitHub knows that my project and the other one are linked and gives me the opportunity
|
||
|
|
to create the pull request directly from my own repository with a click of a button.
|
||
|
|
So now all I have to do is fill the pull request command, submit that pull request
|
||
|
|
and wait for upstream to merge the pull request into their master branch.
|
||
|
|
And then when that is done, I need to sync everything back.
|
||
|
|
So I can continue working and I'm not lagging behind the original project.
|
||
|
|
So back on my original repository, I do a git checkout master.
|
||
|
|
So I am back on my master branch, which I didn't change.
|
||
|
|
So it's in the same state as it was when I forked the original project.
|
||
|
|
I then git fetch upstream to get all the changes on every branch from the original project.
|
||
|
|
Now, since I am on my master branch, I can merge all the changes from the original project.
|
||
|
|
So I use git merge upstream slash master.
|
||
|
|
Now my local repository, my master branch on my local repository is ahead of my master branch on GitHub.
|
||
|
|
So I need to push those changes and I use the command git push.
|
||
|
|
That will send the my master branch, my local master branch to GitHub on my repository.
|
||
|
|
I don't need the backfix branch that I created earlier to work on.
|
||
|
|
So I can delete that using git branch hyphen d backfix.
|
||
|
|
And I also want to delete this branch on GitHub because I don't need it anymore over there either.
|
||
|
|
So I do git push origin hyphen d backfix.
|
||
|
|
And now I have on my local machine a clone or a copy of my GitHub repository.
|
||
|
|
And they are both even at the same commit.
|
||
|
|
And it's also even with the upstream repository.
|
||
|
|
So I can now start again if I want to create some other backfix or some feature.
|
||
|
|
So to summarize, I do git checkout hyphen b my awesome feature.
|
||
|
|
git add dot git commit git push hyphen you origin my awesome feature.
|
||
|
|
I didn't create the pull request and wait for the pull request to be merged.
|
||
|
|
Then I come back to my local repository and I do git checkout master git fetch upstream git merge upstream slash master.
|
||
|
|
git branch git push git branch hyphen d my awesome feature git push origin hyphen d my awesome feature.
|
||
|
|
And that's my git workflow for for contributing to open source project.
|
||
|
|
I don't know if it's something that everybody does or if it's only me, but it's working for me.
|
||
|
|
So I just wanted to share it with the HPR community.
|
||
|
|
It's as I said, it's my first contribution and I thought it was a subject that could be interesting.
|
||
|
|
So any comments are welcome.
|
||
|
|
You can send a comment on the HPR website or send me an email.
|
||
|
|
You can join me at yannickatfrenchguy.ch.
|
||
|
|
Thanks for listening.
|
||
|
|
Bye bye.
|
||
|
|
You've been listening to HECCA Public Radio at HECCA Public Radio dot org.
|
||
|
|
We are a community podcast network that releases shows every weekday Monday through Friday.
|
||
|
|
Today's show, like all our shows, was contributed by an HPR listener like yourself.
|
||
|
|
If you ever thought of recording a podcast, then click on our contributing to find out how easy it really is.
|
||
|
|
HECCA Public Radio was founded by the digital dog pound and the Infonomicon Computer Club
|
||
|
|
and is part of the binary revolution at binrev.com.
|
||
|
|
If you have comments on today's show, please email the host directly.
|
||
|
|
Leave a comment on the website or record a follow-up episode yourself.
|
||
|
|
Unless otherwise status, today's show is released on the Creative Commons,
|
||
|
|
Attribution, ShareLite, free dot org license.
|