I spent years thinking "isn't there some information I'm missing here??" before I discovered git's `diff3` conflict style. It's insane to me that git just shows you the result of each change (not what it was beforehand) by default. I don't know how anybody is merging anything like that. Vscode's merge tool makes this even easier 👍 I've been very excited seeing it roll into the product, knowing "proper" merge conflict resolution will be available to so many people now! I just wish the base view was enabled by default.
I can't tell you how many years I have tried or wanted to learn how to program just even the simplest of code but between just the terminology and gooeys of everything altogether it was such a whirlwind I could never wrap my head around it and by anytime I started making some progress whatever free trials cider video I was watching hit a massive pay wall and it was generally after hours of hard work and at that point you barely learned anything and you want to punch yourself in the mouth. What he just taught me in the last two lessons or only two lessons of this beginner tutorial for visual studio code and GitHub is it literally she'll shocking me right now in a great way and also quite a face-palming way as well as I think back of all the years of things are now making sense to me and what went wrong all those times I don't even know who to thank or how many times I could thank them for creating this video and putting it in whatever search terminology seoi happen to type today but just know I do and I'm pretty sure that feeling will grow exponentially
Thank you for that fancy editing. It is waaaay easier to understand than that typical video, where author shakes his microscopic (compared to screen size) cursor and says "click here"
queue 🎵 Meghan Trainor - All About That -Bass- *BASE* 😉 ( 4:18 in the video ) On topic: VS Code keeps getting better! Thanks for pointing out the "Show Base" and "Accept Combination" features. 👍
I'm pretty comfortable with using git on the terminal, but the new "Accept Combination" feature has been very helpful so far! It does feel a bit magical and I keep double-checking its results to make sure it didn't mess up, but I guess git's own automatic conflict resolution is already a piece of "magic" that I accept, so it's only fair that this is merely an extension of that. I hope this work can be upstreamed back to git!
I released a video about how to handle a conflict on vscode like... last week! But I didn't know we had the base branch view. Thanks for sharing! Good thing that I already have a wide monitor to fit all those panels 😅
@@code Hey! That would be amazing! ❤ Acutally, I think I already replied to this comment but I suppose comments with links are automatically hidden/deleted, so... let's find another way without the link 😅 If the last comment was deleted, you can find the video on my channel, it's called: Resolve Merge Conflict in Visual Studio Code (2022 Update!) Aaaand if you have 5 more minutes, a month ago I also released a video where I introduce how to contribute to the vscode repo on github, with title: How to Contribute to Visual Studio Code - 8 PRs Accepted Thank you!!
Use code lens (take current/their) & default vscode editor, it's enough, you don't need 3 window for this. To see parent use - `conflictstyle = zdiff3`
Get a conversation going about how you've been working on getting better at "threeways" and you have done them enough that you're much more comfortable with them now.
Jetbrains IDEA has had similar merge window for about 20 years. Good job, microsoft. I don't understand why microsoft couldn't add side by side merge window to vscode from the begining.
Squashing feature branch commit is a terrible suggestion. More appropriate to reorg the commit (reword, squash etc some for better organisation). Commits serve a purpose of identifying what chunk of work was done. I would hate to review such massive commits as per suggestion...
@@zaka8315 it sure works even if changes have been pushed to remote. The issue 'can' arise if you are multiple people working on the same feature branch, but this can also be easily solved. Squashing commits on a feature branch can also come in handy. When writing code, things always get messy and changes are added, modified and removed through commits. Rebasing commits on a feature branch by squashing commits can create a cleaner history of the commits for the reviewer of the PR and those looking through the master history.
When the new merge editor came out, it seemed very confusing to me. I found it difficult to use because, the diff in vscode does not always corresponds to the exact lines of changes between local and remote, so I turned it off. I might give it another try after watching this video.
This tutorial is a kind of imcomplete. We can get to the point where we resolve conflics by clicking "accept current/incoming changes" or taking in both, but the issue is the next step to complete rebasing as well as the merge of the feature branch into the main. On the left bottom, the bar showing the branch name says "~(rebasing)." How do we resolve this?
The video is really great. It helped me resolve conflicts in a super clear way. But I have a problem with the VSC interface to handle git. It's a pretty specific problem, but I think it may be a more or less common case. Suppose I have a branch with a change that generates conflicts with main, and I resolve the conflict by selecting the changes in the branch. In this case, there are no changes to include in stage and commit. I know this commit is also necessary, but in this scenario VSC has disabled the commit button since there are no changes. I can solve it with the console, typing git add . and git commit -m "merge message", but is there a way to do it from the VSC visual interface?
Thanks, this video does an excellent job explaining this. I never realized you could easily compare right to the base. I've always used git blame to see what each side did manually - what a chore. This will make it so much easier. Is this ability to open all four panels in Visual Studio proper?
Okay... I fell like I'm going crazy here, but here goes... In the code he's merging, the log will tell you that the params are all being set to equal each other, but that isn't the case in the 'current' block. By setting param1 = param2 and then changing param2 = param3, you ensure that param2 and param3 are equal, but param1 is holding the value left by param2... Am I going crazy?
My problem: Do stuff -> commit Do stuff2 -> commit Ohno, need to fix stuff in in commit. git rebase -i HEAD~2 e stuff pick stuff2 Do changes! Git commit --amend etc. CONFLICT! Now I have absolutely no idea what is meant with incoming or current. Do I always select the "best" option or what? Do I end up with stuff + things from stuff2 - commit stuff2 commit or what.. Send help.
Great explanation. But whoever invented git and the Integration in vscode didnt design it properly, its very confusing and error prone. Actually I think it should not be allowed that two peole work simulateously on the same line of code, there should be a kind of locking concept. If someone wants to edit a file it should be locked for other developers to avoid conflicts.
I think you might be missing the point a bit. There's no way of knowing who is working in the same line until there's a commit. Any implementation of that, exaggerated, would eventually just be a live coding pad. For as much as i despise the confusing nature of Git, it really is an elegant solution to this problem.
Its really bad implementation on the part of VSCode and I absolutely hate this. 1. The good functionalities are hidden inside the dropdown icon. 2. In smaller screen such as 13 inch laptop, this isn't helpful as I have to constantly scroll horizontally continuously to check the change. 3. Smart merge button is hidden. Android Studio handles this in the most efficient way by opening a window and decreasing the font size and giving all the options in the top as icons. Press smart merge and it will merge the possible merges which doesn't require your attention. Just press → to accept changes for the lines you want and x to discard them. I hope VSCode also just copies that system or gives an option to display in a seperate window.
Hi Maruf! Thank you for taking the time to make these suggestions. I've passed this on to the engineer working on the merge editor experience. We can always improve so we appreciate that you took the time to let us know what you'd like to see. Cheers!
I spent years thinking "isn't there some information I'm missing here??" before I discovered git's `diff3` conflict style. It's insane to me that git just shows you the result of each change (not what it was beforehand) by default. I don't know how anybody is merging anything like that. Vscode's merge tool makes this even easier 👍 I've been very excited seeing it roll into the product, knowing "proper" merge conflict resolution will be available to so many people now! I just wish the base view was enabled by default.
I didn't know about the "base" either until I made that video. And I've been using git for at least 10 years. Glad you like it!
@@code, we are all learning together :-)
I can't tell you how many years I have tried or wanted to learn how to program just even the simplest of code but between just the terminology and gooeys of everything altogether it was such a whirlwind I could never wrap my head around it and by anytime I started making some progress whatever free trials cider video I was watching hit a massive pay wall and it was generally after hours of hard work and at that point you barely learned anything and you want to punch yourself in the mouth. What he just taught me in the last two lessons or only two lessons of this beginner tutorial for visual studio code and GitHub is it literally she'll shocking me right now in a great way and also quite a face-palming way as well as I think back of all the years of things are now making sense to me and what went wrong all those times I don't even know who to thank or how many times I could thank them for creating this video and putting it in whatever search terminology seoi happen to type today but just know I do and I'm pretty sure that feeling will grow exponentially
You EARNED A NEW SUBSCRIBER from this immensely-useful (and timely!) video !
Well done you!
-Mark in North Aurora IL
I'm always amazed what VS Code can do. Can it resolve other types of conflicts? tabs vs spaces, blonds vs brunettes, Ukraine vs Russia, etc?
it has a problem with tabs vs spaces (jk), it should resolve the other conflicts fine, but will need a couple of plugins haha
I wasn’t aware of blondes vs brunettes conflict. What’s in the base branch?
Thank you Vscode team. These videos are extremely helpful. Keep making technical/educational videos
Thanks for the feedback! Glad it was helpful as it was not at all easy to make. But worth it!
Oh boy! Give this man a raise 👌
Thank you for that fancy editing. It is waaaay easier to understand than that typical video, where author shakes his microscopic (compared to screen size) cursor and says "click here"
All my years of confusion resolved in one video. Thank you so much!
Just learning how to turn on the base window was worth its weigh in gold. I can't believe I've missed that all this time.
The title of this video is actually justified. It IS extremely helpful.👍
queue 🎵 Meghan Trainor - All About That -Bass- *BASE* 😉 ( 4:18 in the video )
On topic: VS Code keeps getting better! Thanks for pointing out the "Show Base" and "Accept Combination" features. 👍
Thanks! Those notecards with shapes on them representing commits were a great illustration.
Yep, exactly the type of parties we have at the openSUSE Bar so thanks for the ammo ^-^
I love this kinda of content, being able to smootly go over git, allow me to go faster and confident.
thanks for this content, great job.
what a kind thing to say! thank you so much for the note.
I'm pretty comfortable with using git on the terminal, but the new "Accept Combination" feature has been very helpful so far! It does feel a bit magical and I keep double-checking its results to make sure it didn't mess up, but I guess git's own automatic conflict resolution is already a piece of "magic" that I accept, so it's only fair that this is merely an extension of that. I hope this work can be upstreamed back to git!
saved me a lot of time opening the resource-consuming source tree (If and only if the project is developed under VSCode)
From a webstorm ide I need to change to VS Code. This explains very well on how to merge conflicts on VSCode. Thank you!
Well done video bud. Love the stickies! The new Merge tool is one of the best additions to VS code in a long time.
Hi Ray! 👋
The one that pulled the triggers for me. Well explained! 🙏
Thanks a lot.. now my issue is resolved and understood the merge-conflict concept well.
Wonderful!
I also like these short bit sized videos that I don't have to set 30 minutes or more aside for.
I released a video about how to handle a conflict on vscode like... last week! But I didn't know we had the base branch view. Thanks for sharing!
Good thing that I already have a wide monitor to fit all those panels 😅
What's your video link? We'd be happy to RT or help promote. The more content the better!
@@code Hey! That would be amazing! ❤
Acutally, I think I already replied to this comment but I suppose comments with links are automatically hidden/deleted, so... let's find another way without the link 😅
If the last comment was deleted, you can find the video on my channel, it's called: Resolve Merge Conflict in Visual Studio Code (2022 Update!)
Aaaand if you have 5 more minutes, a month ago I also released a video where I introduce how to contribute to the vscode repo on github, with title: How to Contribute to Visual Studio Code - 8 PRs Accepted
Thank you!!
Makes it so much simpler! Thanks for the tip!
Note that when you rebase, Current is the changes from Origin, while incoming are the changes in my local branch. Go figure...
yes, very useful feature I have been rebasing my code change every day waiting for code review.
Oh, how I struggle with this. But now I understand a bit more about the dark art of merging conflicts.
I gave a like to this video because the visual demonstration in the beginning. 👍
This is a best video that explain how to resolve merge conflict. 👍
Now that's a title that actually fit the content ;) Cheers for the explanation
This was EXTREMELY helpful as advertised!
Great Explanation !! I could not have asked for anything better
This video is a superb headache saver. Thank you!
Thanks, a sigh of relief after watching this!!!
Liked your presentation methods! Great to see VSC does have the base view now, but I still don't think it'll move me away from Beyond Compare!
Awesome video. This really clear it up for me. I'll be using git in vscode a lot more than my third party git client.
wow the video title wasn't lying!!
Toootally I will brag about this video. In fact I'm gonna share it with my team :-)
This was an excellent demonstration! Thank you for it.
Awsome video. Thank you from Spain
cool, if base goes in the middle, I am buying new 32 inch monitor
awesome feature 😎
How did you know I like to talk about this at parties😮 are you tracking me?!
❤ The content ❤
Use code lens (take current/their) & default vscode editor, it's enough, you don't need 3 window for this.
To see parent use - `conflictstyle = zdiff3`
Very helpful, thanks VSCode!
You are welcome, Michael M
Thank you, really helpful to understand new merge editor in vscode
Get a conversation going about how you've been working on getting better at "threeways" and you have done them enough that you're much more comfortable with them now.
05:41 的意思是說 當我們已經調整完(accept changes),但我們反悔,不想accept this change,我們就"remove current"
Very nice video, thanks for making it :)
Thanks for the complete explanation.
Well explained . Thanks. Great job.
Now it really make sense.
Jetbrains IDEA has had similar merge window for about 20 years. Good job, microsoft. I don't understand why microsoft couldn't add side by side merge window to vscode from the begining.
This is why you should ALWAYS rebase before a PR and before merging. And... squash your feature branch commits to make any conflicts easy to resolve.
this sounds like it may be very helpful but can you please explain how a rebase and squash help with with potential merge conflicts?
Any video/article on this to refer ?
Squashing feature branch commit is a terrible suggestion.
More appropriate to reorg the commit (reword, squash etc some for better organisation).
Commits serve a purpose of identifying what chunk of work was done.
I would hate to review such massive commits as per suggestion...
What's the meaning of rebase?
@@zaka8315 it sure works even if changes have been pushed to remote. The issue 'can' arise if you are multiple people working on the same feature branch, but this can also be easily solved. Squashing commits on a feature branch can also come in handy. When writing code, things always get messy and changes are added, modified and removed through commits. Rebasing commits on a feature branch by squashing commits can create a cleaner history of the commits for the reviewer of the PR and those looking through the master history.
I learned lots -- great video.
Only git command I use from terminal is git merge --quit
For anything else I use git graph extension. It is so essential for me.
was looking for that base, Tnx.
Thanks, this is well explained 🙏
Fantastic explanation. Thank you!
Amazing. 10/10
Superb video!
Any strategies/suggestion for when you have thousands of merge conflicts to compare and only understand some of the commits?
thank you , great video well explained
Excellent! 👍
When the new merge editor came out, it seemed very confusing to me. I found it difficult to use because, the diff in vscode does not always corresponds to the exact lines of changes between local and remote, so I turned it off. I might give it another try after watching this video.
I thought I had git figured out until I had to work on the same code with other people. The confusion was indescribable
thank you , very helpful
thanks this was very helpful
very helpful thanks
Thank you very much!!!
This tutorial is a kind of imcomplete.
We can get to the point where we resolve conflics by clicking "accept current/incoming changes" or taking in both, but the issue is the next step to complete rebasing as well as the merge of the feature branch into the main.
On the left bottom, the bar showing the branch name says "~(rebasing)." How do we resolve this?
The video is really great. It helped me resolve conflicts in a super clear way. But I have a problem with the VSC interface to handle git. It's a pretty specific problem, but I think it may be a more or less common case. Suppose I have a branch with a change that generates conflicts with main, and I resolve the conflict by selecting the changes in the branch. In this case, there are no changes to include in stage and commit. I know this commit is also necessary, but in this scenario VSC has disabled the commit button since there are no changes. I can solve it with the console, typing git add . and git commit -m "merge message", but is there a way to do it from the VSC visual interface?
Thanks Burke 🙏
why vscode not show conflict window ?? any help
What a great video
Thank you!
Thanks for this
what is extension to support this? my interface is quite different with yours. there are no option like "accept incoming change" etc.
Thanks, this video does an excellent job explaining this. I never realized you could easily compare right to the base. I've always used git blame to see what each side did manually - what a chore. This will make it so much easier. Is this ability to open all four panels in Visual Studio proper?
Fantastic!
Git mergetool --tool=(beyond compare/meld/ any comparison tool)
All your base are belong to us!
It's all about the base
nice explanation, but why your iris is showing square ? 😉
shouldn't base be enabled by default?
Okay... I fell like I'm going crazy here, but here goes...
In the code he's merging, the log will tell you that the params are all being set to equal each other, but that isn't the case in the 'current' block. By setting param1 = param2 and then changing param2 = param3, you ensure that param2 and param3 are equal, but param1 is holding the value left by param2... Am I going crazy?
Of course, I'm going to brag about this at parties.
This seems like vscode accepting Jetbrains merge editor as the way to resolve merge conflicts
Bruh this simple "Abort merge" made me rage quit coding for a week
This whole time VS Code was abstracting the base commit away from us 😂
🫣
My problem:
Do stuff -> commit
Do stuff2 -> commit
Ohno, need to fix stuff in in commit.
git rebase -i HEAD~2
e stuff
pick stuff2
Do changes!
Git commit --amend
etc.
CONFLICT!
Now I have absolutely no idea what is meant with incoming or current. Do I always select the "best" option or what?
Do I end up with
stuff + things from stuff2 - commit
stuff2 commit
or what..
Send help.
Super
Based
thank god for abort merge
Great explanation. But whoever invented git and the Integration in vscode didnt design it properly, its very confusing and error prone. Actually I think it should not be allowed that two peole work simulateously on the same line of code, there should be a kind of locking concept. If someone wants to edit a file it should be locked for other developers to avoid conflicts.
I think you might be missing the point a bit. There's no way of knowing who is working in the same line until there's a commit. Any implementation of that, exaggerated, would eventually just be a live coding pad. For as much as i despise the confusing nature of Git, it really is an elegant solution to this problem.
Git .. the Muddiest Splash Page ever made. It really doesn't need to be this cryptic and difficult to use a memory card. smh
code ai guide please
I really hate the new editor. Just let me edit text. I don't want to mess around with a slow, clunky interface.
Its really bad implementation on the part of VSCode and I absolutely hate this.
1. The good functionalities are hidden inside the dropdown icon.
2. In smaller screen such as 13 inch laptop, this isn't helpful as I have to constantly scroll horizontally continuously to check the change.
3. Smart merge button is hidden.
Android Studio handles this in the most efficient way by opening a window and decreasing the font size and giving all the options in the top as icons. Press smart merge and it will merge the possible merges which doesn't require your attention. Just press → to accept changes for the lines you want and x to discard them. I hope VSCode also just copies that system or gives an option to display in a seperate window.
the better option may be to just open all 4 “files” in separate windows
Hi Maruf! Thank you for taking the time to make these suggestions. I've passed this on to the engineer working on the merge editor experience. We can always improve so we appreciate that you took the time to let us know what you'd like to see. Cheers!
If you are saying that VS Code just now discovered the concept of base, that’s not really a positive.
Sorry. You lost me on the concept. Thank you for trying though.
If you like this comment like this comment, like this comment.