2016-12-25 111 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