2016-12-25 30 views
10

Tôi có một số kiến ​​thức cơ bản về git nhưng tôi không chắc chắn cách thực hiện điều này.Tạo kho lưu trữ git cục bộ dựa trên kho lưu trữ cục bộ dựa trên kho lưu trữ github và giữ nó cập nhật

Tôi đang cố gắng sao chép (?) Github chủ đề khởi động WordPress underscores. Ý tưởng là tạo một khung cơ bản dựa trên (với một số sửa đổi) trên kho lưu trữ đó. Sau đó tạo các chủ đề khác với khung làm nền tảng đó.

Vì vậy, nó sẽ giống như thế:

  1. bản sao github nhấn kho để địa phương

  2. tạo một kho lưu trữ địa phương my_framework từ dấu gạch một, sửa đổi một số phần của các tập tin luôn luôn (chẳng hạn như tên) và thêm một số tệp khác

  3. tạo repositori địa phương mới es my_theme1, my_theme2 dựa trên my_framework

Mục đích là để giữ cho mọi thứ cập nhật với bất kỳ dấu gạch cập nhật, trong khi thay đổi và sửa đổi các khuôn khổ và các chủ đề. Một khi nội dung từ github được kéo nó sẽ giữ (hoặc thông báo) của bất kỳ bản cập nhật nào, nhưng tôi không cần bất kỳ thay đổi nào tôi thực hiện cục bộ để quay lại đường dẫn.

Tôi không chắc chắn đường dẫn nào cần theo dõi và sẽ đánh giá cao bất kỳ trợ giúp hoặc con trỏ nào.

Trả lời

2

bạn nên tìm hiểu về chủ đề trẻ em. khái niệm về nó là có một chủ đề chính - được cập nhật - và một chủ đề con mà bạn sẽ sửa đổi, thêm nội dung, tạo các mẫu khác nhau & phong cách ... mọi thứ theo nhu cầu của bạn.

tôi khuyên bạn nên tham gia một vài phút để đọc throughtfully: https://codex.wordpress.org/Child_Themes

+0

Cảm ơn @elicohenator. Tôi biết về chủ đề trẻ em. Điều này là ngay bây giờ mỗi khi tôi xây dựng một chủ đề tôi tải xuống các nguồn gạch dưới, thay thế tên, xóa thêm nội dung, thêm một nhóm php, Grunt, vv theo cách thủ công và xây dựng từ "scratch" (khi tôi có thể sử dụng lại hầu hết nguồn mã và tệp). Vì vậy, tôi nghĩ rằng nó sẽ là tuyệt vời để giữ cho nó có tổ chức, tự động và dưới sự kiểm soát phiên bản. – Alvaro

+0

trong trường hợp này bạn có thể tạo repo của riêng bạn về sửa đổi gạch dưới, hơn clone nó vào dự án hiện tại của bạn. bạn có thể bao gồm các tệp SASS, mẫu trang và các nội dung khác mà bạn cần. (Tôi đang làm nó với một chủ đề Foundation khởi xướng gọi là FoundationPress) – elicohenator

0

bạn có thể làm một cái gì đó giống như
git clone https://github.com/Automattic/_s.git
tạo thư mục my_framework với mkdir my_framework (nếu trên cửa sổ)
cd my_framework
git init
git remote add <_s> <PATH to your local underscore>
git pull (để nhận phiên bản mới nhất của und erscore)
một lần nữa:
mkdir my_theme1
cd my_theme1
git init
git remote add <my_framework> <PATH to your local my_framework>
git pull

Hy vọng điều này là những gì bạn đang tìm kiếm!

10

Mục đích là để giữ cho mọi thứ được cập nhật với bất kỳ bản cập nhật dấu gạch dưới, trong khi thay đổi và sửa đổi các khuôn khổ và các chủ đề

Đó được gọi là triangular workflow:

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

  • ngã ba (xem "Fork a Repo") số repo automattic/_s
  • nhân bản ngã ba địa phương,

    git clone /url/my/fork myfork 
    
  • thêm bao xa thượng nguồn repo gốc

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

Từ đó, với git 2.9 or more, cấu hình:

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

Cuối cùng, mỗi lần bạn muốn cập nhật branc của bạn hes (nơi bạn thay đổi phiên bản của riêng bạn của repo gốc), làm một

git checkout mybranch 
git fetch upstream 
git rebase upstream/master 

Sau đó, bạn có thể hợp nhất mà chi nhánh cập nhật (sau khi thử nghiệm nó) để Repos của bạn khác my_theme1, my_theme2, nhân bản từ myfork.

cd my_theme1 
git fetch 
git merge origin/mybranch 

Nếu bạn chỉ muốn làm việc cục bộ, bạn có thể bỏ qua bước ngã ba và sao chép trực tiếp bản gốc.

+0

Tại sao nó cần thiết các ngã ba trong bước đầu tiên? – Alvaro

+0

Vì bạn không có quyền đẩy tới kho lưu trữ gốc – VonC

+0

Nhưng tôi không thể chuyển sang bản sao cục bộ để thay thế? – Alvaro

1

Giả sử bạn sử dụng một thiết bị đầu cuối, cd vào chủ đề thư mục:

cd [PROJECT]/wp-content/themes 

Bây giờ sao chép _s để dự án của bạn:

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

Sau clone kết thúc, bạn có thể bắt đầu làm việc với chủ đề mới . cd vào thư mục chủ đề:

cd [THENE-NAME] 

và tạo điều khiển từ xa khác cho repo của bạn.

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

Từ giờ trở đi, bạn có thể đẩy sự thay đổi thành từ xa tin của bạn:

git push [NEW-RENOTE-NAME] master 

và nếu bạn muốn nhận thông tin cập nhật từ _s repo bạn có thể chỉ:

git pull origin master 

Good Luck !

0

Những gì bạn muốn làm được gọi là lồng nhau git repo. GitHub không cho phép kho lưu trữ lồng nhau. Bạn có thể sử dụng GitSubmodule hoặc subtree. Nó được thực hiện khi các dự án trở nên lớn hơn.

Một bản sao dấu gạch dưới sẽ vẫn là "điều khiển". Bản sao thứ hai của dấu gạch dưới sẽ vẫn bắt đầu là my_framework. Bản sao thứ ba được sao chép và sửa đổi my_framework.

Bạn có thể:

  1. Cập nhật underscores repo aka WordPress khởi động theme nhấn chính riêng biệt
  2. Thay đổi trong khuôn khổ của riêng
  3. yêu cầu Gửi kéo cho bất cứ nơi nào bạn muốn đóng góp

my_theme1, my_theme2 không phải là phiên bản mà là phần mềm riêng biệt. my_theme1 ví dụ có thể có các phiên bản thứ n. Dưới đây là các bước mẫu:

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

Làm việc sau bước này để sao chép, cập nhật theo cách giống như cách viết khác.

Bạn cũng có thể "tự động cập nhật". Thêm tập tin có tên post-checkout & hậu sáp nhập để .git/hooks thư mục của các kho cần thiết và thêm vào mỗi trong số họ:

#!/bin/sh 
git submodule update --init --recursive 
Các vấn đề liên quan