Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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
Git 从现有项目创建新项目;“样板文件”;回购_Git_Github - Fatal编程技术网

Git 从现有项目创建新项目;“样板文件”;回购

Git 从现有项目创建新项目;“样板文件”;回购,git,github,Git,Github,我创建了一个Laravel“样板”项目,其中包含我常用的功能/库 使用此样板文件作为新项目基础的正确git流程是什么?我可以想出两个选择: 将样板文件转到新项目并开始。我无意将newproject更改拉回到样板文件中 克隆样板文件并将远程原点更新为新的干净repo 我倾向于第二种选择,因为它感觉像是从样板代码中很好地分离出来的。这样做会让我失去一些很酷的git可能性吗?“Fork”不是git概念。你把Git和Github搞混了吗?如果你的意思是在Github上分叉项目,那么这与克隆回购协议是一样

我创建了一个Laravel“样板”项目,其中包含我常用的功能/库

使用此样板文件作为新项目基础的正确git流程是什么?我可以想出两个选择:

  • 样板文件
    转到
    新项目
    并开始。我无意将
    newproject
    更改拉回到
    样板文件中
  • 克隆
    样板文件
    并将远程原点更新为新的干净repo

  • 我倾向于第二种选择,因为它感觉像是从样板代码中很好地分离出来的。这样做会让我失去一些很酷的git可能性吗?

    “Fork”不是git概念。你把Git和Github搞混了吗?如果你的意思是在Github上分叉项目,那么这与克隆回购协议是一样的,克隆听起来就像你在寻找的东西。你永远不会把变化推回到“样板”回购协议。然而,您可以使用合并或重定基来将样板回购的更新引入到衍生出来的项目中。如果没有什么是可取的,那么为什么还要用Git呢?只需创建目录的递归副本,然后从那里开始。

    6年后的2019年6月更新:

    见“

    在软件开发中,跨代码库共享样板代码是一种不变的模式。
    用我们最喜欢的工具和目录结构引导一个新项目,可以帮助程序员更高效地从想法转到“Hello world!”,并且不需要手动配置

    今天,我们很高兴引入存储库模板,使样板代码管理和分发成为GitHub上的一流公民。

    首先,您只需将存储库标记为模板,就可以立即使用它生成包含所有模板存储库文件和文件夹的新存储库

    每个模板存储库都会获得一个名为
    /generate
    新URL端点,它允许您更高效地分发模板


    2013年原始答复:

    考虑到您将从
    样板文件中包含的一个模板将项目存储在Github上,我将:

    • 在GitHub上创建一个新的空回购(没有与
      样板文件的链接,没有)
    • 克隆它
    • 在磁盘上的单独位置克隆
      样板文件
    • 将本地
      样板文件中的正确模板复制到新的本地克隆Github repo
    • git add
      git commit
      )将特定模板推回到新的Github repo
    • 从那里开始工作

    @VonC的答案没有错,但您也可以使用创建一个新的回购协议,该协议基于您的种子回购协议有效地初始化(本地和远程):

    clonefork() {
        hub clone "$1"
        cd "${1##*/}"
        hub fork
    }
    
    在您的shell中:

    $ clonefork user/seed-repo
    

    通过“克隆”种子回购,您还可以显示由此生成的所有回购。

    我刚刚发布了CLI工具,它基于现有回购创建新项目,甚至可以在Github上远程创建您自己的项目。

    根据@VonC的指示,我为我的终端创建了一个函数,并将其粘贴到我的别名中

    每次我启动一个新项目,我都会在GitHub上创建一个回购协议,获取确切的项目名称,然后在终端上键入“bp newProject”

    bp () {
    # Clone the boilerplate project from GitHub
    git clone https://github.com/username/boilerplate.git;
    
    # Rename the boilerplate folder to newProject
    mv boilerplate "$@";
    
    # Access the newProject folder
    cd "$@";
    
    # Delet the .git folder
    rm -rf .git;
    
    # Initialize git
    git init;
    
    # Add;
    git add .;
    
    # Commit using 'initial setup; as  message;
    git commit -m 'initial setup';
    
    # And push it 
    git remote add origin https://github.com/username/"$@".git;
    git push -u origin master
    }
    

    这不完全是你要问的,但它也可能有助于解决类似的问题

    有一个工具可以从
    yaml
    config文件引导Github存储库

    它可以:

  • 在Github上创建新存储库
  • 与本地目录同步
  • 应用模板(如带徽章的自述文件、CI配置、许可证资料等)
  • 为Github repo配置Webhook
  • 邀请合作者
  • 因此,您可以为类似项目编写模板,而不是创建样板回购,
    并在使用该工具创建新的Github repo时使用配置文件应用它们。

    I还创建了一个解决此类问题的工具。我认为这决定了文件系统的某些部分

    使用模板/样板文件-项目配置独裁者。像这个例子:

    独裁者配置可听写文件,如:

    {
      "message": "Copy react-boilerplate",
      "actions": [
        {
          "beSupersetOfJsonFile": "react-boilerplate/package.json",
          "target": "package.json"
        },
        {
          "copyFrom": "react-boilerplate",
          "target": "."
        },
        {
          "haveLineContaining": ["*.tgz"],
          "target": ".gitignore"
        }
      ]
    }
    
    此独裁者可以作为命令行工具运行:

    npx dictator-react-boilerplate
    
    或者让它与您的构建工具一起运行,比如:

    {
      "name": "react-boilerplate-example",
      "version": "1.2.3",
      "description": "asdasasd",
      "scripts": {
        "prepare": "dictator-react-boilerplate"
      },
      "devDependencies": {
        "dictator-react-boilerplate": "0.0.8"
      }
    }
    

    另一种选择是克隆
    样板文件
    ,删除
    .git
    ,然后
    git init
    git add.
    git commit
    @aragaer别忘了
    样板文件
    可以包含许多模板供您选择(这里可能不是这种情况),此外,您还需要重置远程
    来源
    url。我认为我的方法更简单。删除
    .git
    会重置git中的所有内容。但我同意有几个模板。这需要你手动设置上游——以免你把你的更改推到样板回购!有趣的剧本+16年后,GitHub提出了这个功能!“存储库模板”已成为现实。看见