31

I am planning to switch from SVN to git. With svn I just copy my repo folder when I want to back it up. However git doesn't have one so what do I do?

Should I create a clone on a separate drive and update by pulling from my project? Then I can burn/archive this folder and it will have all the history?

This is probably obvious but I want to make sure when it comes to backups. I still pretend there is a root repository.

1

5 Answers 5

15

You just copy it. git does use a repo folder, it's just hidden from normal directory views. (The folder is named .git on *nix systems, so it only appears if you use ls -a. I assume that it sets the "hidden" attribute in Windows, but I've never used git in a Windows environment, so I'm not certain about how it's handled there.)

4
  • Theres a couple project files in my trunk i ignore. So i literally can copy it? (i'll assume it works the same way as linux). So is clone just a file copy? i guess if i pull all the data i want is in the folder. I checked there are .git files but there are .svn files in my svn trunk and didnt think to check if history data was in there
    – user3109
    Dec 8, 2010 at 11:32
  • 2
    On Windows, it's still .git, with the "Hidden" attribute. Dec 8, 2010 at 12:25
  • 1
    @acidzombie24: The .git directory contains the entire repository state, including the history. (That's the "distributed" part.) Dec 8, 2010 at 12:27
  • 5
    @grawity: its more the "selfcontained" part, the distributed part is when you exchange diffs between the selfcontained repositories :)
    – akira
    Dec 8, 2010 at 12:49
24

The akira answer is correct, but you can add --mirror to create a bare repo (for a slightly smaller backup).

We use the following strategy (almost exactly):

git clone --mirror yourrepo backup.repo
tar cjf backup.repo.tar.bz2 backup.repo
scp backup.tar.bz2 ssh://somewhereelse

Then, to recover from your backup:

tar xjf backup.repo.tar.bz2
git clone backup.repo yourrepo
1
  • 3
    This is helpful, thanks. How do I use the backed-up repo to restore the working tree? Nov 7, 2011 at 11:49
10

I'm using git bundle. For making a copy file (one backup file) execute:

git bundle create backup.bundle master

To restore the repository with branch master simply clone the backup.bundle file:

git clone backup.bundle -b master my-project
2

create a new clone somewhere else:

 % git clone yourepo somewhereelse

btw, git has a repo folder, you can locate it in your working copy underneath the subdirectory .git. every working copy has that "repo folder".

1
  • 10
    I do not think a clone is acceptable as a backup, as it is not an exact copy. At least the remote branches of the cloned repo will be missing in the clone, and the branches of the cloned repo will appear as remote branches in the clone.
    – sleske
    Nov 2, 2011 at 19:36
-1

I don't want to repeat other answers (backing up .git directory is a good start that should work well if you're only person working on repo) so I'll just add that you can try our github backup
Full disclosure: I work for company that is making this backup solution.

You must log in to answer this question.