Git Clone Branch - Cách sao chép một nhánh cụ thể

Không giống như các hệ thống kiểm soát phiên bản tập trung cũ hơn như SVN và CVS, Git được phân phối. Mọi nhà phát triển đều có toàn bộ lịch sử và quyền kiểm soát mã của họ cục bộ hoặc từ xa. Họ cũng có thể truy cập hoặc thao tác một số phần của mã khi chúng cho là phù hợp từ các vị trí khác nhau.

Kể từ khi Linus Torvalds (tác giả nổi tiếng của nhân hệ điều hành Linux) tạo ra Git vào năm 2005 để phát triển nhân Linux, nó đã trở thành hệ thống điều khiển phiên bản hiện đại được sử dụng rộng rãi nhất trên thế giới.

Trong bài viết này, tôi sẽ giới thiệu cho bạn về quy trình làm việc của Git clone và Git branch và tôi sẽ chỉ cho bạn cách bạn có thể sao chép một nhánh cụ thể dựa trên nhu cầu của bạn. Hãy bắt đầu nào! ?

Điều kiện tiên quyết

  • Kiến thức cơ bản về thiết bị đầu cuối
  • Khả năng gõ lệnh trong thiết bị đầu cuối
  • Git đã được cài đặt (Tôi sẽ vẫn chỉ cho bạn cách thực hiện)
  • Một tài khoản GitHub
  • Một nụ cười trên khuôn mặt của bạn (Đưa nụ cười lên bạn bè?)

Giới thiệu nhanh về Git và GitHub

Theo Wikipedia,

Git là một hệ thống kiểm soát phiên bản phân tán được thiết kế để theo dõi các thay đổi đối với một dự án (mã) trong quá trình phát triển phần mềm. Nó nhằm mục đích thực thi sự phối hợp, cộng tác, tốc độ và hiệu quả giữa các nhà phát triển.

Mặt khác , GitHub là một dịch vụ lưu trữ dựa trên web để kiểm soát phiên bản bằng Git. Nó cung cấp tất cả chức năng quản lý mã nguồn và kiểm soát phiên bản phân tán của Git cũng như bổ sung thêm nhiều tính năng cho mã máy tính.

Cách cài đặt Git trên Windows

Tải xuống và cài đặt Git cho Windows Installer mới nhất tại đây.

Cách cài đặt Git trên Linux

Dưới đây là các lệnh dựa trên bản phân phối Linux của bạn:

Debian hoặc Ubuntu

sudo apt-get update sudo apt-get install git

Fedora

sudo dnf install git

CentOS

sudo yum install git

Arch Linux

sudo pacman -Sy git

Gentoo

sudo emerge --ask --verbose dev-vcs/git

Cách cài đặt Git trên máy Mac

Tải xuống và cài đặt trình cài đặt Git for Mac mới nhất tại đây.

Hoặc bạn có thể gõ lệnh này:

brew install git

Bây giờ chúng ta đã cài đặt xong Git, hãy chuyển sang phần hướng dẫn.

Giới thiệu về Git Clone

Git cho phép bạn quản lý và phiên bản (các) dự án của mình trong một "kho lưu trữ". Kho này được lưu trữ trên một dịch vụ lưu trữ dựa trên web để kiểm soát phiên bản, như GitHub.

Sau đó, bạn có thể sao chép kho lưu trữ này vào máy cục bộ của mình và có tất cả các tệp và nhánh cục bộ (tôi sẽ giải thích thêm về các nhánh ngay sau đây).

Ví dụ: bạn có thể sao chép kho lưu trữ của freeCodeCamp với SSH như sau:

git clone [email protected]:freeCodeCamp/freeCodeCamp.git

Giới thiệu về các nhánh Git

Khi làm việc trên một dự án, bạn có thể sẽ có các tính năng khác nhau. Và nhiều cộng tác viên sẽ làm việc trên dự án này và các tính năng của nó.

Các nhánh cho phép bạn tạo một "sân chơi" với các tệp giống nhau trong masternhánh. Bạn có thể sử dụng nhánh này để xây dựng các tính năng độc lập, thử nghiệm các tính năng mới, thực hiện các thay đổi đột phá, tạo bản sửa lỗi, viết tài liệu hoặc thử các ý tưởng mà không vi phạm hoặc ảnh hưởng đến mã sản xuất. Khi bạn hoàn thành, bạn hợp nhất nhánh này vào masternhánh sản xuất .

Phân nhánh là một khái niệm cốt lõi trong Git, nó cũng được sử dụng trong GitHub để quản lý quy trình công việc của các phiên bản khác nhau của một dự án. Các masterchi nhánh luôn là chi nhánh mặc định trong một kho lưu trữ mà thường được coi là "sản xuất và mã triển khai". Các nhánh mới giống passwordless-authhoặc refactor-signup-uxcó thể được tạo ra từ masternhánh.

Cách sao chép các nhánh Git

Trong khi bạn có thể sao chép kho lưu trữ bằng git clonelệnh, hãy nhớ rằng lệnh này sao chép nhánh và điều khiển từ xa HEAD. Điều này thường là mastertheo mặc định và bao gồm tất cả các nhánh khác trong kho lưu trữ.

Vì vậy, khi bạn sao chép một kho lưu trữ, bạn sao chép mastervà tất cả các nhánh khác. Điều này có nghĩa là bạn sẽ phải tự mình kiểm tra chi nhánh khác.

Giả sử nhiệm vụ của bạn trong một dự án là làm việc trên một tính năng để thêm xác thực không cần mật khẩu vào trang tổng quan người dùng. Và tính năng này có trong passwordless-authchi nhánh.

Bạn thực sự không cần masterchi nhánh vì "chi nhánh tính năng" của bạn sẽ được hợp nhất mastersau đó. Sau đó, làm thế nào để bạn sao chép passwordless-authnhánh này mà không tìm nạp tất cả các nhánh khác với "một loạt tệp bạn không cần"?

Tôi đã tạo kho lưu trữ mẫu này để giải thích điều này. Kho lưu trữ này chứa một blog đơn giản được xây dựng bằng Nextjs và có bốn nhánh giả:

  • bậc thầy
  • nhà phát triển
  • dàn dựng
  • mật khẩu không xác thực

Trong Nextjs, bất kỳ tệp nào bên trong thư mục pages/apiđược ánh xạ tới /api/*đường dẫn và sẽ được coi là điểm cuối API thay vì a page. Trong kho lưu trữ của chúng tôi, tôi đã tạo các API giả khác nhau trong thư mục này để làm cho mỗi nhánh khác nhau.

Các masterchi nhánh tổ chức các tập tin trang / api / hello.js trong khi passwordless-authgiữ các tập tin trang / api / auth.js . Mỗi tệp chỉ trả về một phản hồi văn bản giả. Xem masterphản hồi API xin chào tại đây (với một thông báo đặc biệt cho bạn?).

Hãy sao chép kho lưu trữ:

git clone [email protected]:BolajiAyodeji/nextjs-blog.git

Điều này cho phép chúng tôi truy cập vào tất cả các chi nhánh trong kho lưu trữ này và bạn có thể dễ dàng chuyển đổi giữa các chi nhánh để xem từng phiên bản và các tệp của nó.

git branch -a

Tự hỏi các nhánh điều khiển từ xa / nguồn gốc / .. đến từ đâu?

Khi bạn sao chép một kho lưu trữ, bạn lấy dữ liệu từ một kho lưu trữ trên internet hoặc một máy chủ nội bộ được gọi là điều khiển từ xa . Nguồn gốc từ là một bí danh do Git của bạn tạo ra để thay thế URL từ xa (bạn có thể thay đổi hoặc chỉ định một bí danh khác nếu muốn).

Các nhánh điều khiển từ xa / origin / .. này trỏ bạn trở lại kho lưu trữ gốc mà bạn đã sao chép từ internet để bạn vẫn có thể thực hiện kéo / đẩy từ nguồn gốc.

Vì vậy, khi bạn sao chép mastervào máy của mình, remotes/origin/mastermasternhánh gốc trên internet và mastertrên máy cục bộ của bạn. Vì vậy, bạn sẽ kéo / đẩy từ và đến remotes/origin/master.

Tóm lại, Remote là URL trỏ bạn đến kho lưu trữ trên internet trong khi Origin là bí danh cho URL từ xa này.

Cách sao chép một nhánh cụ thể

Bây giờ, hãy sao chép một nhánh cụ thể từ kho lưu trữ demo của chúng tôi. Có hai cách để sao chép một nhánh cụ thể. Bạn có thể:

  • Sao chép kho lưu trữ, tìm nạp tất cả các nhánh và thanh toán cho một nhánh cụ thể ngay lập tức.
  • Sao chép kho lưu trữ và chỉ tìm nạp một nhánh duy nhất.

Lựa chọn một

git clone --branch  

hoặc là

git clone -b  

Với điều này, bạn tìm nạp tất cả các nhánh trong kho lưu trữ, kiểm tra đến nhánh bạn đã chỉ định và nhánh cụ thể trở thành nhánh cục bộ được định cấu hình cho git pushgit pull. Nhưng bạn vẫn tìm nạp tất cả các tệp từ mỗi nhánh. Đây có thể không phải là những gì bạn muốn phải không? ?

Hãy kiểm tra nó:

 git clone -b passwordless-auth [email protected]:BolajiAyodeji/nextjs-blog.git

Điều này tự động cấu hình passwordless-authnhư nhánh cục bộ nhưng vẫn theo dõi các nhánh khác.

Lựa chọn hai

git clone --branch  --single-branch 

hoặc là

git clone -b  --single-branch 

Điều này thực hiện hành động tương tự như tùy chọn một, ngoại trừ --single-branchtùy chọn này đã được giới thiệu trong Git phiên bản 1.7.10 trở lên. Nó cho phép bạn chỉ tìm nạp các tệp từ nhánh được chỉ định mà không tìm nạp các nhánh khác.

Hãy kiểm tra nó:

git clone -b passwordless-auth --single-branch [email protected]:BolajiAyodeji/nextjs-blog.git

Điều này tự động cấu hình passwordless-authlàm nhánh cục bộ và chỉ theo dõi nhánh này.

Nếu bạn chạy, cd pages/apibạn sẽ tìm thấy auth.jstệp trong passwordless-authnhánh như mong đợi từ thiết lập trước đó.

Phần kết luận

Bạn có thể sắp hết internet hoặc không gian lưu trữ nhưng bạn cần làm việc trong một chi nhánh cụ thể. Hoặc bạn có thể muốn sao chép một nhánh cụ thể với các tệp hạn chế vì nhiều lý do. May mắn thay, Git cung cấp cho bạn sự linh hoạt để làm điều này. Hãy uốn dẻo các cơ của bạn và tập thử, còn nhiều "Git" hơn để học.

Mỗi lần một cái, phải không? ✌?