Bạn sẽ có "thân cây", bây giờ được gọi là "chủ", bạn sẽ có "nhánh" bây giờ được gọi là "đầu" và bạn sẽ có "thẻ", vẫn được gọi là "thẻ", nhưng chúng sẽ không phải là thư mục , chúng sẽ là " refs ", gắn nhãn cho các phiên bản sống trong không gian tên riêng biệt bên trong kho lưu trữ.
Subversion và Git có nhiều cách khác nhau để phân nhánh. Mô hình lật đổ cơ bản là có một cây thư mục với dòng thời gian toàn cầu duy nhất và nếu bạn muốn phân nhánh, bạn sao chép một cây con trong thư mục khác.
Mặt khác, Git có một cây thư mục với các phiên bản mà mỗi định nghĩa là cha mẹ của nó, nhưng mỗi phiên bản có thể có nhiều cha mẹ (hợp nhất) và nhiều con (các nhánh). Vì vậy, thay vì có các thư mục cho các chi nhánh, bạn có các phiên bản được tạo độc lập. "Refs" chỉ là tên liên quan đến sửa đổi mới nhất cho "chi nhánh" nhất định.
Sự khác biệt này là cơ bản để kiểm soát phiên bản phân tán. Git (và các hệ thống phân tán khác) không có bất kỳ cơ quan trung ương nào để giữ lịch sử tuyến tính, do đó, các bản sửa đổi có thể được tạo độc lập trên nhiều kho lưu trữ mà không cần biết về nhau và hệ thống phải chứa chúng. Hóa ra việc khái quát hóa làm cho việc phân nhánh và sáp nhập dễ dàng hơn rất nhiều nói chung.
Lưu ý rằng trong Git, bản sửa đổi không nằm trên bất kỳ nhánh nào. Họ chỉ là và chi nhánh chứa chúng. Nhưng một khi chi nhánh được hợp nhất hoặc chứng minh là ngõ cụt, bạn có thể xóa "ref" chỉ vào nó và quên nó hoàn toàn (nếu bạn loại bỏ các thử nghiệm cũ, cuối cùng chúng sẽ được thu gom rác git gc
). Điều này giúp bạn tránh bị ngập trong các thí nghiệm cũ không ai nhớ những gì họ đã nói về nữa.