On Fri, 11 Oct 2013 03:53:58 -0700 (PDT)
Akira Tsuchiya <akira...@gmail.com> wrote:

> I am new to Git and curious about the connectivity between a local PC
> and a remote Git server.
> I want to know whether it is possible to upload local files on a
> Windows PC to a remote Linux Git repository
> or look into the files on a remote repository.
> In Subversion, you can do it using http, https, svn, and svn+ssh.
> Which protocols does Git have?
> And are they as useful as Subversion protocols?

First off, you have to get under your skin that Git is a distributed
version control system (DVCS), with the stress on the word
"distributed".  Understanding this well should make reasoning about
remote Git repositories simpler.

A Get repository kept on your PC is completely self-contained, and
*does not* require any sort of server "to upload files" -- all commits
are done locally, and "uploading" (called "pushing" in Git, and in most
other DVCSes) of changes is a voluntary step which you might or might
not do.  You can push and fetch changes from *any number* of remote
repositories, which is in stark contrast to centralized systems like

As to connectivity, noawdays Git could be set up to use these protocols:

* SSH.  This one is usually considered to be a de-facto standard
  protocol.  All you have to do to make it work is to have both Git
  and SSH installed on the target server because there's no special
  "Git daemon" involved in this case: the local Git process just makes
  an SSH connection to the remote machine, tells SSH to spawn
  a special Git helper process there, and then talks with that process.

  You can either have a real system account on the target machine for
  each of your Git developers for accessing it it via SSH [1] or
  use a specialized front-end tool like gitolite or gitosis.

* HTTP[S].  This requires a properly set up web server with CGI support
  enabled.  Authentication is done using the web server's means.

* "Native" Git protocol, used directly.  This is handled by a special
  process, git-daemon, run either as a daemon or via an inetd
  superserver.  It does not provide any sort of authentication, so
  typically this access is read-only.

There's no way to inspect/fetch individual files in a remote repository
using Git only -- this is not a task for Git.  A typical way to inspect
what a remote repository has is to fetch the required bits of history
from it into the local repository and study them there.  Inspecting
could be done either by plain command-line Git tools, or its standard
GUI history browser, gitk, or using one of numerous GUI front-ends
available for different platforms.  If you still need to view the
history without downloading anything, you should use a web front-end
tool, with gitweb being the most popular one and cgit being super-fast
(runs git.kernel.org).

Note that there exist "turn-key" solutions which provide "Git hosting"
of various degreed of "completeness" -- that is, they typically include
an administrative web front-end, repository browsers etc and also
serve their repositories to Git clients.  A few names for you to google:
gitblit, gitorious (runs gitorious.org), gitlab, girocco (runs

1. https://groups.google.com/d/msg/git-users/l3QR6b9sAPs/koiAilcot_4J

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/groups/opt_out.

Reply via email to