2011-01-20 13 views
46

Tôi có một repo trên GitHub. Gần đây tôi đã phát hiện ra các trang của GitHub và tôi muốn sử dụng chúng.
Tôi muốn tạo chi nhánh mới này và sau đó, khi tôi cần, hoặc cam kết chi nhánh master hoặc chi nhánh gh-pages.chi nhánh git: gh-pages

Làm thế nào tôi có thể làm điều này? Tôi có phải tạo một thư mục khác trong repo của mình không?

+0

'origin' không phải là nhánh, nó là điều khiển từ xa. Bạn có nghĩa là 'chủ'. – Dustin

+0

Ah vâng, bạn nói đúng. Tôi sẽ chỉnh sửa. – rubik

+0

Xem [câu trả lời có liên quan của tôi] (http://stackoverflow.com/a/29616287/946850) và [writeup] (http://krlmlr.github.io/git-subbranch) để có giải pháp bao gồm việc tạo sao chép trong một subdirectoy của bản sao làm việc. – krlmlr

Trả lời

25

Bạn có thể tìm thấy hướng dẫn này hữu ích:

Setup GitHub Pages "gh-pages" branch and "master" branch as subfolders of a parent project folder ("grandmaster").

Với tôi phương pháp này có vẻ đơn giản hơn, sau đó thực hiện git checkout gh-pages mỗi lần bạn muốn chỉnh sửa nội dung gh-trang của mình. Hãy cho tôi biết suy nghĩ của bạn^_^

Chỉnh sửa: Tôi đã cập nhật liên kết hướng dẫn - cảm ơn @Cawas. Các tuotial cũ (không khuyến khích) là https://gist.github.com/825950

+1

@rubik nó thực sự tốt hơn để sử dụng gợi ý thứ hai từ cùng một tác giả: https://gist.github.com/833223 – cregox

+0

GitHub vừa kích hoạt bằng [bất kỳ chi nhánh và thư mục nào làm nguồn cho tài liệu] (https: // github.com/blog/2228-simpler-github-pages-publishing). Bạn không còn phải sử dụng 'gh-pages' nữa. –

7

Mở bản sao địa phương của bạn làm,

git symbolic-ref HEAD refs/heads/gh-pages 
rm .git/index 
git clean -fdx 

Sau đó, git checkout gh-pages và viết các trang của bạn. git push origin gh-pages khi bạn đã sẵn sàng xuất bản các trang.

+0

Có, nhưng tôi nên đặt các trang của mình ở đâu? Làm thế nào để git biết những trang nào để đưa vào trang gh? – rubik

+2

'git checkout gh-pages' có nghĩa là bạn đã chuyển sang nhánh có tên 'gh-pages'. Bất kỳ thay đổi nào bạn cam kết với nhánh này được chọn bởi github để xây dựng các trang github của bạn. Để chuyển trở lại nhánh 'master' (có lẽ là mã nguồn của bạn), hãy thực hiện 'git checkout master'. –

+0

liên quan: http://stackoverflow.com/questions/847609/create-a-git-symbolic-ref-in-remote-repository – cregox

32

Các phiên bản git gần đây có thể thay thế cho phương pháp git symbolic-ref mà Chandru giải thích. Điều này tránh phải sử dụng các lệnh mức thấp hơn.

git checkout --orphan gh-pages 
git rm -rf . 
+0

Tôi không hiểu. Làm thế nào là bất cứ điều gì liên quan đến 'biểu tượng-ref'? – cregox

+0

@Cawas Trước đây, cách duy nhất để làm điều này là sử dụng 'git symbolic-ref' như trong câu trả lời của Chandru. Bây giờ 'git checkout --orphan' là cách thích hợp. – Arrowmaster

+0

nhưng, @arrow, khi tôi nhìn thấy các tài liệu về cả hai họ dường như không làm điều tương tự ở tất cả! về 'symbolic-ref' nó nói" * liên kết tượng trưng hiện không được dùng nữa và biểu tượng refs được sử dụng mặc định * "trong khi về' orphan' nó nói "* Điều này có thể hữu ích khi bạn muốn xuất bản cây từ cam kết mà không để lộ nó toàn bộ lịch sử * ". Đối với tôi điều đó ngược lại. Bạn đang tạo một nhánh hoàn toàn tách rời thay vì làm một tấm gương của cái kia! – cregox

-1

Are gh-trang của bạn và chi nhánh tổng thể có CHÍNH XÁC cấu trúc thư mục giống nhau không? Nếu đây là lý do tại sao bạn thậm chí muốn có hai chi nhánh? chỉ cần duy trì một chi nhánh gh-trang! nhưng nếu vì lý do gì bạn muốn có cả hai nhánh được đồng bộ hóa liên tục thì đặt cược tốt nhất của bạn là sử dụng git rebase. Xem tại đây:
http://lea.verou.me/2011/10/easily-keep-gh-pages-in-sync-with-master/

Bạn cũng có thể chỉ chọn các tệp bạn cần từ chính và đẩy chúng lên gh-trang sử dụng trường hợp sử dụng đặc biệt git checkout. Xem ở đây:
http://oli.jp/2011/github-pages-workflow/#gh-pages-workflow
http://nicolasgallagher.com/git-checkout-specific-files-from-another-branch/

Sau khi đã giải quyết vấn đề với cùng một vấn đề tôi đã đến để thấy rằng gh-trang thường sẽ kết thúc có một cơ sở mã khác so với tổng thể. Nói cách khác, gh-pages chỉ nên bao gồm nội dung của thư mục dist/build/publish trong dự án của bạn trong khi master sẽ bao gồm các tệp cấu hình của bạn, các tập lệnh và kiểu chưa được sửa đổi, v.v.

Đề xuất của tôi là tạo trang gh là chi nhánh --orphan và chỉ bao gồm tài liệu sẵn sàng xuất bản trong đó. Bạn sẽ phải sao chép từ bản gốc của mình trong một thư mục cục bộ khác, sử dụng git checkout --orphan gh-pages để tạo các trang gh và sau đó xóa tất cả các tệp không cần thiết bằng cách sử dụng git rm -rf ..Từ đó bạn có thể tiếp tục và đẩy tới các trang gh sau khi đã thêm các tệp chỉ xuất bản của mình. Tham khảo tài liệu Github để biết thêm:
https://help.github.com/articles/creating-project-pages-manually/

Chúc may mắn

+3

GitHub vừa cho phép sử dụng [bất kỳ chi nhánh và thư mục nào làm nguồn tài liệu] (https://github.com/blog/2228-simpler-github-pages-publishing). Bạn không còn phải sử dụng 'gh-pages' nữa. –

0

Cách thông thường là chuyển đổi sang ngành: git checkout master nếu bạn muốn làm việc trên tổng thể và git checkout gh-pages nếu bạn muốn làm việc trên gh-pages.

Bắt đầu với git 2.5, bạn có thể kiểm tra cả hai nhánh cùng một lúc (trong các thư mục khác nhau). Xem https://github.com/blog/2042-git-2-5-including-multiple-worktrees-and-triangular-workflows. Thiết lập qua git worktree add -b gh-pages ../gh-pages origin/gh-pages.

Phần thưởng: Nếu nội dung của thư mục con của thanh toán master là nội dung của gh-pages, hãy sử dụng tập lệnh được cung cấp tại https://github.com/X1011/git-directory-deploy.

1

Có một giải pháp khác cho vấn đề của bạn: Hãy quên đi gh-pages và phân nhánh; Đặt các tệp tĩnh của bạn được cho là được phân phát bên trong thư mục /docs và sau đó chuyển đến cài đặt dự án của bạn và yêu cầu github phân phối nội dung /docs.

Để biết thêm thông tin hãy nhìn vào this

2

Xuất bản một trang web tĩnh như thế này:

git subtree push --prefix www origin gh-pages 

đâu www là thư mục gốc doc trong đó các tập tin tĩnh của bạn. Trang web tĩnh của bạn hiện đang hoạt động tại: https://[user_name].github.io/[repo_name]/