Git MERGE vs REBASE

Поділитися
Вставка
  • Опубліковано 8 чер 2024
  • Understand the differences between MERGE and REBASE and learn how to efficiently use these commands in your projects!
    🖥️ Official Website & Courses
    academind.com/courses/
    👨‍💻 Learn Git & GitHub Today
    acad.link/git
    📝 Other Resources
    Git REBASE - official docs: git-scm.com/book/de/v2/Git-Br...
    Git MERGE - official docs: git-scm.com/docs/git-merge
    👋 Social Media
    / maxedapps
    / academind_real
    / academind_real
    / academindchannel
    💬 Academind Community on Discord
    / discord
    ----------
    Academind is your source for online education in the areas of web development, frontend web development, backend web development, programming, coding and data science! No matter if you are looking for a tutorial, a course, a crash course, an introduction, an online tutorial or any related video, we try our best to offer you the content you are looking for. Our topics include Angular, React, Vue, Html, CSS, JavaScript, TypeScript, Redux, Nuxt.js, RxJs, Bootstrap, Laravel, Node.js, Progressive Web Apps (PWA), Ionic, React Native, Regular Expressions (RegEx), Stencil, Power BI, Amazon Web Services (AWS), Firebase or other topics, make sure to have a look at this channel or at academind.com to find the learning resource of your choice!
  • Наука та технологія

КОМЕНТАРІ • 539

  • @bryanstrader1740
    @bryanstrader1740 4 роки тому +208

    This is a great video for explaining the difference between merge and rebase. The only thing that seemed "weird" to me was rebasing feature branch on master. I like to use rebase to keep a feature branch up to par with master, but then use merge to move feature changes into master (once development is finished on the feature).

    • @petarkolev6928
      @petarkolev6928 2 роки тому +7

      When Manu switched to master and typed "git rebase feature" what he actually did was literally as he would do "git merge feature" because he just pulled the commits from feature branch into the master branch. This is why it seems weird at first glance. Actually the examples Manu showed in this video are not likely to be used in real world because no one merges directly into their master branch but it was a really nice example of how these two commands work :) I don't know if you are familiar with interactive rebasing. If you are not google how "git rebase -i " command work :)

    • @deeplybrown
      @deeplybrown 2 роки тому +35

      I'm totally with you on this one. Rebasing should *never* happen on common branches like `master` or `develop`. It should only happen on feature branches.

    • @100bands
      @100bands Рік тому +10

      Yea, rebasing a feature branch with master is just a bad example. It looks straightforward here without a conflict, but it can be huge pain when such rebasing results in conflicts. Not to mention the effort it would take to undo a problematic rebase. I personally use merge commits for the same exact reason, that way I can easily revert to a good commit when things go south

  • @fotios4902
    @fotios4902 5 років тому +136

    Quick example: 0:30
    In the project: 2:00
    Merge a 'summarized' new feature: 4:25
    git merge --squash branch-name : 5:50
    Adding the new 'merge' commit: 6:30
    Second way with rebase: 8:00
    git rebase master: 9:20
    Explanation: 10:25
    Playlist:
    Git & GitHub - Managing Your Code:
    @

  • @ChadLawson3
    @ChadLawson3 2 роки тому +3

    I’ve been trying to wrap my head around this git stuff for a month now and things like this have just alluded me. But this demonstration was perfectly and concisely clear. Thank you for opening my eyes.

  • @meiowalot7570
    @meiowalot7570 4 роки тому +5

    I’ve watched tons of git videos as I try to increase my understanding of keeping history clean when merging code. This is one of the best I’ve seen, hands down. The example was clear and you explained exactly what the different options would produce in terms of history/commits. Thank you, this is a huge help.

    • @academind
      @academind  4 роки тому

      Thank you very much Mark!

    • @portfedh
      @portfedh 2 роки тому +1

      x2. Ive been watching several videos on this and this one was the one that helped me get it. Thank you!

  • @marouane55
    @marouane55 4 роки тому +462

    I think the golden rule is you should merge to master branch and rebase the feature branches

    • @fexsort
      @fexsort 4 роки тому +2

      *rule ? :P

    • @marouane55
      @marouane55 4 роки тому +2

      @@fexsort Corrected, thank you. :)

    • @CourtneySchwartz
      @CourtneySchwartz 4 роки тому +34

      Abdelhak Marouane Almost... The golden rule is: Never rebase a public branch. So if your feature branch is shared... Don’t rebase that, either. (Can drop your teammate’s commits if they push while you are rebasing...) Use ‘- force-with-lease' for safety.

    • @CourtneySchwartz
      @CourtneySchwartz 4 роки тому +15

      Also: Don’t rebase your feature branch if you’ve already merged master in. In that case, it can get very messy when you feature rebase + rebase PR merge... Rebase rewrites history, and now you might re-apply “new” commits that are actually an old state of master.

    • @longtranhoang7368
      @longtranhoang7368 4 роки тому +1

      @@CourtneySchwartz I don't get this point. How does rebasing drop my teammate's commits ? Doesn't rebasing keep original commits ?

  • @AZIARGROUS
    @AZIARGROUS 2 роки тому +9

    Oh I finally understand why it's called rebase, because you are effectively changing the m2 commit feature is based off of to the m3 commit. You have effectively rebased it! thanks!

  • @rsodeyi
    @rsodeyi 2 роки тому +3

    I felt like I just wanted to reach into the screen, go back in time and give this guy a great big hug 😁
    Such a good explanation 👏🏾

  • @brianauld1492
    @brianauld1492 3 роки тому +3

    Excellent. Best source (written or video) that I've ever come across that simply shows you how to use rebase to your advantage when working on a feature branch.

  • @extraxt
    @extraxt 5 років тому +26

    Today I learned about git merge --squash! Thank you!

    • @academind
      @academind  5 років тому

      Happy to read that Rafael :)

  • @ClassyJohn
    @ClassyJohn 2 роки тому +1

    This is a really good video because you slowed things down and thoroughly went through and explained stuff, repeating the key important points over and over. This is important information to understand basic of git. Thank you!

  • @dasten123
    @dasten123 5 років тому +21

    Good to know. So far I only used merge.
    So when I'm on a long-living feature branch I sometimes merged the master branch from time to time in, to get the latest updates and to make merging into the master easier later. Now I will use rebase for this

    • @courageisaac9996
      @courageisaac9996 2 роки тому

      Best token of the year! #lzn #Luzionprotocol
      🚀 Massive 383,125.80% APY.
      💯 Fully Doxed Team and KYC.
      🔥 2% Auto Black Hole (Actual dEAd address)
      🟢 4%-5.3% BUSD.
      🔒 Audited, Safe and Secure (ZERO Team Token).😎

  • @rolandovillcaarias5112
    @rolandovillcaarias5112 4 роки тому +31

    Could you please make another video when different developers touched the same file in different branches? For merging and rebase concepts. Thank you.

  • @2011sandeepraj
    @2011sandeepraj 3 роки тому +6

    Worth mentioning that when doing 'git rebase master' while being in the feature branch, the original f1 commit was rewinded on top of the feature branch with a new commit id. Whereas when doing 'git rebase feature' while being in the feature branch, there was nothing really to be rewinded (there were no new commits on master) so master branch was just fast forwarded i.e. none of the commit ids changed.
    In short,
    When in feature branch with feature branch ahead, commits in master will have same ids, but feature commits will have new ids
    When in master branch with feature branch ahead, commits in master will have same ids, and it will same feature commit ids to master branch

  • @truphenalwanga9829
    @truphenalwanga9829 5 років тому +21

    thanks for the really clear tutorial

  • @shreelekha8654
    @shreelekha8654 4 роки тому +11

    Awesome explanation. As a beginner i was struggling through it and now understood the concept of rebase just in 16 minutes :)

  • @sridharpusa3721
    @sridharpusa3721 2 роки тому +1

    Finally a explanation about rebase that actually make sense. Thanks a lot. Great work.

  • @manfrombritain6816
    @manfrombritain6816 Рік тому

    FINALLY someone explained it fully with examples and conflicts, rather than just reading out the commands

  • @alexxmde
    @alexxmde 3 роки тому +2

    Coming back to this video on a yearly basis since 2018

  • @reginald_czynaski
    @reginald_czynaski 4 роки тому +47

    I would be happier if this covered normal merge (with merge commit) versus rebase which usually brings more heated discussion.

  • @johnsawiris5988
    @johnsawiris5988 3 роки тому

    The best `git rebase` explanation I've found so far!

  • @LoveMagic11
    @LoveMagic11 2 роки тому +5

    Awesome explanation. As a beginner, i was struggling through it and now understood the concept of rebase just in 16 minutes

  • @sitangruan
    @sitangruan Рік тому

    Simply the best explanation I saw for rebase and merge. Thank you so much!

  • @subinrevi2268
    @subinrevi2268 4 роки тому +1

    Simple and clear explanation. Well done !

  • @CenturionDobrius
    @CenturionDobrius 4 роки тому +2

    amazing explanation, and excellent visual !
    thanks many times !

  • @rknaik76
    @rknaik76 3 роки тому

    Now I understood the difference and fundamental logic behind it. Thanks for the video.

  • @bondedsalt
    @bondedsalt 3 роки тому +4

    I’m a rebaser and proud of it :) lol, I always work with private feature branches, either taken from master or from a public feature branch. My workflow is to then rebase from the source branch prior to merging (or creating a PR). This way I can validate that my code changes, through unit and integrations tests, work with the latest code. Not saying it’s the right way that’s just how I work, wanted to share! Happy merging!

    • @deeplybrown
      @deeplybrown 2 роки тому +1

      I'm not anti-rebasing or anything, but you can still validate your feature against the most recent code by doing a simple `git merge`.

  • @magoxxii
    @magoxxii Рік тому

    Thanks! I readed other sources but didnt get it clear until now! thanks again!

  • @mohamednaimi7076
    @mohamednaimi7076 Рік тому

    Extremely helpful, I'll make sure to check out the rest of your videos

  • @Karthikeyan07525
    @Karthikeyan07525 3 роки тому

    Many thanks for the tutorial. This helps me a lot in understanding merge vs rebase.

  • @audiodrocher
    @audiodrocher 3 роки тому

    My life is changed forever, thank you so much 😊

  • @sebon11
    @sebon11 2 роки тому

    I'm at 2nd minute but already see that you explain everything very clearly!! Great & thanks for the video!!

  • @cheapskate7
    @cheapskate7 3 роки тому

    Thanks for taking the time. Great explanation!

  • @sandeepkosta5750
    @sandeepkosta5750 3 роки тому

    I just left the video in the middle of it to say thanks so much for such a Crystal clear explaination

  • @micahvanella2938
    @micahvanella2938 2 роки тому +7

    I like rebasing a lot, it really keeps the history clean. However I have a problem that I run into a lot, especially when using visual studio. If I git rebase master into my feature branch, sometimes there are conflicts. I prefer using a gui program like Visual Studio, but the terminology is always odd. "Incoming" and "current" are a little confusing when the master branch has a number of commits that you are introducing, and it seems like it interferes with every single commit. This isn't common but it does happen and it's a bit of a headache. Anyone recommend resources for better understanding rebase conflicts?

  • @simonsantama
    @simonsantama 3 роки тому +3

    Great video. Super clear explanation. Loved the idea of having the code and the commit being the same text, it makes everything so much clear.

  • @AbbavaramBhushan
    @AbbavaramBhushan 4 роки тому +1

    Best explanation on reset and revert

  • @miakablan8792
    @miakablan8792 5 років тому +1

    Thank you for this explanation ..
    but I have one question
    as I realized that it always add the new commits from the current branch as the last commits .. can we control this order or not?
    another question .. If I want to revert the commit after I did "rebase" then what is going to happen? let's suppose that master is m1 m2 m3 feature is m2 f1 and we are currently in the master and did git rebase feature ... now the master is m1 m2 f1 m3 right? if we choose this commit and select reverse .. the master will back m1 m2 m3 ? right ?

  • @paulp3053
    @paulp3053 Рік тому

    this is one of the most clear explanations on the subject, thanks

  • @charlesbovalis6591
    @charlesbovalis6591 4 роки тому +1

    I finally "got" it .. the very "fine detail" of how rebase works start at around 10:45 of this video. Using my own way of thinking: Whichever branch you are about to issue a rebase command against another branch, the steps are:
    1) Git "rewinds" both branch "timelines" until it finds the common "denominator" ( ie: common commit both branches share).
    2) Git then finds all the changes that happened in the current branch past the common "denominator" and puts them "aside" - let's call this "my current branch changes" ..
    3) Git will then find the changes of the other branch that happened past the common "denominator" and puts them "aside" - let's call this "the other branch changes" ..
    4) Git will now re-create a new branch timeline after the common "denominator" on the current active branch we issued the rebase command using the following "formula":
    "other branch changes" + "my current branch changes" and will add that timeline of events after the common "denominator" ..
    So the new branch timeline on the branch we issued the rebase command will be:
    .... "common denominator commit" + "commit changes of the other branch after the common denominator" + "commit changes of my current branch after the common denominator"
    While now all is "crystal clear" to grasp this concept, nevertheless it took my about two days of thinking and reasoning and replaying this video several times until I got it .. Thank you for providing this video.

  • @parlor3115
    @parlor3115 2 роки тому

    I can't thank you enough for this. Cheers for great video!

  • @UrbanGuitarLegend
    @UrbanGuitarLegend 3 роки тому

    Thank you sir this was very useful and I always wondered what the difference was between rebase and merge. Excellent explanation!!

  • @UrbanBDKNY
    @UrbanBDKNY 4 роки тому +7

    Great tutorial. Never seen the squash command being used directly on master like that. I am used to doing an interactive rebase on the branch and squashing on the branch before merging with master
    Doing this flow with pull request would be nice to see. That is how we currently work at my job

  • @likithr.n9692
    @likithr.n9692 2 місяці тому

    Perfect demonstration, i have never understood this until now

  • @chettriyuvraj
    @chettriyuvraj 2 роки тому +2

    Awesome!
    Super simple explanation for understanding 'squash' and 'rebase'.
    Also useful in avoiding merge commits (maintaining a clear/clean history) - just use 'git pull --rebase' before pushing all local commits to repository (since git pull is effectively just a git fetch followed by git merge).

  • @MrFefeleaga
    @MrFefeleaga 4 роки тому

    Excelent explanation. One of the few tutorials that actually made me get a little bit closer to understanding the difference between the two.

  • @karthiksankaran9514
    @karthiksankaran9514 2 роки тому

    You just rebased my Git understanding. Thank you!

  • @UntamedRogueMavrick
    @UntamedRogueMavrick 2 роки тому

    I am enlightened for life about merging the branches.

  • @bhasthod1
    @bhasthod1 5 років тому

    Excellent explanation using real time example. Thanks a lot for your effort to depict the exact git merge and rebase scenario. Loved it.

    • @academind
      @academind  5 років тому

      Thank YOU for your awesome feedback Thrihesh, happy to read that you liked the video!

  • @raghugrinus4779
    @raghugrinus4779 3 роки тому

    wow truly helpful in understanding the rebase command I would have used in last project but somehow not confident on how things would be, now all my doubts are cleared now. Thanks for the video.

  • @skumarwebdev
    @skumarwebdev Рік тому

    Straight Forward & deep dive explanation. Thanks for your effort.

  • @prashanthdp9501
    @prashanthdp9501 Рік тому

    Awesome, Very well organised and explained, Thank you so much!

  • @nWestie
    @nWestie Рік тому

    Great video! been trying to understand rebase and this was one of the most helpful explainations

  • @monch2010
    @monch2010 3 роки тому

    Very nice. Teaching git is not only code but concepts as well . Thanks a lot !

  • @prashanth6848
    @prashanth6848 3 роки тому

    Just found this video randomly. Very well explained. Thanks.
    I subscribed you channel now😀.

  • @altgov3en
    @altgov3en 2 роки тому

    The pseudo-algorithm (at 10:25) for git rebase was a very good step-by-step guide showing what is going on under the hood while execution the rebase operation.

  • @unityme8898
    @unityme8898 5 років тому +2

    i guess Max and You were brothers. Best Explanation :). thank u so much !!!

    • @academind
      @academind  5 років тому +1

      We are indeed close friends, happy to read that you like the video :)

  • @iam_kundan
    @iam_kundan 2 роки тому

    Great Video !! Explanation was very clear and easy to understand.

  • @RajaSekhar-xl5gw
    @RajaSekhar-xl5gw 4 роки тому

    Thanks for such a good tutorial and i like the demonstration by picking up a scenario.

    • @academind
      @academind  4 роки тому

      Happy to read that you liked it Raja, thank you!

  • @aadlr
    @aadlr 5 років тому

    This is a very challenging subject to explain with words, and you did a great job.

  • @SabbirAhmed-kf7um
    @SabbirAhmed-kf7um 5 років тому

    Thanks a lot. Very nicely explained.

  • @anastasiia7256
    @anastasiia7256 2 роки тому

    Great explanation of the rebase, thank you.

  • @mpedzi031
    @mpedzi031 3 роки тому +4

    Great demonstration! You are really good at explaining the concepts, similar to how Max does it. The individuals here asking for more pictures in my opinion need to work more with Git to better understand the basics. The explanations were really clear, and I only have around a year and a half experience. This is not easy stuff by any means, so if you're confused, just take a step back and practice adding, committing, branching, and merging some more.

    • @cryp0g00n4
      @cryp0g00n4 2 роки тому

      I agree with you that doing your own examples will probably help you understand it better but I don't think that means the explanation was clear. If anything, I think the only thing the video did well was the naming convention for branches and commit messages for experimentation. That however means you understood it because you did it yourself not because the concept was clearly explained.

  • @annmaryjoshy9049
    @annmaryjoshy9049 4 роки тому

    Thank you for this great video. very useful.

  • @user-rr7je8lf2d
    @user-rr7je8lf2d Рік тому

    Thank you. Perfect tutorial!

  • @_the_one_1
    @_the_one_1 5 років тому +3

    Great video Manu. Thank you

    • @academind
      @academind  5 років тому +3

      Thank YOU for your awesome feedback Roland, this really means a lot to me!

  • @abdelraoufaboomar3192
    @abdelraoufaboomar3192 3 роки тому

    Awesome explanation. THANK YOU.

  • @ashwinisidhu
    @ashwinisidhu 3 роки тому

    Thanks for the easy explanation and demo.

  • @nstball18
    @nstball18 Рік тому

    Thank you for explaining clearly

  • @letsbye
    @letsbye Рік тому

    thank you, you presented this very well.

  • @abhishekaryan7575
    @abhishekaryan7575 3 роки тому

    Thanks for clarifying this concept 👍

  • @malayakumarswain1275
    @malayakumarswain1275 4 роки тому

    easiest tutorial ever. Thank u so much sir. :-)

  • @Arunkumar-gf8ht
    @Arunkumar-gf8ht 2 роки тому

    Clear video with exact points
    Very helpful

  • @nickgreen4336
    @nickgreen4336 5 років тому

    Thanks, Manu! Love your channel (I mean you and Max tho)! You are doing a great content! Hope we'll see a lot of new stuff from you, guys, in the future!

    • @academind
      @academind  5 років тому

      Thanks a lot for your great feedback Nick, this means a lot to both of us!

  • @FadimeBek
    @FadimeBek 3 роки тому

    Very clear video! Thank you!

  • @sanjitselvan5348
    @sanjitselvan5348 2 роки тому

    Detailed and clear. Thanks!

  • @deepeshmohan9165
    @deepeshmohan9165 4 роки тому

    Simple and clear. Thank you :)

    • @academind
      @academind  4 роки тому +1

      Happy to read that you liked it Deepesh, thank you :)

  • @staj
    @staj 5 років тому

    Best Explanation i've found. thanks a lot Sir! Brilliant!

    • @academind
      @academind  5 років тому +1

      Wow, reading this honestly means a lot to me, thank you very much!

    • @staj
      @staj 5 років тому

      I'm new to all things devops and coding, so I absolutely appreciate the clarity and conciseness of your explanation after going through so many other videos on youtube. This video led me to even get in touch with Max earlier today to ask about the Udemy courses. Keep up the good work Sir!

  • @pauloffborba
    @pauloffborba Рік тому

    Very well explained. Thanks!

  • @bornofdata
    @bornofdata 3 роки тому

    Best Video I have seen on Git Merge Vs Rebase!!!

  • @AlokAiden
    @AlokAiden 4 роки тому

    You're an awesome teacher !!

  • @flavioipiranga3212
    @flavioipiranga3212 2 роки тому

    Thank you for the great explanation.

  • @JonathanAdami
    @JonathanAdami 3 роки тому +1

    oh! my! god! why didn't I get that before? I completely ignored rebase, never saw the interest in it... but the way you explained it, amazing! Also instant like on --squashed! thanks for this video, really!

  • @sayantandas3511
    @sayantandas3511 2 роки тому

    very beautifully explained. thank you

  • @islamh6042
    @islamh6042 3 роки тому

    Wow! thanks for this clear video!

  • @m.yasirshakil979
    @m.yasirshakil979 2 роки тому

    Great video and the way you have explained this topic is best! i want more videos on Git thanks

  • @barjosa31blogspot83
    @barjosa31blogspot83 5 років тому

    Really good example and explanation! Thank you, Manu! Greetings to Max as well ;)

    • @academind
      @academind  5 років тому +1

      Thanks a lot for your great feedback! Max is sitting next to me, so he also read your nice greetings :)

  • @likelylogic600
    @likelylogic600 4 роки тому +8

    Tip: CMD+K clears the console in most apps, Terminal, VSCode, Webstorm, even Chrome DevTools!

  • @roy786
    @roy786 2 роки тому

    Very good video, keep up the good work. Just subscribed - thanks

  • @sathya-enjoy_lifetothefullest
    @sathya-enjoy_lifetothefullest 2 роки тому

    Amazing explanation very clearly understood

  • @erickballesteros4531
    @erickballesteros4531 3 роки тому

    super instructional! thank you! :)

  • @deepakmishra1683
    @deepakmishra1683 Рік тому

    Thanks Manuel, well explained!

  • @DreamsBoyy
    @DreamsBoyy 3 роки тому

    Hi, great video. I have one question please. What would be the difference between "git merge ..." and "git merge --squash ..."? I understand that the latter would squash all the commits of the feature branch in one commit but what about the first one?

  • @plot.python
    @plot.python 2 роки тому

    Excellent video. Thank you.

  • @leadersheir9377
    @leadersheir9377 2 роки тому

    Honestly, really helpful!

  • @Stephan.Henningsen
    @Stephan.Henningsen 4 роки тому

    I loved the naming conventions for branches and commit messages; unambiguous and to the point.

  • @MrMassmaker
    @MrMassmaker 4 роки тому

    thanks for the detailed explanation.

  •  5 років тому +17

    Excellent explanation!
    Would be a good option to rebase the feature branch, and then checking out master and this time instead of rebasing master, merge feature in master?

    • @e4r281
      @e4r281 5 років тому +4

      I was wondering the same thing.

    • @user-dv9qc1iy5q
      @user-dv9qc1iy5q 5 років тому +2

      Pedro, you can read this nice article which explains underwater rocks of this approach goo.gl/XPmzBk

    • @ranesh237
      @ranesh237 5 років тому

      Whats the difference?

    • @catwhisperer911
      @catwhisperer911 5 років тому +1

      I clean up my feature branches using interactive rebase and merge the feature branch back into development using git's default fast forward merging. This creates a very linear history which is how I like it.

  • @GingerBeker
    @GingerBeker 5 років тому

    wonderful video...perfect explaining...gratz and thanks

    • @academind
      @academind  5 років тому

      Thank you very much Ginger!

  • @divyanshjain5383
    @divyanshjain5383 4 роки тому

    helpful and hats off for the awesome explanation.

  • @amjadtbssm
    @amjadtbssm 2 роки тому

    Very nicely explained. Thanks for the good knowledge sharing