Thursday, November 21, 2024

[Git] Phần 13 – Sử dụng GitHub và GitLab cơ bản, tạo repo mới, đẩy và lấy dữ liệu từ GitHub, GitLab

-

1. Tổng quan.

GitHub và GitLab là hai dịch vụ lưu trữ mã nguồn dựa trên Git phổ biến. Cả hai đều cung cấp các tính năng quản lý mã nguồn, theo dõi vấn đề, và hợp tác phát triển phần mềm.

GitHub:

  • Được Microsoft sở hữu và quản lý.
  • Cung cấp dịch vụ lưu trữ mã nguồn công cộng miễn phí, nhưng cần phải trả phí để lưu trữ mã nguồn riêng tư.
  • Cung cấp tính năng “GitHub Actions” để tự động hóa quy trình phát triển phần mềm.
  • Có một cộng đồng lớn của các nhà phát triển.

GitLab:

  • Là một dự án mã nguồn mở, cung cấp phiên bản tự cài đặt.
  • Cung cấp dịch vụ lưu trữ mã nguồn công cộng và riêng tư miễn phí.
  • Cung cấp một chuỗi công cụ “DevOps” tích hợp, bao gồm quản lý vấn đề, tích hợp liên tục và triển khai liên tục (CI/CD), và quản lý dự án Agile.
  • Cung cấp tính năng “GitLab CI/CD” để tự động hóa quy trình phát triển phần mềm.

2. Sử dụng Github.

GitHub là một dịch vụ lưu trữ dựa trên web cho các dự án phát triển phần mềm sử dụng hệ thống kiểm soát phiên bản Git. GitHub cung cấp cả phiên bản miễn phí (cho các dự án công khai) và phiên bản có phí (cho dự án riêng tư).

2.1. Cách thêm public key vào Github.

Hãy login tài khoản Github của bạn vào và bấm vào logo profile của bạn.

Vào Settings.

Vào New SSH key.

Đặt tên cho SSH key của bạn và dán nội dung key vào, sau đó bấm Add SSH Key để tiến hành thêm Key vào Github.

Và đây là kết quả khi thêm thành công Public key.

2.2. Tạo một Repository trên Github.

Từ giao diện Dashboard của Github bạn vào New.

Tại giao diện Create a new repository bạn điền tên Repository tại Tại giao diện Create a new repository bạn điền tên Repository Name và phần Description (optional) bạn viết mô tả dự án của bạn, đây là phần tùy chọn nên bạn có thể bỏ qua nó.

  • Có 2 chế độ cho Repository:
    • Public: Ai cũng có thể xem được Repository của bạn.
    • Private: Chỉ có mình bạn thôi.

Bấm vào Create Repository để tạo Repository này.

Và đây là giao diện đầu tiên khi tạo xong Repository, nó chưa có gì cả. Ở giao diện này bạn sẽ thấy 2 địa chỉ dùng để giao tiếp với Repository đó là ssh hoặc bằng url.

2.3. Đẩy dữ liệu lên Github.

Nếu các bạn đã đọc bài trước của mình thì các bạn cũng sẽ thấy mình đã có sẵn một Repository với thông tin như dưới.

shell> git branch
  beta
* main

shell> git log --oneline
13507ed (HEAD -> main, origin/main) M5 - Merge
4211e90 M4 - gitlocal-192.168.13.232
28310f3 M4
74136ce M3
4c141f3 M2
7690035 M1
add27da C2
7de3cce C1

shell> git log --oneline beta
af9135c (origin/beta, beta) B1
add27da C2
7de3cce C1

Ở bài trước mình đã đẩy Repository này lên remote server riêng có tên origin.

shell> git remote -v
origin  hoanghd@192.168.13.231:/home/hoanghd/repos/myproject/ (fetch)
origin  hoanghd@192.168.13.231:/home/hoanghd/repos/myproject/ (push)

Và bây giờ mình sẽ thêm một Repository được tạo từ Github vào Git local như sau. Copy địa chỉ của Repository, chọn một loại kết nối (mình sử dụng loại kết nối SSH).

Tiến hành thêm Remote Server mới bằng lệnh dưới.

git remote add origin_github git@github.com:hoanghd164/testproject.git

Xác minh lại Repositories đã thêm bạn sẽ thấy có 2 Remote Server, trong đó đã xuất hiện Remote Server với tên là origin_github mà chúng ta đã thêm vào ở bước trên.

shell> git remote -v
origin  hoanghd@192.168.13.231:/home/hoanghd/repos/myproject/ (fetch)
origin  hoanghd@192.168.13.231:/home/hoanghd/repos/myproject/ (push)
origin_github   git@github.com:hoanghd164/testproject.git (fetch)
origin_github   git@github.com:hoanghd164/testproject.git (push)

Tiến hành push dữ liệu từ Repository Local lên Remote Server có tên origin_github. Cũng như SSH, nếu lần đầu bạn gửi lệnh SSH đến kho chứa này, bạn sẽ nhận được thông báo Are you sure you want to continue connecting (yes/no/[fingerprint])? yes. Xác nhận yes để đồng ý kết nối vào push dữ liệu nhé.

shell> git push origin_github main
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Enumerating objects: 24, done.
Counting objects: 100% (24/24), done.
Delta compression using up to 8 threads
Compressing objects: 100% (16/16), done.
Writing objects: 100% (24/24), 1.87 KiB | 1.87 MiB/s, done.
Total 24 (delta 5), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (5/5), done.
To github.com:hoanghd164/testproject.git
 * [new branch]      main -> main

Khi bạn tải lại trang Repository của Github bạn sẽ thấy dữ liệu đã push lên thành công.

Do lệnh trên mình chỉ push dữ liệu của nhánh main nên trên Repository của Github bạn cũng chỉ thấy thông báo chỉ có 1 branch như dưới.

Để đẩy dữ liệu nhành beta bạn sử dụng lệnh git push origin_github beta hoặc sử dụng tham số --all như dưới để đẩy tất cả các nhánh nếu bạn muốn.

shell> git push origin_github --all
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 314 bytes | 314.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: 
remote: Create a pull request for 'beta' on GitHub by visiting:
remote:      https://github.com/hoanghd164/testproject/pull/new/beta
remote: 
To github.com:hoanghd164/testproject.git
 * [new branch]      beta -> beta

Và đây là kết quả khi bạn đẩy thành công 2 nhánh có trong Local Repository lên Github.

Bạn cũng sẽ thấy số lượng commit của mỗi nhánh tại đây.

Bấm vào nó để xem nội dung commit chi tiết.

Ví dụ chúng ta bấm vào xem nội dung của một commit (ví dụ của mình là commit C2).

Bạn cũng sẽ thấy số lượng file ở commit này là 2.

Hoặc commit M4 bạn sẽ thấy số lượng file đã thay đổi tùy vào thời điểm chúng ta commit.

Nếu bấm vào file chúng ta có thể xem được nội dung của file đó ở thời điểm đó.

Hoặc nếu bạn muốn xem chi tiết nội dung sửa đổi, bạn hãy bấm vào má hash của commit đó.

Và dưới đây là kết quả với file c.txt sẽ có nội dung được thêm vào được đánh dấu bởi dấu cộng như dưới (+). Nếu nội dung bị xóa đi thì sẽ được đánh dấu trừ (-).

2.4. Thực hiện commit và đẩy dữ liệu lên Github.

Chúng ta thực hiện chỉnh sửa nội dung Repository như sau:

shell> echo -e "\nLan dau push len Github" > d.txt
shell> echo -e "\n2024" >> c.txt

shell> git status
On branch main
Your branch is up to date with 'origin/main'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   c.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        d.txt

no changes added to commit (use "git add" and/or "git commit -a")

Thực hiện commit mới.

shell> git add .
shell> git commit -m"Github1"
[main dcffaf8] Github1
 2 files changed, 4 insertions(+)
 create mode 100644 d.txt

Xác minh lại commit đã thêm thành công.

shell> git log --oneline
dcffaf8 (HEAD -> main) Github1
13507ed (origin_github/main, origin/main) M5 - Merge
4211e90 M4 - gitlocal-192.168.13.232
28310f3 M4
74136ce M3
4c141f3 M2
7690035 M1
add27da C2
7de3cce C1

Thực hiện push commit mới tạo lên Github.

shell> git push origin_github --all
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 366 bytes | 366.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To github.com:hoanghd164/testproject.git
   13507ed..dcffaf8  main -> main

Và đây là kết quả khi bạn xem trên Github.

2.5. Chuyển đổi Project từ Public sang Private.

Lần này mình sẽ thực hiện clone dữ liệu từ Repository Github về máy Local nhưng mình sẽ chuyển Project này từ Public sang Private để kiểm tra SSHKey có hoạt động được không bằng cách vào Settings.

Vào Change visibility -> Change to private.

Tiếp tục I want to make this repository private.

Bấm vào I have read and understand these effects.

Bấm vào Make this repository private.

Nhập mật khẩu tài khoản Github của bạn để xác nhận chuyển đổi.

Bây giờ bạn sẽ thấy Project này của mình đã chuyển từ Public sang Privtate.

2.6. Thực hiện clone dữ liệu từ Github về Local.

Vào theo quy trình dưới để lấy link ssh của Project mà bạn muốn clone.

Sử dụng lệnh git clone <url_github> để clone dữ liệu về máy local.

shell> git clone git@github.com:hoanghd164/testproject.git
Cloning into 'testproject'...
remote: Enumerating objects: 31, done.
remote: Counting objects: 100% (31/31), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 31 (delta 8), reused 30 (delta 7), pack-reused 0
Receiving objects: 100% (31/31), done.
Resolving deltas: 100% (8/8), done.

Cũng như phần trước thì khi lấy dữ liệu về từ remote là Github, mặc định nó sẽ lấy nhánh mặc định là main hoặc master.

shell> git branch
* main

Trong khi đó trong git server chúng ta còn có nhánh beta như thông tin dưới.

shell> git branch -a
* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/beta
  remotes/origin/main

Để lấy nhánh beta về local repo chúng ta vẫn sử dụng lệnh git checkout như dưới.

shell> git checkout beta
branch 'beta' set up to track 'origin/beta'.
Switched to a new branch 'beta'

Lấy xong nhánh beta chúng ta có thể quay lại nhánh master cũng bằng lệnh git checkout.ß

shell> git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.

Như vậy chúng ta đã có đầy đủ 2 nhánh như lệnh show ở dưới.

shell> git branch
  beta
* main

Chú ý là khi chúng ta clone một repo từ Github về thì ở phần remote mặc định nó sẽ thiết lập tên của remote là origin.

shell> git remote -v
origin	git@github.com:hoanghd164/testproject.git (fetch)
origin	git@github.com:hoanghd164/testproject.git (push)

3. Sử dụng Gitlab.

Đổi với Gitlab bạn cũng đăng ký một tài khoản rồi làm tương tự như Github nhé.

Sau khi có tài khoản thì bạn login vào và bấm vào New Project để tạo Repository mới.

Nếu thêm SSHKey bạn vào Preferences như dưới.

Bấm vào Add new key.

Thực hiện điền thông tin theo như các yêu cầu ở dưới nhé.

Bài viết phần này của mình đến đây tạm dừng, cảm ơn các bạn đã theo dõi.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories