Locked learning resources

Join us and get access to thousands of tutorials and a community of expert Pythonistas.

Unlock This Lesson

Locked learning resources

This lesson is for members only. Join us and get access to thousands of tutorials and a community of expert Pythonistas.

Unlock This Lesson

An Example Git Development Workflow

This lesson is a summary of everything you have learned in this course. You’ll see an example development workflow that makes use of all the git commands you learned up to this point. To continue your learning journey, check out the Real Python Podcast Episode 179: Improving Your Git Developer Experience in Python with Adam Johnson.

Avatar image for charliem22

charliem22 on June 5, 2019

Excellent introduction. Would have liked a rebasing example but I understand why the complexities of that would make that a bit difficult. Also, pointer to Pro-Git is appreciated. Have started reading it and it’s definitely the ‘next step’ after this video intro. Thanks for your time and effort… charlie

Avatar image for Paul Mealus

Paul Mealus on June 5, 2019

I very much appreciate the feedback @charliem22. For those looking for the next steps, pro git is a fantastic resource as Charlie mentioned. If you’re looking for some scenario based learning I’d suggest Learn Git Branching which will run you through some advanced scenarios including rebases and making sense of branch spaghetti.

Github also has some free labs, but I’ve never used them, would be interested to hear if anybody has.

Avatar image for Jet

Jet on June 12, 2019

The GitHub learning labs are very useful. If you are learning coding by yourself and trying to work with GitHub, it is difficult because you have no ‘team’ working with you on a project. The labs work with bots and you will go through examples of how it would be to work with someone in the same repo, pushing changes, making merge requests etc. The downside is that if you do something that is not anticipated by the lab, you get stuck somewhere and cannot finish it. I had to delete the repo I created for one of the learning labs in order to start from scratch and go through the entire lab. Still, I guess no matter how many tutorials or labs you go through, you will only really get a grip on it by working with it on a daily basis. You will however pick up useful information. The RealPython tutorials and videos are very good and cover quite a bit of detail. Thanks for that!

Avatar image for ulhasbhagwat

ulhasbhagwat on June 12, 2019

one more video on how to get back deleted file(s) as well as re-setting the master back to earlier version would help!

Avatar image for Abby Jones

Abby Jones on June 24, 2019

Excellent refresher. Been out of the game, so this was very informative and concise.

Avatar image for LJIN Lab

LJIN Lab on Aug. 25, 2019

Great tutorial as always, but would have liked to see how to migrate from a local repo to a remote github repo.

Avatar image for mdroberts

mdroberts on Nov. 18, 2019

Very good and succinct tutorial!

Avatar image for Erikton Konomi

Erikton Konomi on Jan. 6, 2020

Nice and concise overview of git!

Avatar image for Lokman

Lokman on Jan. 13, 2020

Thanks for the easy and short tutorial. Love it!

Avatar image for Damian

Damian on Feb. 24, 2020

This tutorial is a gem. While simple, it really demystifies the basic of github. thanks a lot. What do you recommend as a follow up course to continue building on this basics?

Thanks again!

Avatar image for Ricky White

Ricky White RP Team on Feb. 24, 2020

Hi @Damian. If you are new to git, then I recommend practice more than anything, before digging deeper. If you’re not new, then you could dig into the official docs and find a few gems in there that might help your workflow. git-scm.com/doc

Avatar image for pshapard

pshapard on April 8, 2020

Just completed the video. This course plugged some holes in my git/github knowledge. Still a lot to learn. Software development does not seem so scary. Thanks for your help Paul. Onto the next video

Avatar image for fjavanderspek

fjavanderspek on April 17, 2020

Clear and concise, awesome!

Avatar image for Patrick Prince

Patrick Prince on May 22, 2020

Hey Paul, very well done. Thanks for your effort on this. Maybe as a revision add a lesson the github client? Cheers!

Avatar image for Mark

Mark on June 5, 2020

Thanks So Much Paul

Avatar image for Kasidis Satangmongkol

Kasidis Satangmongkol on June 15, 2020

Many thanks Paul !!

Avatar image for theeternalstudent

theeternalstudent on June 24, 2020

Thanks for stepping through this! I was able to work with a remote BitBucket repository a teammate had setup. Before this video I simply copied the files. Now I know how to interact properly at the most basic level with a remote repository.

Avatar image for Alan ODannel

Alan ODannel on July 16, 2020

Very nice refresher course. I’ll be pulling down the Pro Git soon. The checkout and branches cleared a few things up for me.

Avatar image for mahlenius

mahlenius on July 21, 2020

Excellent tutorial Paul, thank you for your work on this. For some reason, I keep getting errors when I tried to do a “git clone https://…” to my private repo. It would respond with a fatal error. When I recreated the repo as a public one, it worked. I was using the same creds each time. Will have to go back and revisit this one as for some of my work projects I cannot make them public. Thanks again!

Avatar image for John Kinder

John Kinder on Sept. 1, 2020

Thanks for this wonderful tutorial. Each topic was short but concise, and I was able to pull all the real python material down to my VM… much appreciated!

Avatar image for jamesbrown68

jamesbrown68 on Sept. 24, 2020

You’ve got a friendly relaxed style, which was refreshing. Thanks for the info. I still don’t see how multiple developers can work on the same project without unknowingly stepping on each other’s work, but I’ll download the ProGit book and see if I can learn by doing.

Avatar image for anindo78

anindo78 on Nov. 2, 2020

Thanks Paul! Very good beginner level introduction to Git and Github!

Avatar image for horacionesman

horacionesman on Dec. 29, 2020

Very helpful, it was the explanantion I needed to fully understand this topic. Thanks!

Avatar image for jeffersongarciaor

jeffersongarciaor on Feb. 10, 2021

Thanks Paul! I learned a lot, and finally I can understand the git workflow. Very helpful and you were very instructive.

Avatar image for Antonio Soares

Antonio Soares on June 30, 2021

Git has intimidated me for quite some time but I’ve always wanted to learn how to use it. Although there are quite a lot of things you could have added to the course I think it’s wise that you kept it to these bare essentials. I felt it gave me enough of a base to stand on and learn as I go.

Avatar image for Glenn Lehman

Glenn Lehman on July 8, 2021

Excellent Work!

I really need the foundation I have tried for a few months to grasp the core concepts need to work with git.

Remaining Questions
  1. You used gitBash since I live in the windows world I have used git to this point. Are there benifits to using the gitBash instead?
  2. When I pulled the zen_remote report the .gitignore file did not come over. Is that normal behavior? Do I need a local .gitignore if I have on in the remote repo?
Thanks in advance!
Avatar image for Martin Breuss

Martin Breuss RP Team on July 9, 2021

Hi @Glenn Lehmann, glad you found the course helpful. :) About your remaining questions:

Git Bash

I’m not entirely sure I understood your question. If you’re on Windows, like Paul is, then you’ve probably already used Git Bash, unless you’ve been working with a GUI tool for Git.

Here’s a description of Git Bash:

Git Bash is an application for Microsoft Windows environments which provides an emulation layer for a Git command line experience. Bash is an acronym for Bourne Again Shell. A shell is a terminal application used to interface with an operating system through written commands. Bash is a popular default shell on Linux and macOS. Git Bash is a package that installs Bash, some common bash utilities, and Git on a Windows operating system.

So, if you’re on Windows and you’ve followed along with this course and typed Git commands in your shell, then you’re already using Git Bash. It comes with the installation for Windows, or you can get it together with a GUI client in a Git for Windows package.

The .gitignore File

You can commit a .gitignore file to version control and to your remote repository. Generally, this is recommended, so that collaborators know which files you excluded. However, you can also add the .gitignore file to your .gitignore file, which effectively prevents it from being recorded in your VCS.

I’m not sure where you pulled the zen_report from, but if you didn’t get a .gitignore file, then it’s because it wasn’t commited to that repository.

You can have a local .gitignore file, or you can get it as part of a remote repo, when you pull it to your computer. It just depends on whether or not the file was committed to the repository.

Hope that helps clearing up things.

Avatar image for Glenn Lehman

Glenn Lehman on July 10, 2021

Thanks @Martin Breuss


I did a little more research and found a few minor differences. From the Windows PowerShell if I run the Git command everything works fine as far as Git is concerned.

Since I have never used Unix I have not used the Bash editor. As GitBash appears to not only include the git command line, but also a bash emulator for windows. So you can edit files and a few other bash type items.

In my case since I do not us the VM editor, I can do everything I need with Git.


I actually create a new repo on GitHub and allow the .gitignore file to be create automatically. When I cloned the repo to my local drive the .gitignore file was not brought over to my local directory.


Avatar image for Martin Breuss

Martin Breuss RP Team on July 12, 2021

Hi @Glenn Lehman – gotcha about Git Bash :) Looks like you won’t need it then.


I’ve tried the steps that you described and initialized a new empty repository on GitHub with the suggested .gitignore file by checking the ✅ Add .gitignore option.

Then I pulled the repo to my local machine and looked at the content of the folder. The auto-generated .gitignore file showed up:

➜  Desktop git clone https://github.com/martin-martin/ignoremetest.git
Cloning into 'ignoremetest'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
Receiving objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
➜  Desktop cd ignoremetest 
➜  ignoremetest git:(main) ls -al
total 8
drwxr-xr-x   4 martin  staff   128 Jul 12 09:33 .
drwx------+ 32 martin  staff  1024 Jul 12 09:33 ..
drwxr-xr-x  12 martin  staff   384 Jul 12 09:33 .git
-rw-r--r--   1 martin  staff  1799 Jul 12 09:33 .gitignore

It’s a hidden file, so maybe you need to adapt your folder settings to display hidden files?

Avatar image for Philip GeLinas

Philip GeLinas on Sept. 25, 2021

Well done! Thank you!

Avatar image for andrewodrain

andrewodrain on March 22, 2023

Excellent! I can use GitHub the way its supposed to be used now! Thank You!

Avatar image for Duane aK

Duane aK on May 2, 2023

Great, I understand Git/GitHub now! Thanks for your hard work.

Avatar image for Jon Nyquist

Jon Nyquist on June 22, 2023

Nice course. Seems GitHub has changed a few things since this course was published, especially around authentification, but most most of the lessons remain valid.

Avatar image for Danadasa Chan

Danadasa Chan on July 26, 2023

Thank you for this clear tutorial! I now have a handle on git basics, and now it’s time to practice.

Become a Member to join the conversation.