Python 用于从模板创建新GitHub存储库的Bash脚本

Python 用于从模板创建新GitHub存储库的Bash脚本,python,bash,git,github,windows-subsystem-for-linux,Python,Bash,Git,Github,Windows Subsystem For Linux,我正在编写一个bash脚本,它可以从我已经创建的GitHub模板初始化一个新的存储库。我希望脚本复制中列出的步骤,但我不知道如何从命令行使用GitHub模板 我在WSL2上使用Ubuntu18.04。我已经定义了一个函数project()(见下文),它接受一个输入(新项目的名称),并且应该执行以下操作: cd到我的主目录 调用python脚本create_project.py,该脚本在本地创建新项目的文件夹,并在GitHub上创建远程repo cd到新项目的本地目录 从我的模板初始化回购 连接到

我正在编写一个bash脚本,它可以从我已经创建的GitHub模板初始化一个新的存储库。我希望脚本复制中列出的步骤,但我不知道如何从命令行使用GitHub模板

我在WSL2上使用Ubuntu18.04。我已经定义了一个函数
project()
(见下文),它接受一个输入(新项目的名称),并且应该执行以下操作:

  • cd到我的主目录
  • 调用python脚本
    create_project.py
    ,该脚本在本地创建新项目的文件夹,并在GitHub上创建远程repo
  • cd到新项目的本地目录
  • 从我的模板初始化回购
  • 连接到GitHub上的我的远程回购(在步骤2中完成)
  • 承诺
  • #/bin/bash
    功能项目(){
    cd/主页/主页
    python3 create_project.py$1
    cd/home/levicrews/$1
    git init--模板=
    git远程添加源git@github.com:Levicrows/$1.0吉特
    git添加。
    git提交-m“初始提交”
    git-push-u源主机
    }
    
    导入系统 导入操作系统 从github导入github path=“/home/levicrows/” username=”“#在此处插入您的github用户名 password=”“#在此处插入您的github密码 def create_project(): folderName=str(sys.argv[1]) os.makedirs(path+str(sys.argv[1])) user=Github(用户名、密码) repo=user.create\u repo(sys.argv[1]) 打印(“成功创建的存储库{}”。格式(sys.argv[1])) 如果名称=“\uuuuu main\uuuuuuuu”: 创建_项目()
    不幸的是,我所有的模板文件最终都位于新repo的/.git目录中(通过阅读
    gitinit
    上的文档,我现在意识到这是
    --template
    标志的预期行为)。我可以对脚本进行哪些更改以从GitHub复制“使用此模板”行为?

    如果模板项目不是git存储库,您可以在初始化之前复制它:

    #!/bin/bash
    function project() {
        cd /home/levicrews
        cp -a /home/levicrews/template-project $1
        python3 create_project.py $1
        cd /home/levicrews/$1
        git init
        git remote add origin git@github.com:levicrews/$1.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 $1
        rm $1/.git
        python3 create_project.py $1
        cd /home/levicrews/$1
        git init
        git remote add origin git@github.com:levicrews/$1.git
        git add .
        git commit -m "Initial commit"
        git push -u origin master
    }
    
    如果git历史记录很大,则复制到.git并再次删除.git文件夹将效率低下。您可以使用以下黑客:

    git-archive--format=tar--remote=/home/levcrews/template-project-master | tar-xf-