我可以将.git复制到另一个目录吗?

时间:2012-04-17 23:34:51

标签: git

我继承了存储在CVS中的项目。以前的开发人员在他的工作目录中有大量未提交的更改,包括删除大量文件,我想检查。这是我的计划:

  1. cvs checkout the_project。
  2. 关注the remote cvs / local git workflow,使用the_project的原始状态初始化git repo。
  3. 将新的.git复制到另一个工作目录中。
  4. 的Presto!所有删除/更改都显示为未分期差异。
  5. 这最初看起来会起作用。我应该担心哪些重大缺陷?

3 个答案:

答案 0 :(得分:4)

我总是做类似的事情。我使用GIT跟踪大型SVN项目中的多个版本和多个分支。该项目在'src'的子目录中有~200个SVN模块。当我启动GIT存储库时,我检查了项目的v9.4.4,添加了一个'git init'.gitignore和.gitattributes,做了一个'git add -A'和'git commit -m'v9.4.4'。然后我 .git移出项目,并为其创建了一个符号链接。当v9.4.5版本出现时,我检查了它,添加了一个符号链接到现在共享的.git目录,添加了.gitignore和.gitattributes,做了一个'git add -A'和'git commit -m'v9。 4.5' 。此时,我有一个GIT存储库,它符号链接来自两个目录。

使用此设置,您可以执行任何不接触工作目录的git操作。因此,对于我的应用程序,'git diff v9.4.4..v9.4.5'效果很好。当然,您也可以执行触及索引和工作目录的git操作,但是您需要注意该存储库是您正在发布的版本的正确提交。

我也将它用于多个分支。在这种情况下,使用'git symbolic-ref HEAD refs / heads / a-branch'来更改分支而不用触摸工作目录是至关重要的。因此,当我的项目版本s3出现时,我做了一个'git branch s3 v9.4.4',创建了我的.git符号链接,做了'git symbolic-ref HEAD refs / heads / s3'并跟着它添加了'add'和'提交'。

答案 1 :(得分:2)

这应该没有问题,但您可能希望在执行此操作后尝试运行git fsck --full以验证数据库中对象的连接性和有效性。相比之下,另请参阅Stack Overflow问题"Can I copy a Git working copy onto another machine?"。这是一个略有不同的情况,但相对可比。

答案 2 :(得分:0)

是的,那会有用。你当然也可以这样做 - 删除.git以外的所有内容并粘贴其他地方的文件。