Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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
现有3文件夹结构的新Git回购/分支机构(理论)_Git - Fatal编程技术网

现有3文件夹结构的新Git回购/分支机构(理论)

现有3文件夹结构的新Git回购/分支机构(理论),git,Git,我正在尝试验证如何从现有的3个文件夹结构(dev、beta、prod)中设置git回购。我了解输入零件的技术/命令。但是如何从3个文件夹中创建3个分支呢。不幸的是,这些都不是我们可以在git上重新开始的新项目,有很多文件已经在使用中。dev文件夹与beta/prod文件夹有很大的不同 我们的想法 在prod文件夹中创建回购,使其成为“主”分支 然后创建一个分支“release”,这将与master匹配(我们现在没有beta测试,所以忽略/删除beta文件夹) 接下来创建一个“dev”分支 从文件

我正在尝试验证如何从现有的3个文件夹结构(dev、beta、prod)中设置git回购。我了解输入零件的技术/命令。但是如何从3个文件夹中创建3个分支呢。不幸的是,这些都不是我们可以在git上重新开始的新项目,有很多文件已经在使用中。dev文件夹与beta/prod文件夹有很大的不同

我们的想法

  • 在prod文件夹中创建回购,使其成为“主”分支
  • 然后创建一个分支“release”,这将与master匹配(我们现在没有beta测试,所以忽略/删除beta文件夹)
  • 接下来创建一个“dev”分支
  • 从文件夹/dev分支?中删除文件
  • 从?中的dev文件夹复制文件
  • 跟踪、阶段、提交
  • 步骤4-6是相关部分,我不知道删除所有文件然后从dev文件夹中复制是否会丢失任何内容

    理论上,这将为我们提供三个分支,我们可以从中提取/克隆到本地机器。从dev合并到release和prod必须是交互式的,我认为这是可以做到的

    任何建议都是非常感谢的,即使是“不要等,不要那样!”的大叫和尖叫

    创建一个中央存储库 首先创建一个存储分支的存储库。在本例中,我将使用文件系统,但实际上,它可能托管在远程服务器上:

    $ git init --bare project.git
    
    添加prod文件夹 更改到您的
    prod
    目录并在那里初始化git存储库:

    $ cd prod
    $ git init
    
    $ cd dev
    $ git init
    
    创建名为“prod”的分支:

    添加所有文件:

    $ git add .
    $ git commit -m 'added prod files'
    
    $ git add .
    $ git commit -m 'added dev files'
    
    遥控器:

    $ git remote add origin /path/to/project.git
    
    和推送:

    $ git push origin prod
    
    $ git push origin dev
    
    添加dev文件夹 更改到dev文件夹并在其中初始化git存储库:

    $ cd prod
    $ git init
    
    $ cd dev
    $ git init
    
    添加远程存储库:

    $ git remote add origin /path/to/project.git
    
    $ git clone -b prod /path/to/project.git
    $ cd project
    
    创建一个新的
    dev
    分支:

    $ git checkout -b dev 
    
    添加所有文件:

    $ git add .
    $ git commit -m 'added prod files'
    
    $ git add .
    $ git commit -m 'added dev files'
    
    和推送:

    $ git push origin prod
    
    $ git push origin dev
    
    添加beta文件夹 对您的beta文件夹重复相同的过程:

    $ cd beta
    $ git init
    $ git remote add origin /path/to/project.git
    $ git checkout -b beta
    $ git add .
    $ git commit -m 'added beta files'
    $ git push origin beta
    
    克隆主存储库 从裸存储库创建工作副本:

    $ git remote add origin /path/to/project.git
    
    $ git clone -b prod /path/to/project.git
    $ cd project
    
    这里的
    -b prod
    导致git签出
    prod
    分支。 查看可用的分支:

    $ git branch -a
    * prod
      remotes/origin/beta
      remotes/origin/dev
      remotes/origin/prod
    

    现在你已经全部设置了。

    你必须考虑你所描述的文件夹更好地映射到单独的存储库而不是单个存储库中的分支,特别是如果 DEV文件夹与你的状态明显不同,那么,

    您可以为每个分支创建一个repo,将它们作为远程对象添加到每个其他repo中,并且从dev repo(比如远程
    dev/master
    分支)合并到release和prod中仍然是一个关键点。随后,您可以进一步了解这一点,并将所有回购协议视为优步回购协议中的子模块


    对于您的问题,在包含所有内容的one repo中,您似乎关心将文件夹中的文件导入到分支中。您可以按以下步骤进行操作:

  • 创建分支

    master$git co-b devb

  • 将文件夹复制到

    devb$cp-r/path/to/external/dev-dev

  • 将文件夹和文件递归地添加到git

    devb$git添加dev

  • 提交结果

    devb$git提交-m“初始开发提交”


  • 现在是什么风险投资?是否没有从it到git的迁移路径可以让您从中导入历史记录?目前没有VC,我们在每个项目的excel表格中保留文件更改。当我们需要推出一个新的功能/版本时,我们将列出的文件移到beta、tested和prod。将文件版本作为“filename.ext_BAC_date”保存在prod中。因此,保持历史记录并不是一个问题。为开发人员和生产人员保留单独的回购协议而不是分支有什么好处。我把它看作是一个六合一的篮子/另一个篮子里的半打。我们仍然需要仔细挑选合并项目。@undeadDog请参见