从备份目录中创建一个Git仓库

4

我有几个备份目录,希望将它们放入git。

这些目录是:

web_backup_2012-03-07
web_backup_2012-06-03
web_backup_2012-06-21
web_backup_2012-06-25
web_backup_2012-07-02
web_backup_2012-07-15
web_backup_2012-07-21

现在我想把它们放到git上,最好的方式是什么?(每个备份大约1.1G,20k文件。)

以下是我认为应该做的:

• 进入最早的备份目录。

git init
git add .
git commit . -m"initial commit"

然后将 .git 文件夹移动到第二个文件夹,然后执行。
git add .
git commit . -m"commit. ‹date here›"

重复上述步骤。

然后,在最后一个目录中,我完成了。我可以删除所有先前的备份目录。(然后我可以将.git目录移动到我的当前工作web目录中并重复此过程。这样,我的具有历史记录的web目录全部在git中。)

根据我的测试,每个步骤需要10分钟。

我对git不熟悉。如果有人能告诉我是否/如何添加日期标签(如果这对此有好处),那就更好了。

是否有更好的方法?


你想列出一个Git仓库中的所有备份文件,还是每个备份都单独列出? - Robert H
2
我认为你可能会遇到备份之间已删除文件的问题。 - mirk
@mirk 啊,是啊。我该如何解决已删除的文件?(除了痛苦地手动执行 diff 和 git rm) - Xah Lee
@RobertH 是的,全部在一个代码库中。 - Xah Lee
@XahLee 看看我的回答,应该能让你快速上手。不过要注意的是,已删除的文件仍然需要费一番功夫来处理... - Robert H
2个回答

4
与其使用git add . 命令会一直添加文件,建议使用git add -A命令,它可以“查找新文件并将修改的内容提交到暂存区,同时删除不再工作树中的文件”(来自git文档)。
我会编写类似以下脚本的程序:
#!/bin/bash
git init
GIT_DIR=$(pwd)
for dir in $(find . -maxdepth 1 -name web_backup_\* | sort); do
  pushd $dir
  git add -A
  git commit -m "Backup for $dir."
  git tag $dir
  popd
done

2
与其明确地移动.git目录(以及所有的簿记,如跟踪lastdir),环境变量GIT_DIR(或命令行开关--git-dir)是一种更可靠的方法。只需在每个备份目录运行添加/提交/标记序列之前将GIT_DIR设置为.git目录的位置即可。 - Greg Hewgill

1
如果您想在一个目录中创建包含所有备份的存储库,请执行以下操作:
1. cd to parent directory and run git init
2. run git add *
3. run git commit -a -m "initial commit" 
4. run git push -u <repository> master 

如果您想使用Bitbucket作为提供者的完整示例,可以执行以下操作:

git init
git remote add origin ssh://git@bitbucket.org/username/repositoryname.git
git add *
git commit -a -m "Initial commit" 
git push -u origin master 

然后,当您想要将更改推送到存储库时,切换到父目录并执行以下操作

 git commit -a -m "commit message"
 git push -u origin master

此外,如果您想查看有没有任何更改,您可以在父存储库目录中使用以下命令:git status
要查看更改的具体内容,请尝试从父目录运行gitk

谢谢。请纠正我如果我错了,这将把所有备份目录放入一个Git存储库中,每个备份目录都是一个子目录,对吗?我希望每个备份都成为历史提交记录。 - Xah Lee
正确,它将镜像您在本地目录上的设置。 - Robert H

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接