Github thêm một kho lưu trữ như một ngã ba từ một bản sao hiện có


21

Vì vậy, tôi có một kho lưu trữ git mà tôi đã nhân bản từ một nguồn ngược dòng trên ghithub. Tôi đã thực hiện một vài thay đổi cho nó (không được cam kết và trong nhánh chính). Những gì tôi muốn làm là đẩy các thay đổi của tôi lên trang github của tôi như một nhánh mới và github vẫn xem nó như một ngã ba.

Điều đó có thể không? Tôi khá mới với git và github. Có phải câu hỏi của tôi thậm chí có ý nghĩa?

Cách dễ nhất mà tôi có thể nghĩ ra (mà tôi chắc chắn là cách xung quanh nhất), là rẽ nhánh repo trên github. Sao chép nó cục bộ vào một thư mục khác. Thêm repo nguồn gốc thượng nguồn. Tạo một nhánh trong repo ngã ba mới đó. Sao chép thay đổi mã của tôi bằng tay vào repo cục bộ mới. Và sau đó đẩy nó trở lại github của tôi.

Đây có phải là một trường hợp sử dụng phổ biến mà có một cách đơn giản hơn để làm điều đó mà không cần sao chép các thư mục?

Tôi đoán tôi đang hỏi ở đây trái ngược với SO vì tôi đang sử dụng linux bằng dòng lệnh git và mọi người ở đây đưa ra câu trả lời tốt hơn imo =]


Tôi đoán đây là về chủ đề kỹ thuật, nhưng nó có thể làm tốt hơn ở nơi khác, vì nó dường như chủ yếu là một câu hỏi github
Michael Mrozek

Câu trả lời:


22

Bạn có thể làm tất cả từ kho lưu trữ hiện tại của mình (không cần sao chép ngã ba vào kho lưu trữ (cục bộ) mới, tạo chi nhánh, sao chép cam kết / thay đổi, v.v.).

  1. Nhận cam kết của bạn đã sẵn sàng để được công bố.

    Tinh chỉnh bất kỳ cam kết cục bộ hiện có (ví dụ với git commit --amendvà / hoặc git rebase --interactive).

    Cam kết bất kỳ thay đổi không được cam kết nào mà bạn muốn xuất bản (Tôi không chắc bạn có ý ám chỉ rằng bạn có một số cam kết đối với chủ địa phương và một số thay đổi không được cam kết hay chỉ là một số thay đổi không được cam kết; chi nhánh, họ nghiêm chỉnh trong cây làm việc của bạn).

    Đổi tên chi nhánh chính của bạn để đặt tên cho nó mà bạn muốn cho nhánh mới của bạn. Điều này không thực sự cần thiết (bạn có thể đẩy từ bất kỳ chi nhánh nào sang bất kỳ chi nhánh nào khác), nhưng về lâu dài có thể sẽ giảm sự nhầm lẫn nếu chi nhánh địa phương và chi nhánh trong ngã ba GitHub của bạn có cùng tên.

    git branch -m master my-feature
    
  2. Ngã ba kho lưu trữ GitHub ngược dòng
    (ví dụ) github.com:UpstreamOwner/repostory_name.git
    (ví dụ) github.com:YourUser/repository_name.git.

    Điều này được thực hiện trên trang web GitHub (hoặc một máy khách của khách hàng sử dụng API GitHub), không có lệnh Git cục bộ nào liên quan.

  3. Trong kho địa phương của bạn (một trong đó ban đầu được nhân bản từ kho GitHub thượng lưu và có những thay đổi của bạn trong nó thạc sĩ ), thêm kho ngã ba của bạn như là một từ xa:

    git remote add -f github github.com:YourUser/repository_name.git
    
  4. Đẩy chi nhánh của bạn đến kho lưu trữ ngã ba của bạn trên GitHub.

    git push github my-feature
    
  5. Tùy chọn, đổi tên các điều khiển từ xa để cái nĩa của bạn được biết đến với tên gọi là nguồn gốc của Cameron và ngược dòng là dòng ngược dòng.

    git remote rename origin upstream
    git remote rename github origin
    

    Một lý do để đổi tên các điều khiển từ xa là vì bạn muốn có thể sử dụng git pushmà không cần chỉ định một kho lưu trữ (nó mặc định là nguồn gốc bản quyền).


Hoạt động hoàn hảo, nhưng khi bạn tạo github từ xa, tôi nghĩ rằng bạn đang thiếu "https: //" trong URL Github
jesjimher

1
@jesjimher: Các URL của URL trong bài đăng này sử dụng cú pháp giống như Scp của người dùng sử dụng SSH, không phải HTTP (S). Bạn cũng cần thay đổi dấu hai chấm thành dấu gạch chéo để sử dụng chúng làm URL HTTP (S) (giả sử máy chủ hỗ trợ cả hai mà không cần thay đổi không gian tên bổ sung, điều mà GitHub thực hiện).
Chris Johnsen

Rất tiếc, bạn nói đúng, Chris, tôi đã nhầm dấu hai chấm là một dấu gạch chéo, và do đó nó không hoạt động với tôi trừ khi tôi thêm "https". Xin lỗi vì tiếng ồn ...
jesjimher

Trong Bước 4, sử dụng -utùy chọn có thể làm cho chi nhánh địa phương của bạn my-feature theo dõi cùng một chi nhánh từ xa origin/my-feature. Lệnh là:git push -u github my-feature
YaOzI

Thật tuyệt. Điều duy nhất tôi phải thay đổi là địa chỉ github!
Tico

0

Có một công cụ: hub

hublà một công cụ dòng lệnh bao bọc gitđể mở rộng nó với các tính năng và lệnh bổ sung giúp làm việc với GitHub dễ dàng hơn

Bây giờ bạn có thể:

# cd to a cloned repo with uncommited changes
git checkout -b feature
git commit -am 'done with feature'
git fork
git push YOUR_USER feature
# git pull-request
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.