Создайте локальный репозиторий git на основе локального репозитория на основе репозитория github и обновите его
У меня есть базовые знания git, но я не уверен, как это сделать.
Я пытаюсь клонировать (?) github WordPress стартовая тема подчеркивает. Идея состоит в том, чтобы создать базовый фреймворк на основе (с некоторыми изменениями) в этом репозитории. Затем создайте другие темы с этой основой в качестве базы.
Поэтому он должен выглядеть примерно так:
-
скопировать github подписи в локальный
-
создайте локальный репозиторий my_framework из подчеркивания, каждый раз изменяя определенные части этих файлов (например, имя) и добавляя некоторые другие файлы
-
создать новые локальные репозитории my_theme1, my_theme2 на основе my_framework
Цель состоит в том, чтобы сохранить все обновленное с обновлением подчеркивания, изменяя и изменяя структуру и темы. После того, как контент из github потянут, он должен сохранять (или сообщать) о любых обновлениях, но мне не нужно какое-либо изменение, которое я делаю локально, чтобы вернуться в путь.
Я не уверен, какой путь следовать, и буду признателен за любую помощь или указатель.
Ответы
Ответ 1
Цель состоит в том, чтобы все обновлялось с любым обновлением подчёркивания, изменяя и изменяя рамки и темы
Это называется треугольный рабочий процесс:
![/img/af42b679b4796ca18f5f3805bebf325f.png]()
- fork (см. Fork a Repo ") repo
automattic/_s
-
клонировать локальную локаль,
git clone /url/my/fork myfork
-
добавить как удаленный вверх по исходному репо
cd myfork
git remote add upstream https://github.com/automattic/_s
Оттуда, git 2.9 или больше, настройте:
git config --global pull.rebase true
git config --global rebase.autoStash true
Наконец, каждый раз, когда вы хотите обновлять свои ветки (где вы изменяете собственную версию исходного репо), сделайте
git checkout mybranch
git fetch upstream
git rebase upstream/master
Затем вы можете объединить эту обновленную ветку (после ее тестирования) в свои другие репозитории my_theme1
, my_theme2
, клонированные из моей вики.
cd my_theme1
git fetch
git merge origin/mybranch
Если вы хотите работать только локально, вы можете пропустить шаг fork и клонировать непосредственно исходное репо.
Ответ 2
вам следует узнать о детях. концепция его имеет главную тему - которая обновляется - и дочерняя тема, которую вы будете изменять, добавлять контент, создавать разные шаблоны и стили... все, что вам нужно.
Я бы порекомендовал несколько минут прочитать это полностью: https://codex.wordpress.org/Child_Themes
Ответ 3
Предполагая, что вы используете терминал,
cd в каталог тем:
cd [PROJECT]/wp-content/themes
Теперь клонирование _s к вашему проекту:
git clone [email protected]: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
Удачи!
Ответ 4
вы можете сделать что-то вроде
git clone https://github.com/Automattic/_s.git
создать каталог my_framework
с помощью 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>
git pull
Надеюсь, это то, что вы ищете!
Ответ 5
То, что вы хотите сделать, называется вложенным git repo. GitHub не разрешает вложенные репозитории. Вы можете использовать GitSubmodule или subtree. Это делается для того, когда проекты становятся больше.
Один экземпляр подчеркивания останется как "контроль".
Вторая копия символов подчеркивания будет начинаться с my_framework
. Третья копия копируется и изменяется my_framework
.
Вы можете:
- Обновить
underscores repo
aka mastersters для главной темы 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
и пост-слияние в каталог .git/hooks
необходимых репозиториев и добавьте их в каждый из них:
#!/bin/sh
git submodule update --init --recursive