On 2016-05-22, at 9:31 AM, Sharan Basappa <sharan.basa...@gmail.com> wrote:
> Dear Philip, Others, > > Thanks a lot. I have some follow-up questions. > > I am using a simple scenario to get additional clarity. > > 1) I have 4 files in my branch (a,b,c,d) > 2) I modify a > 3) I add a > 4) I modify b,c > 5) I add b,c > 6) I commit > 7) I modify d > 8) I commit d > 9) I push to remote > > Does step 6) above result in single commit object (single SHA reference) or > two? One commit object. That commit object contains (eventually) a full directory tree reference to every file in the project as of that commit. Three files have been changed, so three SHA references are different. Because of that, each node that describes a directory will differ, so everything above that will have a new blob/node describing the files and subdirectories below that. > From a developer engineer's perspective, what does commit signify? Does it > mean something key development is complete? > I ask this question to understand when a developer would do some development > but would make multiple commits. Depends on your workflow. Some people say "commit early, commit often". Some people say "commit when it compiles" I personally do "branch, then commit early, commit often, merge back when it passes tests". (Any given commit on the subbranch will probably compile, but almost certainly has half-implemented features that just won't work.) Some people take this a step further, and say "Do your work on a branch, then commit a single squashed commit of the whole branch". As far as I can tell, not only is there no "one true workflow", trying to figure out what workflow is right for the situation you are in is exceedingly non-trivial, and I have not seen it well-addressed in any of the guides for learning GIT that I have seen yet. > Similarly, if during push step, if it is found that remote is ahead of local > (and most likely requires merging) then does it mean anything wrt to the > already computed SHA? > I assume that already computed SHA has no meaning. I am not the person to ask here. My pushes only go to a repository I work on. I would *love* to see a good writeup on how to manage, and contribute to, a repository that will accept updates from many people doing pull requests, letting you update as the master does, without losing your own "features in progress". Yes, this is supposed to be git's area, but trying to understand from the docs how to manage it, especially if it later turns out that the "upstream master" is going off in an incompatible direction, and you want to take over managing a fork that is doing something else, and accepting pull requests from others. It doesn't help that as far as I can tell, "Pull Requests" are actually things that Github and Bitbucket do that are not in the core base git. --- Entertaining minecraft videos http://YouTube.com/keybounce -- You received this message because you are subscribed to the Google Groups "Git for human beings" group. To unsubscribe from this group and stop receiving emails from it, send an email to git-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.