2016-12-25 182 views
10

我有一些基本的git知识,但我不知道如何完成此操作。基于github仓库创建基于本地仓库的本地git仓库,并保持更新

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

所以它应该是这个样子:

  1. 副本github上强调库当地

  2. 从下划线一个创建一个本地仓库my_framework,总是修改这些文件的某些部分(如名称)和添加一些其他文件

  3. 创建新的本地repositori ES my_theme1,基于my_framework my_theme2

目标是把一切都与任何下划线更新更新,同时改变和修改的框架和主题。一旦github的内容被提取出来,它应该保留(或通知)任何更新,但我不需要在本地做任何更改以返回到路径中。

我不知道要走哪条路,并且会很感激任何帮助或指针。

回答

2

你应该了解儿童主题。它的概念是有一个主题 - 它得到更新 - 一个儿童主题,你会修改,添加内容,创建不同的样式...一切符合您的需求。

我建议你采取一些分钟throughtfully阅读:https://codex.wordpress.org/Child_Themes

+0

感谢@elicohenator。我知道儿童主题。现在的事情是,我每次构建主题时都会下载下划线源代码,替换名称,删除额外的东西,手动添加一堆php,Grunt等,并从“scratch”构建(当我可以重用大部分源代码代码和文件)。所以我认为保持它的组织性,自动化和版本控制是非常好的。 – Alvaro

+0

在这种情况下,您可以创建自己的下划线修改回购,而不是将其克隆到您当前的项目。你可以包含SASS文件,页面模板和其他你需要的东西。 (我正在用一个名为FoundationPress的Foundation初学者主题来做这件事) – elicohenator

0

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

希望这是你在找什么!

10

的目标是把一切都与任何下划线更新而更新,同时改变和修改的框架和主题

这就是所谓的triangular workflow

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

  • 叉(见“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 

最后,每次你想更新你的branc HES(你修改自己原来的回购的版本),做一个

git checkout mybranch 
git fetch upstream 
git rebase upstream/master 

然后您可以合并该更新的分支(测试之后)到您的其他回购my_theme1my_theme2,从myfork克隆。

cd my_theme1 
git fetch 
git merge origin/mybranch 

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

+0

为什么第一步需要fork? – Alvaro

+0

因为你没有权利推送到原始存储库 – VonC

+0

但是我不能推送到本地克隆吗? – Alvaro

1

假设你使用一个终端, cd到主题目录:克隆结束你就可以开始你的新主题,参加工作后

git clone [email protected]:Automattic/_s.git [THENE-NAME] 

cd [PROJECT]/wp-content/themes 

现在克隆_s到项目。 cd到主题目录:

cd [THENE-NAME] 

并为您的存储库创建另一个远程。

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

从现在起,你可以把进入你的私人遥控:

git push [NEW-RENOTE-NAME] master 

,如果你想从_s更新回购你可以:

git pull origin master 

好运!

0

你想要做的是叫做嵌套的git回购。 GitHub不允许嵌套存储库。您可以使用GitSubmodulesubtree。这是在项目变大时完成的。

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

您可以:

  1. 更新underscores repo又名WordPress的启动主题突出主分别
  2. 改变你的框架单独
  3. 的,无论你想贡献

my_theme1发送拉请求, my_theme2不是版本,而是独立的软件。例如,可以有第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 &,合并后以.git/hooks目录所需的存储库,并添加这个文件到他们每个人:

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