+2

Tạo script file(*.bat) đơn giản giúp clone nhiều repo và xử lý nếu gặp thông báo lỗi "fatal: Authentication failed for..."

Trong bài viết này tôi sẽ tạo 1 script file giúp đỡ clone nhiều repository 1 lúc.

Trên github của tôi hiện tại có 4 repository như bên dưới:

image.png

Thông thường để clone từng repo về, chúng ta có thể dùng các công cụ hỗ trợ như "github desktop" - "source tree" - "tortoise" và phổ biến nhất là dùng lệnh nhưng đa phần sẽ cần clone từng repo, giả sử chúng ta có 1 project lớn dùng microservice có nghĩa là sẽ có nhiều repo(multiple services) cần được lấy xuống và nếu lấy từng cái một xuống thì sẽ thao tác nhiều hơn là chỉ cần 1 script file là có thể lấy hết tất cả repo về.

1. Các bước chuẩn bị:

  • Tạo folder chứa tất cả repo, ở đây tôi tạo folder name "DemoGitHub":

image.png

  • Trong folder "DemoGitHub", tôi dùng notepad++ và tạo 1 new file với định dạng "*.bat"

image.png

2. Nội dung script file:

@echo off
SET bn="main"
cd C:\DemoGitHub
echo %bn%
rem ####Switch branch for ####
git clone https://github.com/{username}/repo1.git  -b %bn%
echo "git clone for repo1"

git clone https://github.com/{username}/repo2.git  -b %bn%
echo "git clone for repo2"

git clone https://github.com/{username}/repo3.git  -b %bn%
echo "git clone for repo3"

git clone https://github.com/{username}/repo4.git  -b %bn%
echo "git clone for repo4"

pause

Tôi sẽ giải thích 1 vài thông số trong script file:

  • SET bn="main" -> thiết lập giá trị cho branch, nghĩa là chỉ định bạn sẽ clone repo trên branch nào, ở đây tôi để default branch là "main"
  • cd C:\DemoGitHub -> chỉ định thư mục chứa tất cả repo
  • echo %bn% -> chỉ dùng để in ra(hiển thị) branch name
  • git clone https://github.com/{username}/repo{x} -b %bn% -> câu lệnh "git clone https://github.com/{username}/repo{x}" này chắc các bạn đều đã biết dùng để clone repo về, riêng "-b %bn%" nghĩa là chỉ định sẽ clone repo trên branch nào, biến giá trị "bn" tôi đã khai báo ở trên

Trong quá trình clone những private repo về các bạn sẽ gặp thông báo yêu cầu nhập username và password:

$ git clone https://github.com/{username}/repo.git Username: username của bạn Password: personal_token của bạn

Cách lấy personal_token:

  • Đầu tiên đăng nhập vào dashboard github của các bạn, nếu chưa có tài khoản github vui lòng đăng ký. Sau khi đặng nhập thành công -> click avatar icon như hình và chọn mục "Settings":

image.png

  • Tại giao diện "Settings" -> chọn mục "Developer settings":

image.png

  • Tại giao diện "Developer settings" -> chọn mục "Personal access tokens" và click chọn "Generate new token":

image.png

  • Tại giao diện "Generate new token", có 3 mục chúng ta quan tâm đến:
  • Tại "Note" -> nhập mục đích bạn sửa dụng token này cho việc gì

  • Tại "Expiration" -> mặc định sau 30 ngày token sẽ hết hạn

  • Tại "Select scopes" -> chọn scopes mà bạn cần tuỳ thuộc vào mỗi project. Tại đây tôi chỉ chọn "repo":

image.png

  • Sau khi chọn "scopes" phù hợp -> click button "Generate token":

image.png

  • Token được sinh ra và bạn chỉ cần click highlighted icon và copy token này, bạn cần backup token này:

image.png

Cuối cùng chỉ cần paste token này nếu trong quá trình clone yêu cầu

Để tối ưu hơn, tôi sẽ tích hợp token này vào trong script file:

@echo off
SET bn="main"
cd C:\DemoGitHub
echo %bn%
rem ####Switch branch for ####
git clone https://{token}@github.com/{username}/repo1.git  -b %bn%
echo "git clone for repo1"

git clone https://{token}@github.com/{username}/repo2.git  -b %bn%
echo "git clone for repo2"

git clone https://{token}@github.com/{username}/repo3.git  -b %bn%
echo "git clone for repo3"

git clone https://{token}@github.com/{username}/repo4.git  -b %bn%
echo "git clone for repo4"

pause

Chạy scipt file và kiểm tra kết quả:

image.png


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí