Создайте локальный репозиторий 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