基于github存储库基于本地存储库创建本地git存储库并保持更新

时间:2016-12-25 13:13:56

标签: wordpress git github

我有一些基本的git知识,但我不知道如何实现这一点。

我正在尝试克隆(?)github WordPress入门主题underscores。我们的想法是在该存储库上创建一个基于的基础框架(有一些修改)。然后以该框架为基础创建其他主题。

所以看起来应该是这样的:

  1. 将github 下划线存储库复制到本地

  2. 从下划线创建本地存储库 my_framework ,始终修改这些文件的某些部分(例如名称)并添加其他文件

  3. 根据my_framework

  4. 创建新的本地存储库 my_theme1 my_theme2

    目标是使用任何下划线更新保持所有内容更新,同时更改和修改框架和主题。一旦来自github的内容被拉出,它应该保留(或通知)任何更新,但我不需要我在本地做任何改变回到路径。

    我不确定要遵循哪条路径,并感谢任何帮助或指针。

5 个答案:

答案 0 :(得分:10)

  

目标是在更改和修改框架和主题的同时,使用任何下划线更新来更新所有内容

这称为triangular workflow

https://i.stack.imgur.com/Lx7do.png

  • fork(请参阅“Fork a Repo”)回购automattic/_s
  • 在本地克隆该分叉,

    git clone /url/my/fork myfork
    
  • 在原始仓库中添加远程上游

    cd myfork
    git remote add upstream https://github.com/automattic/_s
    

从那里,使用git 2.9 or more,配置:

git config --global pull.rebase true
git config --global rebase.autoStash true

最后,每当您想要更新分支机构(您修改自己的原始仓库版本)时,请执行

git checkout mybranch
git fetch upstream
git rebase upstream/master

然后,您可以将更新的分支(在测试之后)合并到从myfork克隆的其他repos my_theme1my_theme2

cd my_theme1
git fetch
git merge origin/mybranch

如果您只想在本地工作,可以跳过分叉步骤直接克隆原始仓库。

答案 1 :(得分:2)

你应该了解儿童主题。它的概念是有一个主题 - 它会得到更新 - 以及一个儿童主题,你将修改,添加内容,创建不同的模板&风格......一切都符合您的需求。

我建议花几分钟时间仔细阅读:https://codex.wordpress.org/Child_Themes

答案 2 :(得分:1)

假设您使用终端, cd到主题目录:

cd [PROJECT]/wp-content/themes

现在将_s克隆到您的项目中:

git clone git@github.com:Automattic/_s.git [THENE-NAME]

克隆结束后,您可以开始使用新主题。 cd到主题目录:

cd [THENE-NAME]

并为您的回购创建另一个遥控器。

git remote add [NEW-RENOTE-NAME] [NEW-RENOTE-URL]

从现在开始,您可以将更改推送到您的私人遥控器:

git push [NEW-RENOTE-NAME] master

如果您想从_s repo获取更新,您可以:

git pull origin master

祝你好运!

答案 3 :(得分:0)

你可以做类似的事情      char
     使用git clone https://github.com/Automattic/_s.git创建目录my_framework(如果在Windows上)      mkdir my_framework
    cd my_framework
    git init
    git remote add <_s> <PATH to your local underscore>(获取最新版本的下划线)
    再次:
    git pull
mkdir my_theme1
cd my_theme1
git init
git remote add <my_framework> <PATH to your local my_framework>

希望这就是你要找的东西!

答案 4 :(得分:0)

您想要做的是称为嵌套git repo 。 GitHub不允许嵌套存储库。您可以使用GitSubmodulesubtree。它是在项目变得更大时完成的。

一份下划线将保留为“控制”。 下划线的第二份副本将保留为my_framework。复制第三份副本并修改my_framework

你可以:

  1. 分别更新underscores repo又名WordPress首发主题下划线大师
  2. 单独更改框架
  3. 发送拉动请求,无论您想贡献哪个地方
  4. my_theme1my_theme2不是版本,而是单独的软件。 my_theme1例如可以有第n个版本。以下是示例步骤:

    cd ~ 
    mkdir parentrepo 
    cd parentrepo/ 
    git init . 
    mkdir child1 
    mkdir child2 
    cd child1/ 
    git init . 
    echo "FirstChildRepo content" > child1repofile.txt 
    git add . 
    git commit -a -m "Adding FirstChildRepo content" 
    cd ../child2/ 
    echo "SecondChildRepo content" > child2file.txt 
    cd .. 
    echo "parentrepofile" > parentFile.txt 
    git add . 
    git commit -a -m "Adding Parent Repo content" 
    # verify whether working independently 
    cd ~/parentrepo/ 
    git log 
    cd ~/parentrepo/Child1Repo/ 
    git log 
    # try cloning parent, verify the contents
    cd ~ 
    git clone parentrepo/ 
    cd parentrepo/ 
    ls -a 
    ./  ../  .git/  child1/  child2/  parentfile.txt 
    cd child1/ 
    ls -a 
    ./  ../ 
    

    在此步骤之后进行克隆,以其他人编写的方式进行更新。

    您也可以“自动更新”。添加名为post-checkout&amp;的文件合并后到所需存储库的.git/hooks目录并将其添加到每个目录中:

    #!/bin/sh
    git submodule update --init --recursive