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.