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

我可以把.git复制到另一个目录吗?,git,Git,我继承了一个存储在CVS中的项目。以前的开发人员在他的工作目录中有大量未提交的更改,包括删除大量文件,我想检查一下。这是我的计划: cvs签出_项目 接下来,用_项目的原始状态初始化git回购 将新的.git复制到另一个工作目录中 普雷斯托!所有删除/更改都显示为未老化的差异 这一开始看起来是可行的。我应该担心的主要陷阱是什么?是的,那就行了。当然,您也可以执行相反的操作-删除除.git之外的所有内容,并从其他位置粘贴文件。这应该可以正常工作,但您可能需要尝试运行git fsck--full,以

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

  • cvs签出_项目
  • 接下来,用_项目的原始状态初始化git回购
  • 将新的.git复制到另一个工作目录中
  • 普雷斯托!所有删除/更改都显示为未老化的差异

  • 这一开始看起来是可行的。我应该担心的主要陷阱是什么?

    是的,那就行了。当然,您也可以执行相反的操作-删除除
    .git
    之外的所有内容,并从其他位置粘贴文件。

    这应该可以正常工作,但您可能需要尝试运行
    git fsck--full
    ,以验证数据库中对象的连接和有效性。通过比较,还可以看到堆栈溢出问题。这是一个稍微不同的场景,但相对来说是可比较的。

    我一直在做类似的事情。我使用GIT跟踪大型SVN项目中的多个发布和多个分支。该项目有约200个SVN模块,每个模块位于“src”的子目录中。当我启动GIT存储库时,我签出了项目的v9.4.4,添加了“GIT init”和.gitignore和.gittributes,添加了“GIT add-a”和“GIT commit-m”v9.4.4。然后我将.git移出项目,并创建了一个指向它的符号链接。当v9.4.5发布时,我检查了它,向现在共享的.git目录添加了一个符号链接,添加了.gitignore和.git属性,执行了“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”和“commit”。

    我相信这与从git工作副本中删除所有文件和从CVS存储库中粘贴文件是一样的。这应该会起作用,并向您展示所做的所有更改。感谢您描述您的具体经历。