Mark (and all),

Thanks very much for your help!  I think I've got it working now, and 
reviewing what you wrote helped me realize what I had missed, basically the 
step of "naming" the bare / remote repository with =git remote add=.

I thought I'd record (on the list) more precisely what I actually did both for 
my own records and for posterity.

I had to sort of translate what you did into what I needed to do--a major 
difference is that the code I want to work on is maintained in a Mercurial 
repository upstream--I don't need to or plan to push my changes back up to 
there until I've pretty much accomplished what I want to accomplish, and, at 
that point, I'll just make a patch file to send.

A more minor difference is that I need to work on two bodies of code, so I 
needed two working repositories and two corresponding local backup 
repositories, but I will show only the steps for one of them here.

I'm starting with a working repository created in /rhk03/sciscint_git/scite, 
the code body downloaded as a tarball, opened in /rhk03/sciscint_git/scite, 
and then git committed (into /rhk03/sciscint_git/scite/.git).  My intent is to 
setup a bare repository in /back03/sciscint_git/scite/git for regular pushes 
for backup.

Note that all asterisk are extraneous--they are a means of bolding text in my 
own notetaking system.

<*set up a parent directory on filesystem back03 for the bare / remote / backup 
repositories and move to it*>
=
rhk@s31:/*back03*$ mkdir sciscint_git
rhk@s31:/back03$ cd sciscint_git
=

<*create an empty directory under that parent directory and initialize it as 
an (empty) git repository (git init --bare <remote_subdirectory>)*>
=
rhk@s31:/*back03/sciscint_git$ git init --bare scite_remote/git*
Initialized empty Git repository in /back03/sciscint_git/scite_remote/

rhk@s31:/back03/*sciscint_git$ ls scite_remote/git*
branches  config  description  HEAD  hooks  info  objects  refs
=

<*name the backup bare repository as a remote of the working repository (from 
within the working repository on filesystem rhk03)*>
=
rhk@s31:/back03/sciscint_git/$ cd rhk03/sciscint_git/scite
rhk@s31:/*rhk03*/sciscint_git/*scite$ git remote add scite_remote 
/back03/sciscint_git/scite_remote/git*
=

<*if you make a mistake in naming (I made several, fixed since)*>
rhk@s31:/rhk03/sciscint_git/scite$ git remote remove <bad repository name>

<*to see (names of) remotes for a repository*>
rhk@s31:/rhk03/sciscint_git/scite$ git remote

<*first push from working repository to remote (backup) repository--first a dry 
run*>
=
rhk@s31:/*rhk03*/sciscint_git/*scite$ git push  --dry-run* --set-upstream 
scite_remote master
To /back03/sciscint_git/scite_remote/git
 * [new branch]      master -> master
Would set upstream of 'master' to 'master' of 'scite_remote'
rhk@s31:/rhk03/sciscint_git/scite$ 

rhk@s31:/*rhk03*/sciscint_git/*scite$ git push --set-upstream scite_remote 
master*
Counting objects: 302, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (301/301), done.
Writing objects: 100% (302/302), 979.01 KiB | 0 bytes/s, done.
Total 302 (delta 26), reused 0 (delta 0)
To /back03/sciscint_git/scite_remote/git
 * [new branch]      master -> master
Branch master set up to track remote branch master from scite_remote.
=

<by George, *I think I've got it (but not sure how to do the next push, yet)--
I presume that unless I create a new branch (which I don't think I plan to do) 
I just continue to push "master"*>



On Monday, February 12, 2018 12:42:37 PM Mark Waite wrote:
> On Mon, Feb 12, 2018 at 9:28 AM <[email protected]> wrote:
> > I'm a newbie to git, but from what I've learned so far, I want to have
> > both a
> > working git repository and a "bare" git repository for some development I
> > want
> > to do.
> > 
> > I've seen two ways to create a bare repository (iirc, init --bare ... and
> > clone --bare ...) , and I've had a few problems using those so far.
> > 
> > I'm wondering if a third way will work--I would propose to copy the
> > entire contents of my working repository to another directory, then
> > delete all that
> > is not under the .git directory, and then rename the .git directory to
> > git.
> 
> That would probably work, but I think there is an easier way to resolve
> your concern for losing work from your working repository.
> 
> Create a bare repository cloned from the origin repository
> $ mkdir -p ~/git/bare
> $ cd ~/git/bare
> $ git clone --bare git@server:directory/repo.git
> 
> Create a working repository cloned from the origin repository (reference
> the bare repository if the repository is large)
> $ mkdir -p ~/git
> $ cd ~/git
> $ git clone --reference ~/git/bare/repo.git git@server:directory/repo.git
> 
> Add the bare repository as a remote of the working repository
> $ cd ~/git/repo
> $ git remote add bare ~/git/bare/repo.git
> 
> Make changes in the working repository
> $ git checkout -b feature-branch
> $ git commit -m "Your message" your-file
> 
> Push changes to both the origin repository and the bare repository
> $ git push origin --set-upstream feature-branch
> $ git push bare
> 
> That sequence keeps a separate local git repository in the ~/git/bare/
> directory in addition to the origin repository.
> 
> However, it has the negative that the separate copy is only updated if you
> "git push bare".
> 
> I've used the technique with large repositories that I didn't want to clone
> entirely from the origin after making some major mistake in the working
> repository.
> 
> Mark Waite
> 
> AFAICT, this should work (although maybe I need to completely remove the
> 
> > .git
> > directory level and move it to the parent).
> > 
> > In other words, assume I have:
> >    .../scite with a work space and a .git directory
> > 
> > I would plan to copy this to:
> >    .../back/scite with no workspace but a git directory
> > 
> > or:
> >    .../back/scite with no workspace and the content of the git directory
> > 
> > here
> > (no git subdirectory)
> > 
> > Comments?
> > 
> > Am I setting a trap for myself?
> > 
> > Some background:
> > 
> > I am paranoid about losing work, and having a hidden directory (.git)
> > where I
> > am doing development makes me more paranoid (in the past, I have done
> > things
> > like delete directories with hidden subdirectories or files because I
> > forgot
> > about the hidden stuff).  So, as I develop, after I commit to the
> > .../scite/.git repository, I plan to push to the .../back/scite
> > repository.
> > 
> > --
> > 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 [email protected].
> > For more options, visit https://groups.google.com/d/optout.

Reply via email to