
This is git merge scenario. When I merge, New merge commit is created, so if I go back from New merge commit, I can see the scheduled history of all Master and Feature branch commits till Common base. This is the scenario I don't understand: If I delete Feature branch, I think Feature branch commits will be deleted, But the reality is that when I am standing on New merge commit, after deleting Feature branch, I can still see Feature branch commits when I type git log. How is that possible? Am i mistaking something?
As mentioned in the comments, a branch is just a note, a bookmark.
If you dig a bit in the .git directory (which I recommend you to, for educational purposes), you will see a refs/heads directory. It will contain one file per branch that you have locally (the remote branches are stored in refs/remotes).
If you open one of these files, you will see it contains a single line: the hash of the last commit the branch points to.
Deleting a branch is effectively just removing the matching file in refs/heads. Which is why deleting a branch does not affect the commits "of the branch" (commits don't really belong to a branch).
As a result, you can also (again, as educational purposes only, I'd not recommend to do that in a daily workflow of course) create a branch foo by creating the file refs/heads/foo with as content the full hash of the commit you want the branch to point to.
As a second result, as soon as a branch is merged, there is no reason to keep it around "in case".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With