Bash 用于从模板创建新 GitHub 存储库的脚本
Bash script to create new GitHub repository from template
我正在编写一个 bash 脚本,它可以从我已经创建的 GitHub 模板初始化一个新的存储库。我想要脚本复制 this GitHub help doc 中列出的步骤,但我不知道如何从命令行使用 GitHub 模板。
我在 WSL2 上使用 Ubuntu 18.04。我已经定义了一个函数 project()
(见下文)接受一个输入(新项目的名称)并且应该执行以下操作:
- cd 到我的主目录
- 调用 python 脚本
create_project.py
在本地创建新项目的文件夹并在 GitHub 上创建远程仓库
- cd 到新项目的本地目录
- 从我的模板初始化一个 repo
- 在 GitHub 上连接到我的远程仓库(在第 2 步中创建)
- 添加
- 提交
- 推送
#!/bin/bash
function project() {
cd /home/levicrews
python3 create_project.py
cd /home/levicrews/
git init --template=</home/levicrews/template-project>
git remote add origin git@github.com:levicrews/.git
git add .
git commit -m "Initial commit"
git push -u origin master
}
import sys
import os
from github import Github
path = "/home/levicrews/"
username = "" #Insert your github username here
password = "" #Insert your github password here
def create_project():
folderName = str(sys.argv[1])
os.makedirs(path + str(sys.argv[1]))
user = Github(username, password).get_user()
repo = user.create_repo(sys.argv[1])
print("Succesfully created repository {}".format(sys.argv[1]))
if __name__ == "__main__":
create_project()
不幸的是,我所有的模板文件最终都在新存储库的 /.git 目录中(通过阅读 git init
上的文档,我现在意识到这是 --template
标志)。我可以对脚本进行哪些更改以复制 GitHub 的 "Use this template" 行为?
如果模板项目不是 git 存储库,您可以在初始化之前复制它:
#!/bin/bash
function project() {
cd /home/levicrews
cp -a /home/levicrews/template-project
python3 create_project.py
cd /home/levicrews/
git init
git remote add origin git@github.com:levicrews/.git
git add .
git commit -m "Initial commit"
git push -u origin master
}
如果模板项目已有 .git 目录,您需要将其删除:
#!/bin/bash
function project() {
cd /home/levicrews
cp -a /home/levicrews/template-project
rm /.git
python3 create_project.py
cd /home/levicrews/
git init
git remote add origin git@github.com:levicrews/.git
git add .
git commit -m "Initial commit"
git push -u origin master
}
如果 git 历史记录很大,复制到 .git 并再次删除 .git 文件夹将是低效的。您可以使用以下技巧:
git archive --format=tar --remote=/home/levicrews/template-project master | tar xf -
我正在编写一个 bash 脚本,它可以从我已经创建的 GitHub 模板初始化一个新的存储库。我想要脚本复制 this GitHub help doc 中列出的步骤,但我不知道如何从命令行使用 GitHub 模板。
我在 WSL2 上使用 Ubuntu 18.04。我已经定义了一个函数 project()
(见下文)接受一个输入(新项目的名称)并且应该执行以下操作:
- cd 到我的主目录
- 调用 python 脚本
create_project.py
在本地创建新项目的文件夹并在 GitHub 上创建远程仓库
- cd 到新项目的本地目录
- 从我的模板初始化一个 repo
- 在 GitHub 上连接到我的远程仓库(在第 2 步中创建)
- 添加
- 提交
- 推送
#!/bin/bash
function project() {
cd /home/levicrews
python3 create_project.py
cd /home/levicrews/
git init --template=</home/levicrews/template-project>
git remote add origin git@github.com:levicrews/.git
git add .
git commit -m "Initial commit"
git push -u origin master
}
import sys
import os
from github import Github
path = "/home/levicrews/"
username = "" #Insert your github username here
password = "" #Insert your github password here
def create_project():
folderName = str(sys.argv[1])
os.makedirs(path + str(sys.argv[1]))
user = Github(username, password).get_user()
repo = user.create_repo(sys.argv[1])
print("Succesfully created repository {}".format(sys.argv[1]))
if __name__ == "__main__":
create_project()
不幸的是,我所有的模板文件最终都在新存储库的 /.git 目录中(通过阅读 git init
上的文档,我现在意识到这是 --template
标志)。我可以对脚本进行哪些更改以复制 GitHub 的 "Use this template" 行为?
如果模板项目不是 git 存储库,您可以在初始化之前复制它:
#!/bin/bash
function project() {
cd /home/levicrews
cp -a /home/levicrews/template-project
python3 create_project.py
cd /home/levicrews/
git init
git remote add origin git@github.com:levicrews/.git
git add .
git commit -m "Initial commit"
git push -u origin master
}
如果模板项目已有 .git 目录,您需要将其删除:
#!/bin/bash
function project() {
cd /home/levicrews
cp -a /home/levicrews/template-project
rm /.git
python3 create_project.py
cd /home/levicrews/
git init
git remote add origin git@github.com:levicrews/.git
git add .
git commit -m "Initial commit"
git push -u origin master
}
如果 git 历史记录很大,复制到 .git 并再次删除 .git 文件夹将是低效的。您可以使用以下技巧:
git archive --format=tar --remote=/home/levicrews/template-project master | tar xf -