2012-07-31 39 views
12

Tôi vừa tìm thấy công cụ git-cây con rằng một số thời gian trước đây đã trở thành một phần của git chính repo https://github.com/apenwarr/git-subtree/phần chênh lệch giữa hợp nhất git cây con và git-cây con

Tuy nhiên tôi không hiểu đầy đủ những gì chức năng là gì hiện công cụ này cung cấp trên "git read-tree" + "git merge -s subtree" đã tồn tại chưa. Là người duy nhất của git-subtree - làm cho lịch sử cam kết kết quả trông tốt hơn hay nó có nhiều chức năng hơn mà tôi đã bỏ qua?

Trả lời

12

Các lệnh bạn mô tả đọc một cây con vào một kho lưu trữ. Lệnh git-subtree có nhiều lựa chọn hơn, như được mô tả bởi the documentation. Trong số những người khác, bạn có thể (chú thích vì đơn giản):

add:: 
    Create the <prefix> subtree by importing its contents 
    from the given <refspec> or <repository> and remote <refspec>. 
merge:: 
    Merge recent changes up to <commit> into the <prefix> 
    subtree. 
pull:: 
    Exactly like 'merge', but parallels 'git pull' in that 
    it fetches the given commit from the specified remote 
    repository. 
push:: 
    Does a 'split' (see above) using the <prefix> supplied 
    and then does a 'git push' to push the result to the 
    repository and refspec. This can be used to push your 
    subtree to different branches of the remote repository. 
split:: 
    Extract a new, synthetic project history from the 
    history of the <prefix> subtree. The new history 
    includes only the commits (including merges) that 
    affected <prefix>, and each of those commits now has the 
    contents of <prefix> at the root of the project instead 
    of in a subdirectory. Thus, the newly created history 
    is suitable for export as a separate git repository. 

Ngoài ra còn có nhiều loại cờ mà viện trợ và thao tác trên. Tôi tin rằng tất cả các tùy chọn này đã có sẵn trước khi thông qua các chuỗi lệnh ống nước. git-subtree.sh chỉ cần kết thúc chúng và làm cho chúng dễ thực thi hơn.

5

Nếu bạn nhìn vào mã subtree cũ trước khi nó đã được bổ sung vào git như một module contrib: https://github.com/apenwarr/git-subtree/blob/master/git-subtree.sh bạn có thể thấy rằng công cụ git cây con thực sự là một wrapper tiên tiến hơn xung quanh thấp hơn cây con mực git sáp nhập chiến lược.

Về cơ bản, nó tận dụng các chiến lược đó theo cách hợp lý để giúp quản lý subtree dễ dàng hơn nhiều. Đặc biệt là công cụ --squash thực sự rất hữu ích.

Các vấn đề liên quan