2016-12-25 29 views
10

Mam podstawową wiedzę o GIT, ale nie jestem pewien, jak to osiągnąć.Twórz lokalne repozytorium git na podstawie lokalnego repozytorium opartego na repozytorium github i aktualizuj je

Próbuję sklonować (?) Github WordPress motyw startowy underscores. Pomysł polega na stworzeniu podstawowej struktury opartej na (z pewnymi modyfikacjami) na tym repozytorium. Następnie utwórz inne motywy z tą strukturą jako bazą.

Tak powinno to wyglądać mniej więcej tak:

  1. kopiowania github podkreśla repozytorium lokalnego

  2. utworzyć lokalne repozytorium my_framework od podkreślenia jednej, modyfikowania niektórych części tych plików zawsze (takie jak nazwa) i dodawanie innych plików

  3. tworzenie nowych lokalnych repozytoriów es my_theme1, my_theme2 podstawie my_framework

Celem jest utrzymać wszystko na bieżąco z wszelkimi podkreślenia aktualizować, podczas zmieniania i modyfikowania ramy i tematów. Po pobraniu zawartości z githubu powinna ona zachowywać (lub informować) o wszelkich aktualizacjach, ale nie potrzebuję żadnych zmian, które wprowadzam lokalnie, aby powrócić na ścieżkę.

Nie jestem pewien, którą ścieżkę podążać, i byłbym wdzięczny za pomoc lub wskaźnik.

Odpowiedz

2

powinieneś poznać tematykę dziecka. koncepcja jest związana z głównym tematem - który jest aktualizowany - oraz motywem dziecięcym, który będziesz modyfikować, dodawać treść, tworzyć różne szablony & style ... wszystko zgodnie z Twoimi potrzebami.

Polecam biorąc kilka minut na przeczytanie tego throughtfully: https://codex.wordpress.org/Child_Themes

+0

Thanks @elicohenator. Wiem o tematach Dziecka. Rzecz jest teraz za każdym razem, gdy buduję temat, pobieram źródło podkreślenia, zastępuję nazwy, usuwam dodatkowe elementy, dodajemy kilka php, Grunta itp. Ręcznie i buduję od "scratch" (kiedy mogłem ponownie użyć większości źródeł kod i pliki). Pomyślałem więc, że byłoby świetnie, gdyby było zorganizowane, zautomatyzowane i pod kontrolą wersji. – Alvaro

+0

w tym przypadku możesz utworzyć własne powtórzenie modyfikacji podkreśleń, a następnie sklonować je do bieżącego projektu. możesz dołączyć tam pliki SASS, szablony stron i inne potrzebne rzeczy. (robię to z podstawowym motywem startowym o nazwie FoundationPress) – elicohenator

0

można zrobić coś
git clone https://github.com/Automattic/_s.git
utworzyć katalogu my_framework z mkdir my_framework (jeśli w systemie Windows)
cd my_framework
git init
git remote add <_s> <PATH to your local underscore>
git pull (aby uzyskać najnowszą wersję und erscore)
ponownie:
mkdir my_theme1
cd my_theme1
git init
git remote add <my_framework> <PATH to your local my_framework>
git pull

nadzieję, że to, czego szukasz!

10

Celem jest, aby utrzymać wszystko na bieżąco z każdej aktualizacji podkreślenia podczas zmieniania i modyfikowania ramy i tematów

To nazywa się triangular workflow:

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

  • widelec (patrz "Fork a Repo") repo automattic/_s
  • klon że widelec lokalnie,

    git clone /url/my/fork myfork 
    
  • dodać jako zdalny przed pierwotnym repo

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

Stamtąd z git 2.9 or more skonfigurować:

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

Wreszcie, za każdym razem, gdy chcesz zaktualizować swój branc hes (gdzie można modyfikować swoją własną wersję oryginalnego repo), zrobić

git checkout mybranch 
git fetch upstream 
git rebase upstream/master 

Następnie można połączyć tę zaktualizowaną oddziału (po przetestowaniu go) do innych repo my_theme1, my_theme2, sklonowanych z myfork.

cd my_theme1 
git fetch 
git merge origin/mybranch 

Jeśli chcesz pracować tylko lokalnie, można pominąć ten krok, widelec i klonować bezpośrednio oryginalnego repo.

+0

Dlaczego w pierwszym kroku konieczne jest widelec? – Alvaro

+0

Ponieważ nie masz prawa do wypychania do oryginalnego repozytorium – VonC

+0

Ale czy nie mogę zamiast tego przesłać do lokalnego klonu? – Alvaro

1

Zakładając używasz terminala, cd do katalogu tematów:

cd [PROJECT]/wp-content/themes 

Teraz klonowania _S do projektu:

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

Po klon kończy można rozpocząć pracę z nowym tematem . cd do katalogu tematycznego:

cd [THENE-NAME] 

i utworzyć inną pilota dla repo.

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

Od teraz, możesz popchnąć zmiany do swojego prywatnego pilota:

git push [NEW-RENOTE-NAME] master 

a jeśli chcesz otrzymywać aktualizacje z _S Repo można po prostu:

git pull origin master 

Good Luck !

0

Co chcesz zrobić, to zagnieżdżone git repo. GitHub nie zezwala na zagnieżdżone repozytoria. Możesz użyć GitSubmodule lub subtree. Robi się to, gdy projekty stają się większe.

Jedna kopia podkreślników pozostanie jako "kontrola". Druga kopia podkreślników pozostanie to zaczyna się od my_framework. Trzecia kopia jest kopiowana i modyfikowana my_framework.

Można:

  1. Aktualizacja underscores repo aka WordPress rozrusznik motyw podkreślenia głównego oddzielnie
  2. zmiana w ramach oddzielnie
  3. Wysłać wyciągnąć wniosek o gdziekolwiek chcesz przyczynić

my_theme1, my_theme2 nie są wersjami, ale oddzielnymi programami. my_theme1 jako przykład może mieć n-ty wersje. Oto przykładowe kroki:

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 
./ ../ 

Po wykonaniu tego kroku przeprowadź klonowanie, zaktualizuj w sposób podobny do zapisanych w innych.

Można również "zaktualizować automatycznie". Dodawanie plików nazwanych post-checkout & po seryjnej .git/hooks katalogu potrzebnych repozytoriów i dodać do każdego z nich:

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