Hi Giorgi,

Yes, when you commit, you will commit ALL your tracked files, not just the one you changed and 'add'ed.

However, Git being smart, it is actually recording a tree of links to the file content in the object store, so it de-duplicates all the repetitions.

Plus most of the preparatory work is done when when you 'git add' (it adds to the one file to the object store, and updates the tree linkages in the "Index"). So all it has to do at the commit stage is record the author, committer, date(s), the latest tree ref and the commit message (and update the branch tip reference pointer). Everything else is already in the object store.

In fact, the 'tree' is a heirachy of single level trees (just like a 'dir command list;-), each of which is in the object store, and all objects are known by their sha1/oid name. At the lowest level it's all rather simple and dumb (see the git(1) man page ;-), which is why it works so well.

The files locally, and the files on the remote are stored the same way, the default unit of transfer is the complete commit, so either can be used. I could say more about the RTBs (local branches that track the remote's branches..) because they are actually local. All is good.

Philip

On 16/05/2019 19:35, Giorgio Forti wrote:
If I commit ONE file Git builds a "zip" that contains the actual situation of ALL the 6 thousand of files in my C# solution? And if I check out this commithe file Git gives me back the complete situation at that moment?
This would be the solution.
This can work with files committed only locally and not pushed to the remote repository?

I have only ONE set of files, the main branch, and I am the ONLY developer ... but I inherited this project from a team.

Il giorno mercoledì 15 maggio 2019 17:54:41 UTC+2, Philip Oakley ha scritto:

    "little commits, sometimes a single file, " - Misunderstanding,
    misunderstanding, misunderstanding (I think) .

    Each commit is always all of the files. A complete 'zip'
    (metaphorically, because we don't use zip itself). When you checkout
    that commit you get them ALL back, including those that were
    changed in
    earlier commits.

    I know, the various mailing lists and log/show commands always
    appear to
    only show a diff of just those files that you changed, and omit the
    unchanged files, but each commit is still a full snapshot. Those
    diffs/patches/show are with respect to the previous commits full
    snapshot.

    It is only if you were doing different changes on different branches,
    and you wish to combine (merge) some of those different snapshots of
    those many feature snapshots that you have any extra work (i.e. you
    merge those selected commits from those time points).

    As I said, changing from centralised to distributed can make your
    'head
    explode' as all the old expectations crumble to dust...;-)

    On 15/05/2019 16:18, Giorgio Forti wrote:
    > I used Centralised VCS ... and now I don't have a unique BIG commit
    > that is "the moment" i want, I have a lot of little commits,
    sometimes
    > a single file, and I need to rebuild all the group of applicationa,
    > applications, services, DLLs, at "that moment".
    > From your answer I understand that this is impossible ... a BIG
    problem.
    > Used to have this feature, I think this is a big lack.
    >
    > I'll look at gitk, to see if it can make the search of the file
    > versions (one by one...) a little easier.
    >
    > Il giorno mercoledì 15 maggio 2019 14:39:41 UTC+2, Philip Oakley ha
    > scritto:
    >
    >     Hi Georgio
    >
    >     On 15/05/2019 12:04, Giorgio Forti wrote:
    >     > I'm relatively new to Git.
    >     > I use it from inside Visual Studio 2013, for the normal
    operations:
    >     > commit, push ...
    >     > I used and know other similar products but not Git.
    >     Similar being e.g. Mercurial (another Distributed version
    control
    >     system), or a Centralised VCS ? The change to distributed
    VCS rips up
    >     all the old expectations!
    >
    >     > I'm searching in Git a feature I used in the past in another
    >     product.
    >     >
    >     > The situation is:
    >     > I "inherited" a big Visual Studio 2013 solution under Git
    (A LOT of
    >     > files in overr 40 different projects).
    >     > This project has a remote repository somewhere.
    >     > II have full access to files, and to the remote repository.
    >     > I have a lot of changes committed locally but still NOT
    PUSHED
    >     to the
    >     > remote repository, and I cannot PUSH these changes now
    >     Do you have a personal 'fork' of the repository on a server.
    This
    >     provides you with a personal 'cloud' storage that ensures
    that your
    >     local changes - I hope you have lots of commits and
    branches....- are
    >     available in a 'backup' location
    >
    >     > (sorry for the terms, I use Git from inside Viasul Studio
    2013, I
    >     > don't know the Git correct terms)
    >     > I need to retrieve all files of this solutionAS THEY WERE
    AT AS
    >     GIVEN
    >     > DATE to rebuild that version of the projects and test.
    >
    >     This is the 'rip up' - Git doesn't care about file dates -
    rather it
    >     cares about a group of files all 'zipped' together in one
    commit. The
    >     date based file view is an XY-problem. What you really want
    is the
    >     commit that is nearest that date that represents a working
    version.
    >     >
    >     > How can I do this with Git without looking at the story of
    every
    >     file
    >     > in the project (a crazy thing to do)?
    >     > The worst of all is I probably will need to "navigate" not
    only
    >     once,
    >     > but 2-3-more times.
    >     >
    >     > Best of all would be a graphical (human!) interface to do
    this: by
    >     > command line I sure will do a disaster.
    >     the gitk tool is you friend here (it is part of the basic
    Git). It
    >     provides a simple viewer and browser for all the commits and
    files
    >
    >     >
    >     > Thanks to all
    >
    >     Philip
    >     see https://gitforwindows.org/ for a personal Git copy.
    >     >
    >     > --
    >     > 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-...@googlegroups.com <javascript:>
    >     > <mailto:git-...@googlegroups.com <javascript:>>.
    >     > To view this discussion on the web visit
    >     >
    >
    
https://groups.google.com/d/msgid/git-users/e2a1e035-fd14-4783-a2c8-600bbad09fc1%40googlegroups.com
    
<https://groups.google.com/d/msgid/git-users/e2a1e035-fd14-4783-a2c8-600bbad09fc1%40googlegroups.com>

    >    
    
<https://groups.google.com/d/msgid/git-users/e2a1e035-fd14-4783-a2c8-600bbad09fc1%40googlegroups.com
    
<https://groups.google.com/d/msgid/git-users/e2a1e035-fd14-4783-a2c8-600bbad09fc1%40googlegroups.com>>

    >
    >     >
    >    
    
<https://groups.google.com/d/msgid/git-users/e2a1e035-fd14-4783-a2c8-600bbad09fc1%40googlegroups.com?utm_medium=email&utm_source=footer
    
<https://groups.google.com/d/msgid/git-users/e2a1e035-fd14-4783-a2c8-600bbad09fc1%40googlegroups.com?utm_medium=email&utm_source=footer>

    >    
    
<https://groups.google.com/d/msgid/git-users/e2a1e035-fd14-4783-a2c8-600bbad09fc1%40googlegroups.com?utm_medium=email&utm_source=footer
    
<https://groups.google.com/d/msgid/git-users/e2a1e035-fd14-4783-a2c8-600bbad09fc1%40googlegroups.com?utm_medium=email&utm_source=footer>>>.

    >
    >     > For more options, visit https://groups.google.com/d/optout
    <https://groups.google.com/d/optout>
    >     <https://groups.google.com/d/optout
    <https://groups.google.com/d/optout>>.
    >
    > --
    > 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-...@googlegroups.com <javascript:>
    > <mailto:git-...@googlegroups.com <javascript:>>.
    > To view this discussion on the web visit
    >
    
https://groups.google.com/d/msgid/git-users/15e66318-b270-4290-b63a-3c79dfee94b6%40googlegroups.com
    
<https://groups.google.com/d/msgid/git-users/15e66318-b270-4290-b63a-3c79dfee94b6%40googlegroups.com>

    >
    
<https://groups.google.com/d/msgid/git-users/15e66318-b270-4290-b63a-3c79dfee94b6%40googlegroups.com?utm_medium=email&utm_source=footer
    
<https://groups.google.com/d/msgid/git-users/15e66318-b270-4290-b63a-3c79dfee94b6%40googlegroups.com?utm_medium=email&utm_source=footer>>.

    > For more options, visit https://groups.google.com/d/optout
    <https://groups.google.com/d/optout>.

--
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 <mailto:git-users+unsubscr...@googlegroups.com>. To view this discussion on the web visit https://groups.google.com/d/msgid/git-users/330a8a4b-4f89-409d-a472-c682b2b3e4bf%40googlegroups.com <https://groups.google.com/d/msgid/git-users/330a8a4b-4f89-409d-a472-c682b2b3e4bf%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

--
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/git-users/8a115fa6-8799-1e11-31c1-cee71c24767c%40iee.org.
For more options, visit https://groups.google.com/d/optout.

Reply via email to