Scott’s voice in these videos is like the “fluffy clouds” timbre of Bob Ross. Is Scott the Bob Ross of IT? “Talent is a pursued interest. Anything that you're willing to practice, you can do.”
I’ve been using git for years but your descriptions are lovely and simple. Your the ‘Bob Ross’ of tech Scott. You start out with something that looks sketchy and end up with something that is simple and effectively explained. Great work, look forward to seeing more of your videos.
I have been using Git for a long time and definitely this is the simplest/smartest way to understand Git "Rebase". Thanks Scott, I always learn something interesting from your videos.
The only video series that I found that actually explains GIT from a practical pov while still covering the underlying frameworks. Love the PoP reference too!
Following your videos for 6 years now. It has been always been great to watch you. Always learned new things the best one is the trick to select text in VS with ALT key pressed. I have impressed many people with this trick.
That blood sugar prompt is pretty slick. I used your block to set up posh git on my machine and love it! It pushed me toward using git CLI almost exclusively, vs a UI client.
This is a great series, and you've made rebasing simple to understand, thank you so much! Your teaching style is something I aspire to. May I suggest workflows (gitflow or trunk-based development) and using git in code reviews as future topics?
Thank you for your videos! Having your blood sugar right in the command prompt is amazing. This way you don't have to worry about these annoying compensation matters. I think it's really cool. Having the implant is cool also.
These are a fantastic set of videos on git. Personally I prefer merging, but use `rebase` heavily on feature branches (e.g. git rebase -i HEAD~3) to squash any superfluous commit messages down into fewer commits before opening a PR. How about a video on resolving merge conflicts?
Scott, I suggest drawing your commit/branch visuals with the arrows going from a commit to it's predecessor. I have found that not doing so can cause more debate than necessary about branching strategies
Topic extension suggestion: Rebasing if you have already pushed your feature branch to a remote. The downsides of rewriting history if there is a copy of it elsewhere. That is where rebasing gets really tricky and git push --force is useful but not always available.
Really nice job explaining Rebase. I like the pace you are teaching, its make things look so easy. Always fun to watch your video... I also learned MVC from you
Thank you Scott, this will save me a lot of time explaining it to my junior colleagues :) I love your videos, a lot of information presented in a very entertaining manner, keep them coming!
Scott, thank you so much for this video series. I would like to request a video on putting it all together. I'm self taught and understand many of the pieces, it's the development workflow of local machine to github to production / staging servers, updating sites, etc that I get lost. I'm trying to build a drupal site using docker containers locally, using github to hold repo and a production/staging server. Help?
Thanks, very detailed and patient explanation. Git is very important but hard for me, I always google how to remove branch locally and remotely and how to undo a pushed commit (still have no idea how to do that properly).
Did you discuss using GIT stash for work in progress scenarios? Also VSCode has a great integration that most people have not seen. maybe a new video for your series?
Awesome presentation! I've to present some subjects to my colleague and having a pen to draw stuff would be highly beneficial! How do you draw like this? Is it on another tactile screen?
How did you get your terminal/git-bash to highlight the repo in blue, and the branch in green? Edit: actually i found another video of yours where you go over that, thanks!
Scott, I know a little off topic but could you maybe show us what you do with Windows 10 to get rid it of all that telemetry. The biggest reason I don't use Windows10 is due to all the telemetry it is sending back and forth to servers controlled by msft that I have no control over. Also, I find it irritating (being nice here) that windows users have to go through such a rigmarole when setting up their boxes (spyware, candy crush removal, etc.). Linux setup and use is soooooooo much easier with none of the spyware (unless you install chrome, LOL). Please let your community know your thoughts on these issues. Sorry for the length.
Great series. Two follow-up questions: 1. Visual Studio has a nice interface with GIT. Any differences between it and the GIT History extension you are using for Visual Studio Code? 2. I've noticed Microsoft DEVs talking more and more about GITHUB. We moved our code base to Azure DevOps private Repos years ago. Should we be thinking about moving them from Azure DevOps to GitHub?
Scott, since you've talked about git a couple of times, would you go further talk about the pipelines, say, Jenkins. Maybe just some basics, as simple as where we shall store the Jenkins code - pipeline script, shall the script be stored in the same repo w/ the app source code, etc. :) Thanks!
Loving the videos. As I am currently working in Python with Jupyter notebooks - could you cover how to explore merges and other git tools with jupyter notebooks. As the notebook is stored in .json, the usual merge makes it almost impossible to review conflicts and change. Thanks!
Hi Scott, I'm really interested to know how you have your surface connected? Is it the machine powering this presentation, or is it being used as an external monitor somehow?
What does Scott use to click and create green arrows and rectangles on top of VS Code and Github? Not the part where he uses MS Whiteboard, but the other parts.
Is OCD the only reason to rebase over merging? Any real world scenario this would be preferable other than organizing history? When do you prefer rebase over merge? Thanks! Great series!
I usually use rebase on my local branches before I push to the remote to change commit messages to something more describing (during development just pick any message so I don't lose my flow, often something like WIP or temp) or if I find small mistakes (spelling in comments, wrong formatting, small little bugfixes, ...) and use fixup to meld it into an older commit.
@@Vasrias That does makes sense but sounds like the end results might be the same depending on your teams workflow? My place, when we review a PR we really don't worry about the single commits or the comments we just look at the final combined code. I can see this cleaning up the commit history a bunch. Instead of searching over 20k commits you could be looking at 5k.
I make many commits in local brach(es) - mentally I call them checkpoints, sometimes I revert back to previous checkpoint. When task is done, I rebase all checkpoints in one nice commit to push out into the world. It gives me confidence, that locally I can do and try out whatever comes into mind. Another one - I pull with rebase, to avoid polluting history with "merged remote branch in local branch" commits and if there are conflicts, I find that putting my changes on top of someones else changes is easier, than resolving conflict with merge.
We never commit any changes to main branch. We always create a new branch like "feature/TD-2134_blabla" and then commit and push After that at least two person overview and after approve you can merge it to the main branch with squash and delete you branch, never more simpler, never more cleaner
I noticed that in dreams, if something bad happens, you can often go back in time and rewrite the history, so the dream outcome ends up being nice. Now I know it's called "rebase".
Question about VS Code Terminal. It looks like your terminal in vs code still shows nicely, but mine does not seem to show the icons within Code. Is there something I need to do to make it show in all places and not just Windows Terminal?
So that I'm clear, can someone tell me if this is correct. After Scott did the rebase. Then he did a git merge evilspock. So it's kind of a 2 step process. The rebase first. Then the merge command. Yes?
Rebase 'replays' the commits from evilspock as if they happened 'after' the changes on main. At the end of the first step, evilspock knows about this, but main is still where it was before. The second, merge command just tells main 'hey, you should include these extra commits now'.
I am not sure if it is a rebase or something else. Can you cover how to handle this situation? Say you have multiple branches. Another branch modifies a file and is merged into main after the time when your branch is created. The file you are working on is not the same file, but depends on the newly modified file in main, but your branch still has the old file. How do you bring the current branch up to date with main so you can make your code work the the new main branch files?
About VS Code. Wish to hear some reassuring thoughts about the safety of extensions in general. Because my naive impression is that anything could be in them.
Great video Scott, thank you! One thing regarding the cool prompt. I get a "square" (missing font) for the icon that comes right before the environment name (when activating a python environment). Do you know how to fix that? Thanks!
I use a Dexcom G6, it sends data over Bluetooth to the iPhone, then to Dexcom Share. I pull from Dexcom into a Nightscout (Mongo) DB, which makes it available via a REST api.
Thanks for the video, Scott. There was a time I asked a friend this: Say I'm in a file UserProfile, and I've been asked to add uploading of profile photo as a feature. I create a function UploadProfilePhoto, then my boss walks in and says, why don't you defer that and show the username, alongside the user's full name, so I create another function ShowUsername. Say I'm done with the ShowUsername function and I need to commit, but there's now a "moral" conflict, the commit should only be concerned about showing the username, not uploading a profile photo. Is there a way to commit just the ShowUsername function, and not UploadProfilePhoto function, even though they are in the same file?
`git add -p ` or just `git add -p` might be what you're looking for? That's one way to add parts of a file to commit; for each grouping of changes it will ask you if you want to stage them or leave them unstaged.
@Bridger Hammond the example is just for illustration. The question is what if those functions are in the same file. I don't think it's something you can escape as you have a lot to work on.
@@adebiyial Hmm. Not sure what you're asking, then. Just in case, medium.com/transmute-techtalk/improve-your-commit-hygiene-with-git-add-patch-3b7dd9c117c4 has a little more detail on this.
@@ChrisHaupt Well, that makes sense, too. The quality of the sound is really good. I know he's a pro, but still I'm impressed ... of the quality of the video and the demo and all, not just the content itself.
Git is brutally complicated. Instead of the parallel universe analogy, git is a world where the authorities tell you up is down, that git makes sense. Keep in mind that Scott works for Microsoft, Microsoft owns git, it is in Microsoft’s interest to lock users into their world of software products. The way to accomplish the lock in is to tell users that git is great, the convoluted parts of it, just skip that or keep on using our software products and paying your monthly charges, and you will eventually get the hang of it.
Clarification: Microsoft does not own git. They bought and absorbed GitHub (the website), but not git. There are non-Microsoft alternatives to GitHub. And they bought it GitHub because git was already massively popular; not sure there's a need for some nefarious conspiracy of "let's be nice and create a useful video to prop up the popularity of the already most-used open-source version control program on the planet".
@@Steve-Richter So use Mercurial or Gitlab or Bitbucket instead. The point of source control is to allow frictionless sharing and collaboration, which is the exact and precise opposite of vendor lock-in, and consequently you can do what you want with your codebase. The mind boggles. By the way, Github has free unlimited private repositories, so not sure what you mean about 'monthly charges.' But that was only added after Microsoft took over, so make sure you send a message to Scott thanking his company for that change.
Scott’s voice in these videos is like the “fluffy clouds” timbre of Bob Ross.
Is Scott the Bob Ross of IT?
“Talent is a pursued interest. Anything that you're willing to practice, you can do.”
I sent Scott's Git videos to my co-workers and I said "this dude definitely has some Bob Ross in him, but the videos are quite good". ;)
"When I merge code, I do it directly in production" ~ Scott 😂
Like the :shipit: boss he is
Scott is very very efficient 😂
@@ChristopherRucinski KEKW
"I don't always test my code, but when I do I test it in production" Dos Equis meme
I’ve been using git for years but your descriptions are lovely and simple. Your the ‘Bob Ross’ of tech Scott. You start out with something that looks sketchy and end up with something that is simple and effectively explained. Great work, look forward to seeing more of your videos.
Thanks Scott, you made that way more understandable than the documentation.
I have been using Git for a long time and definitely this is the simplest/smartest way to understand Git "Rebase". Thanks Scott, I always learn something interesting from your videos.
Keep them comming scott...great content👍🏼
The only video series that I found that actually explains GIT from a practical pov while still covering the underlying frameworks. Love the PoP reference too!
He is listening. We can request topics. Thanks Scott, am one of them who requested this topic....
Minecraft tutorial please.. I'm really interested in how to tame a horse in Minecraft.
@@moofymoo give it carrots
Following your videos for 6 years now. It has been always been great to watch you. Always learned new things the best one is the trick to select text in VS with ALT key pressed. I have impressed many people with this trick.
That blood sugar prompt is pretty slick. I used your block to set up posh git on my machine and love it! It pushed me toward using git CLI almost exclusively, vs a UI client.
Certainly demystified rebasing for me. Thanks for the great content. Keep it coming!
These are some of the clearest explanations I've ever seen on yt
This is a great series, and you've made rebasing simple to understand, thank you so much! Your teaching style is something I aspire to. May I suggest workflows (gitflow or trunk-based development) and using git in code reviews as future topics?
You don't know how much this helps me! Your channel is a gem
This guy used Time Travel and Parallel Universes to explain git branches. Love it! From now on I'm naming the master/main branch - Earth Prime
Thank you Scott! This is my favorite series!
I like to listen to Hanselman videos before bed. His soothing voice makes me sleep instantly.
Thank you for your videos!
Having your blood sugar right in the command prompt is amazing. This way you don't have to worry about these annoying compensation matters. I think it's really cool. Having the implant is cool also.
Great video as ever, many thanks. I would definitely like to see your take on cherrypicking, reordering commits and anything else you find useful.
Thanks Scott , you are the hidden Gem in the TH-cam ocean
I am loving these videos. Thank you for sharing your knowledge in such an approachable way.
These are a fantastic set of videos on git. Personally I prefer merging, but use `rebase` heavily on feature branches (e.g. git rebase -i HEAD~3) to squash any superfluous commit messages down into fewer commits before opening a PR.
How about a video on resolving merge conflicts?
It's the first time since I am using git, that I understand the difference between merge and rebase. Thank you Mr. Hanselman :-)
Thank you! I like your style of teaching, easy to understand 👍
Scott, I suggest drawing your commit/branch visuals with the arrows going from a commit to it's predecessor. I have found that not doing so can cause more debate than necessary about branching strategies
Topic extension suggestion: Rebasing if you have already pushed your feature branch to a remote. The downsides of rewriting history if there is a copy of it elsewhere. That is where rebasing gets really tricky and git push --force is useful but not always available.
Really nice job explaining Rebase. I like the pace you are teaching, its make things look so easy. Always fun to watch your video... I also learned MVC from you
Thank you Scott, this will save me a lot of time explaining it to my junior colleagues :)
I love your videos, a lot of information presented in a very entertaining manner, keep them coming!
Beautifully explained. I appreciate how you take the time to clearly communicate the subject matter.
Best explanation of rebase ever, thank you
Thank you Scott! Great content and very well explained. Keep 'em coming please.
What a simple and efficient explain! Tks Scott.
Thank you very much! I would like to have a tutorial either about sockets or any simple communication between devices
Hi Scott. Can you also talk about git "fetch"?
+1
Great content - Rebase now demystified! Also, we should all be mindful of the dangers of evil parallelograms!
Scott, thank you so much for this video series. I would like to request a video on putting it all together. I'm self taught and understand many of the pieces, it's the development workflow of local machine to github to production / staging servers, updating sites, etc that I get lost. I'm trying to build a drupal site using docker containers locally, using github to hold repo and a production/staging server. Help?
Thanks, very detailed and patient explanation. Git is very important but hard for me, I always google how to remove branch locally and remotely and how to undo a pushed commit (still have no idea how to do that properly).
The man sends his blood sugar levels to the cloud and feeds it into his prompt.
I know it's been said but, Scott is the Bob Ross of Code
Hey Scott, thanks for the video, super helpful! Could you do git reset as well?
Did you discuss using GIT stash for work in progress scenarios? Also VSCode has a great integration that most people have not seen. maybe a new video for your series?
Such a humble guy.
Awesome presentation! I've to present some subjects to my colleague and having a pen to draw stuff would be highly beneficial!
How do you draw like this? Is it on another tactile screen?
Nicely explained, well understood!
How did you get your terminal/git-bash to highlight the repo in blue, and the branch in green?
Edit: actually i found another video of yours where you go over that, thanks!
Thank you!
Scott, I know a little off topic but could you maybe show us what you do with Windows 10 to get rid it of all that telemetry. The biggest reason I don't use Windows10 is due to all the telemetry it is sending back and forth to servers controlled by msft that I have no control over. Also, I find it irritating (being nice here) that windows users have to go through such a rigmarole when setting up their boxes (spyware, candy crush removal, etc.). Linux setup and use is soooooooo much easier with none of the spyware (unless you install chrome, LOL). Please let your community know your thoughts on these issues. Sorry for the length.
Nice! Btw, can you do a video about integrating your cgm with your prompt?? Awesome idea!
Great series. Two follow-up questions: 1. Visual Studio has a nice interface with GIT. Any differences between it and the GIT History extension you are using for Visual Studio Code? 2. I've noticed Microsoft DEVs talking more and more about GITHUB. We moved our code base to Azure DevOps private Repos years ago. Should we be thinking about moving them from Azure DevOps to GitHub?
Scott, since you've talked about git a couple of times, would you go further talk about the pipelines, say, Jenkins. Maybe just some basics, as simple as where we shall store the Jenkins code - pipeline script, shall the script be stored in the same repo w/ the app source code, etc. :) Thanks!
Your metaphor is insightful, rebase is without doubt an evil way to corrupt your repo.
Best series ever
if you delete your local evil branch, nobody can find out that you used rebase right?
YES I'VE BEEN WAITING FOR THIS
Great explanation of rebase. 👍🏼 Thank you.
Yet another excellent video. Thank you.
I love these series :) Thanks a lot
Loving the videos.
As I am currently working in Python with Jupyter notebooks - could you cover how to explore merges and other git tools with jupyter notebooks.
As the notebook is stored in .json, the usual merge makes it almost impossible to review conflicts and change.
Thanks!
Hi Scott, I'm really interested to know how you have your surface connected? Is it the machine powering this presentation, or is it being used as an external monitor somehow?
What does Scott use to click and create green arrows and rectangles on top of VS Code and Github? Not the part where he uses MS Whiteboard, but the other parts.
Is OCD the only reason to rebase over merging? Any real world scenario this would be preferable other than organizing history? When do you prefer rebase over merge? Thanks! Great series!
I usually use rebase on my local branches before I push to the remote to change commit messages to something more describing (during development just pick any message so I don't lose my flow, often something like WIP or temp) or if I find small mistakes (spelling in comments, wrong formatting, small little bugfixes, ...) and use fixup to meld it into an older commit.
@@Vasrias That does makes sense but sounds like the end results might be the same depending on your teams workflow? My place, when we review a PR we really don't worry about the single commits or the comments we just look at the final combined code. I can see this cleaning up the commit history a bunch. Instead of searching over 20k commits you could be looking at 5k.
I make many commits in local brach(es) - mentally I call them checkpoints, sometimes I revert back to previous checkpoint. When task is done, I rebase all checkpoints in one nice commit to push out into the world. It gives me confidence, that locally I can do and try out whatever comes into mind.
Another one - I pull with rebase, to avoid polluting history with "merged remote branch in local branch" commits and if there are conflicts, I find that putting my changes on top of someones else changes is easier, than resolving conflict with merge.
@@moofymoo I think I'm sold now on rebasing my commits. Going to start messing with it this weekend. Thanks for the replies all!
I never rebase, I don't see the point.
We never commit any changes to main branch. We always create a new branch like "feature/TD-2134_blabla" and then commit and push
After that at least two person overview and after approve you can merge it to the main branch with squash and delete you branch, never more simpler, never more cleaner
I noticed that in dreams, if something bad happens, you can often go back in time and rewrite the history, so the dream outcome ends up being nice. Now I know it's called "rebase".
Nice video Scott! Curious, what microphone are you using?
This is a Sennheisser lavaliere
This is the first time I have ever understood rebasing, and our company has been doing it for years
Great video Scott!!
Question about VS Code Terminal. It looks like your terminal in vs code still shows nicely, but mine does not seem to show the icons within Code. Is there something I need to do to make it show in all places and not just Windows Terminal?
So that I'm clear, can someone tell me if this is correct. After Scott did the rebase. Then he did a git merge evilspock.
So it's kind of a 2 step process.
The rebase first.
Then the merge command.
Yes?
Rebase 'replays' the commits from evilspock as if they happened 'after' the changes on main. At the end of the first step, evilspock knows about this, but main is still where it was before. The second, merge command just tells main 'hey, you should include these extra commits now'.
Excellent videos, thank you!!
Thanks for the great content!
I am not sure if it is a rebase or something else. Can you cover how to handle this situation? Say you have multiple branches. Another branch modifies a file and is merged into main after the time when your branch is created. The file you are working on is not the same file, but depends on the newly modified file in main, but your branch still has the old file. How do you bring the current branch up to date with main so you can make your code work the the new main branch files?
This is where I think rebase comes in too - I view rebase as a way of updating your feature branch to be based off a later version of main.
About VS Code. Wish to hear some reassuring thoughts about the safety of extensions in general. Because my naive impression is that anything could be in them.
Yes but they are in a marketplace that is actively managed. Extensions that are popular with good reputations are safe.
@@shanselman thanks for that mr Scott
more evil videos, scott
Thanks for the video, very informative.
Great video Scott, thank you!
One thing regarding the cool prompt. I get a "square" (missing font) for the icon that comes right before the environment name (when activating a python environment). Do you know how to fix that?
Thanks!
Which font? What should the square be? You may need to get a Nerd Font version of your font
I think you have missing glyphs (special icons) try to get fonts that has glyphs in it. Refresh the fonts cache then, if needed.
5:23 Words to live by
Sir u can use "git log --graph" to see the graphical representation
Evil Parallelogram!
What do you use to monitor your insulin that had an API you can hook into? Or are you scraping it or something?
I use a Dexcom G6, it sends data over Bluetooth to the iPhone, then to Dexcom Share. I pull from Dexcom into a Nightscout (Mongo) DB, which makes it available via a REST api.
@@shanselman thank you for the response. Might try something like this to keep an eye on family members while I work.
By the way, what color theme are you using in your vscode?
Yonce
What is that notepad-like icon before VSCode's icon on your taskbar?
Notepads, plural. In the Windows Store.
Yoo Imagine if someone made a git repo rewrote the DC Comics in such a way where each branch was a timeline :O
Thanks for the video, Scott.
There was a time I asked a friend this: Say I'm in a file UserProfile, and I've been asked to add uploading of profile photo as a feature. I create a function UploadProfilePhoto, then my boss walks in and says, why don't you defer that and show the username, alongside the user's full name, so I create another function ShowUsername. Say I'm done with the ShowUsername function and I need to commit, but there's now a "moral" conflict, the commit should only be concerned about showing the username, not uploading a profile photo. Is there a way to commit just the ShowUsername function, and not UploadProfilePhoto function, even though they are in the same file?
`git add -p ` or just `git add -p` might be what you're looking for? That's one way to add parts of a file to commit; for each grouping of changes it will ask you if you want to stage them or leave them unstaged.
@@JamesSkemp hmm. I don't think this is it. This has to do with Hunks and it concerns files.
@Bridger Hammond the example is just for illustration. The question is what if those functions are in the same file. I don't think it's something you can escape as you have a lot to work on.
@@adebiyial Hmm. Not sure what you're asking, then. Just in case, medium.com/transmute-techtalk/improve-your-commit-hygiene-with-git-add-patch-3b7dd9c117c4 has a little more detail on this.
@@JamesSkemp thanks mate. Let me check this out.
Better than most udemy courses
Last commit message should have been “New World Order” 😁
thank you for this!
evilspock branch. Scott's not taking sides on merge vs rebase, not at all :)
Lets save the Lincoln ♥♥♥
i dont like the joke about killing grandpa. but nice tutorial.
Great!
I am watching it in a bed 🛌 before sleep 😴
I wonder why people torture themselves like this instead of using magit in emacs...
Thank yoU!
This guy looks like John Malkovich lol
Thanks, I guess? He’s rich and famous so maybe it’ll work out for me one day.
Use always squash, git history is so much prettier
Scott, just curious, what kind of mic are you using?
This is a Sennheiser
@@shanselman Thanks Scott! So you are using an XLR mic, no wonder your sound is so clear even though you looked like you were whispering.
@@JingerVideo No, in another comment he mentions it is a lavelier mic
@@ChrisHaupt Well, that makes sense, too. The quality of the sound is really good. I know he's a pro, but still I'm impressed ... of the quality of the video and the demo and all, not just the content itself.
@@JingerVideo Yeah, not bad at all!
His blood sugar is a bit high though
😂
omg .... meander meander....6:19 and still no info on why I came here. bye
i want a divorce !
Git is brutally complicated. Instead of the parallel universe analogy, git is a world where the authorities tell you up is down, that git makes sense. Keep in mind that Scott works for Microsoft, Microsoft owns git, it is in Microsoft’s interest to lock users into their world of software products. The way to accomplish the lock in is to tell users that git is great, the convoluted parts of it, just skip that or keep on using our software products and paying your monthly charges, and you will eventually get the hang of it.
Lol git was great long before Microsoft bought github, and it still is great.
Microsoft does not own Git. It is released under GPL 2 by Linus Torvalds. This has to be a troll, right?
@@hoisinholdup oh yeah, no way any one would be confused by git!
Clarification: Microsoft does not own git. They bought and absorbed GitHub (the website), but not git. There are non-Microsoft alternatives to GitHub. And they bought it GitHub because git was already massively popular; not sure there's a need for some nefarious conspiracy of "let's be nice and create a useful video to prop up the popularity of the already most-used open-source version control program on the planet".
@@Steve-Richter So use Mercurial or Gitlab or Bitbucket instead. The point of source control is to allow frictionless sharing and collaboration, which is the exact and precise opposite of vendor lock-in, and consequently you can do what you want with your codebase. The mind boggles. By the way, Github has free unlimited private repositories, so not sure what you mean about 'monthly charges.' But that was only added after Microsoft took over, so make sure you send a message to Scott thanking his company for that change.