16

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

使用这个样板作为新项目的基础的正确 git 过程是什么?我可以想到两个选择:

  1. boilerplatenewproject并开始。我无意将newproject更改拉回boilerplate.
  2. 克隆boilerplate并将远程源更新为新的干净存储库。

我倾向于第二个选项,因为它感觉像是与样板代码的一个很好的干净分离。这样做我会失去任何很酷的 git 可能性吗?

4

7 回答 7

19

2019 年 6 月更新,6 年后:

请参阅“使用存储库模板生成新存储库

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

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

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

https://github.blog/wp-content/uploads/2019/06/repository-template.gif

每个模板存储库都有一个名为的新 URL 端点/generate,可让您更有效地分发模板


2013年的原始答案:

考虑到您将从GitHub 项目中包含的模板之一boilerplate将项目存储在 Github上,我会:

  • 在 GitHub 上创建一个新的空仓库(没有链接boilerplate不需要 fork
  • 克隆它
  • 克隆boilerplate 到磁盘上的单独位置
  • 将正确的模板从本地boilerplate克隆复制到新的本地克隆 Github 存储库
  • ( git add, git commit) 将该特定模板推回您的新 Github 存储库。
  • 从那里开始工作
于 2013-02-15T07:54:00.567 回答
3

“叉子”不是 Git 的概念。你把 Git 和 Github 混为一谈了吗?如果你的意思是在 Github 上 fork 项目,那么它与克隆 repo 相同,克隆听起来就像你要找的一样。您永远不会将更改推回“样板”存储库。但是,您可以使用合并或变基将样板存储库的更新拉入从它衍生的项目中。如果没有这样的事情是可取的,那为什么还要用 Git 做呢?只需制作目录的递归副本,然后从那里开始。

于 2013-02-15T04:46:09.900 回答
3

@VonC 的回答没有错,但您也可以使用集线器创建一个单行代码,根据您的种子存储库有效地启动一个新的存储库(本地和远程):

clonefork() {
    hub clone "$1"
    cd "${1##*/}"
    hub fork
}

在你的外壳中:

$ clonefork user/seed-repo

通过“克隆”您的种子存储库,您还可以获得一个网络图,显示由它生成的所有存储库。

于 2014-11-18T19:29:19.720 回答
2

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

每次我开始一个新项目时,我都会在 GitHub 上创建一个 repo,获取确切的项目名称,然后在我的终端上输入“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
}
于 2018-11-13T10:34:13.420 回答
1

我刚刚发布了 CLI 工具,即基于现有 repo 创建新项目,甚至在 Github 上远程创建自己的项目。 https://github.com/theJacobDev/binit

于 2018-06-26T21:19:36.160 回答
1

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

有一个工具可以从yaml配置文件https://github.com/g4s8/gitstrap引导 Github 存储库

它可以:

  1. 在 Github 上创建新的存储库
  2. 与本地目录同步
  3. 应用模板(例如带有徽章的 README、CI 配置、许可证内容等)
  4. 为 Github 存储库配置 webhook
  5. 邀请合作者

因此您可以为类似项目编写模板,而不是创建样板仓库,并在使用该工具创建新的 Github 仓库时使用配置文件应用它们。

于 2019-01-15T22:04:49.727 回答
0

我也创建了一个工具来解决这类问题。我与独裁者一起开发了一个概念,该概念决定了文件系统的某些部分。

独裁者使用模板/样板项目配置。像这个例子: https ://github.com/tomasbjerre/dictator-react-boilerplate

独裁者配置dictatables,例如:

{
  "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"
  }
}
于 2020-10-05T09:21:16.187 回答