Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
版本控制:从zip到git_Git_Version Control - Fatal编程技术网

版本控制:从zip到git

版本控制:从zip到git,git,version-control,Git,Version Control,我有三个名为[1,2,3]的压缩文件夹,每个文件夹都包含同一个项目,1是最早的,3是最新的。我正在寻找一种方法将所有这些合并到3个git提交中,提交最多的3个是文件夹内容 我想我可以做到以下几点: 解压缩1 从1获取内容并将其放入新文件夹 git init git add-A git提交-m“首次提交 解压2 将新文件夹中的内容替换为2中的内容 git add-A git提交-m“第二次提交 解压2 将新文件夹中的内容替换为3中的内容 git add-A git提交-m“第三次提交 有人能告诉我

我有三个名为[1,2,3]的压缩文件夹,每个文件夹都包含同一个项目,1是最早的,3是最新的。我正在寻找一种方法将所有这些合并到3个git提交中,提交最多的3个是文件夹内容

我想我可以做到以下几点:

  • 解压缩1
  • 从1获取内容并将其放入新文件夹
  • git init
  • git add-A
  • git提交-m“首次提交
  • 解压2
  • 将新文件夹中的内容替换为2中的内容
  • git add-A
  • git提交-m“第二次提交
  • 解压2
  • 将新文件夹中的内容替换为3中的内容
  • git add-A
  • git提交-m“第三次提交

  • 有人能告诉我这是否是最好的方法吗?

    是的。请确保完全替换内容,并捕获所有添加和删除的文件。

    每次运行
    git init
    ,您都在创建一个空存储库

    如果只有三个文件夹,而您只执行了一次,那么这将起作用(如果您省略
    git init
    )。请确保不要删除
    .git
    文件夹


    您甚至可以解压这三个文件夹,将
    .git
    文件夹依次移动到每个文件夹中,并在每个单独的文件夹中提交,最后一个文件夹是新存储库的开始。

    以下是我的方法

    提交版本1

    mkdir MyProj
    cd MyProj
    git init
    # unzip version1 into MyProj
    git add -A
    git commit -m "Version 1"
    
    提交版本2

    # delete everything but the .git directory in MyProject
    # unzip version2 into MyProj
    git add -A 
    git commit -m "Version 2"
    
    提交版本3

    # delete everything but the .git directory in MyProject
    # unzip version2 into MyProj
    git add -A 
    git commit -m "Version 2"
    

    对zip文件的版本3重复上述操作。

    将三个zip文件解压缩到三个不同的目录中

    在第四个目录中初始化git repo

    然后利用,它允许您从git repo执行git命令,但内容位于所述git repo之外:

    cd /your/git/repo
    git add --work-tree=/path/to/zip1 -A .
    git commit -m "Add v1"
    git add --work-tree=/path/to/zip2 -A .
    git commit -m "Add v1"
    git add --work-tree=/path/to/zip3 -A .
    git commit -m "Add v3"
    

    换句话说,您可以添加不同的内容,而无需从git目录移动!

    除了第一步之外,git init步骤似乎没有必要。额外的git init是复制和粘贴错误的地方,谢谢!