我创建了一个 Laravel "模板" 项目,其中包含我常用的功能/库。
对于将此模板用作新项目基础的正确 git 过程,有两个选项:
- 将
boilerplate
fork 为newproject
并开始使用。我没有任何意图将newproject
更改合并回boilerplate
。 - 克隆
boilerplate
并将远程源更新为一个新的干净仓库。
我倾向于第二个选项,因为它感觉像是与模板代码分离得很干净。这样做会失去一些很酷的 git 功能吗?
我创建了一个 Laravel "模板" 项目,其中包含我常用的功能/库。
对于将此模板用作新项目基础的正确 git 过程,有两个选项:
boilerplate
fork 为 newproject
并开始使用。我没有任何意图将 newproject
更改合并回 boilerplate
。boilerplate
并将远程源更新为一个新的干净仓库。我倾向于第二个选项,因为它感觉像是与模板代码分离得很干净。这样做会失去一些很酷的 git 功能吗?
2019年6月更新,六年后:
请参见 "使用存储库模板生成新存储库 "
每个模板仓库都会获得一个名为在软件开发中,跨代码库共享样板代码是一种持续的模式。
使用我们喜欢的工具和目录结构引导新项目可以帮助程序员更高效地从想法到“Hello world!”,并减少手动配置。今天,我们很高兴地介绍了存储库模板,使样板代码管理和分发成为 GitHub 上的一流公民。
要开始使用,请将存储库标记为模板,您将立即能够使用它来生成具有所有模板存储库文件和文件夹的新存储库。
/generate
的新URL端点,使您能够更有效地分发您的模板。
2013年原始回答:
考虑到您将使用boilerplate
GitHub项目中包含的模板之一存储您的项目,我建议:
boilerplate
没有关联,不需要fork)boilerplate
boilerplate
克隆中复制正确的模板到新的本地克隆Github存储库中git add
,git commit
)将该特定模板推送回您的新Github存储库。git init
、git add .
和 git commit
。 - aragaerboilerplate
可能包含许多模板供您选择(这可能不是这种情况),此外,您需要重置远程 origin
url。我认为我的方法更容易。 - VonC.git
会重置所有 git 相关内容。但我同意使用多个模板的做法。 - aragaer根据@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
配置文件引导 Github 存储库 https://github.com/g4s8/gitstrap
它可以:
因此,您可以为类似的项目编写模板,而无需创建样板存储库,并在使用该工具创建新的 Github 存储库时使用配置文件应用它们。
我也创建了一个解决这类问题的工具。我与独裁者一起开发了一个概念,用于指定文件系统的部分。
独裁者是使用模板/样板项目进行配置的。就像这个例子: https://github.com/tomasbjerre/dictator-react-boilerplate
独裁者配置可被指定的表格,例如:
{
"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"
}
}