我有一些基本的git知识,但我不知道如何实现这一点。
我正在尝试克隆(?)github WordPress入门主题underscores。我们的想法是在该存储库上创建一个基于的基础框架(有一些修改)。然后以该框架为基础创建其他主题。
所以看起来应该是这样的:
将github 下划线存储库复制到本地
从下划线创建本地存储库 my_framework ,始终修改这些文件的某些部分(例如名称)并添加其他文件
根据my_framework
目标是使用任何下划线更新保持所有内容更新,同时更改和修改框架和主题。一旦来自github的内容被拉出,它应该保留(或通知)任何更新,但我不需要我在本地做任何改变回到路径。
我不确定要遵循哪条路径,并感谢任何帮助或指针。
答案 0 :(得分:10)
目标是在更改和修改框架和主题的同时,使用任何下划线更新来更新所有内容
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_theme1
,my_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不允许嵌套存储库。您可以使用GitSubmodule或subtree。它是在项目变得更大时完成的。
一份下划线将保留为“控制”。
下划线的第二份副本将保留为my_framework
。复制第三份副本并修改my_framework
。
你可以:
underscores repo
又名WordPress首发主题下划线大师 my_theme1
,my_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