GIT: Các lệnh hữu ích

By JoeVu, at: 08:16 Ngày 07 tháng 11 năm 2023

Thời gian đọc ước tính: __READING_TIME__ minutes

GIT: Useful commands
GIT: Useful commands

Git là một hệ thống quản lý phiên bản mạnh mẽ giúp các nhà phát triển quản lý kho lưu trữ mã của họ một cách hiệu quả. Cho dù bạn là một chuyên gia Git dày dặn kinh nghiệm hay mới bắt đầu hành trình với quản lý phiên bản, hướng dẫn này bao gồm các lệnh Git cần thiết và một số mẹo và thủ thuật hữu ích để cải thiện quy trình làm việc Git của bạn.

 

1. Các lệnh Git cần thiết

 

Kho lưu trữ

Khởi tạo kho lưu trữ Git cục bộ:

git init

Trong trường hợp bạn đã có một số mã hiện có và muốn đẩy những thay đổi mới lên kho lưu trữ từ xa/repo

git remote add origin https://github.com/glinteco-com/...
git remote add non_existed_remote https://non_existed_remote.com/glinteco-com/...
git remote remove non_existed_remote  # xóa kho lưu trữ từ xa


Sao chép kho lưu trữ công khai 

git clone [repo_url]  

Sao chép kho lưu trữ riêng tư

git clone ssh://[email protected]/[username]/[repository-name].git

Một vấn đề mà nhiều nhà phát triển mới gặp phải là: không thể sao chép một kho lưu trữ riêng tư mà họ có quyền truy cập, chỉ đơn giản là do ssh-token. Một giải pháp đơn giản là tạo một token cá nhân và thực hiện:

git clone https://[email protected]/glinteco-com/Samples
[nhập token của bạn ở đây]


Kiểm tra trạng thái kho lưu trữ 

git status

 

Sân khấu thay đổi

Thêm một tệp cụ thể vào vùng sân khấu:

git add [tên-tệp]

Thêm tất cả các tệp mới và đã thay đổi vào vùng sân khấu:

git add -A

 

Thực hiện cam kết thay đổi

Thực hiện cam kết các thay đổi của bạn với một thông báo mô tả:

git commit -m "[thông báo cam kết]"

 

Xóa một tệp hoặc thư mục

Xóa một tệp (hoặc thư mục) khỏi kho lưu trữ và thư mục làm việc:

git rm -r [tên-tệp.txt]

 

Quản lý nhánh

Liệt kê tất cả các nhánh cục bộ với nhánh đang hoạt động được đánh dấu bằng dấu hoa thị:

git branch

Liệt kê tất cả các nhánh, bao gồm cả các nhánh từ xa:

git branch -a

Tạo một nhánh mới:

git branch [tên nhánh]

Xóa một nhánh:

git branch -d [tên nhánh]

Xóa một nhánh một cách mạnh mẽ:

git branch -D [tên nhánh]

Xóa một nhánh từ xa:

git push origin --delete [tên nhánh]

Tạo một nhánh mới và chuyển sang nó trong một lệnh:

git checkout -b [tên nhánh]

Sao chép một nhánh từ xa và chuyển sang nó:

git checkout -b [tên nhánh] origin/[tên nhánh]

Đổi tên một nhánh cục bộ:

git branch -m [tên nhánh cũ] [tên nhánh mới]

Chuyển sang một nhánh khác:

git checkout [tên nhánh]

Chuyển sang nhánh bạn đã kiểm tra lần cuối:

git checkout -

Bỏ các thay đổi được thực hiện đối với một tệp và khôi phục nó về trạng thái đã cam kết cuối cùng:

git checkout -- [tên-tệp.txt]

Trộn một nhánh vào nhánh đang hoạt động:

git merge [tên nhánh]

Trộn một nhánh nguồn vào một nhánh đích:

git merge [nhánh nguồn] [nhánh đích]

Xóa một nhánh từ xa:

git push origin --delete [tên nhánh]

Đổi tên nhánh hiện tại của bạn

git branch -m [tên_mới]

 

Lưu trữ thay đổi

Lưu trữ các thay đổi trong thư mục làm việc của bạn để chuyển đổi nhánh hoặc làm việc trên một cái gì đó khác:

git stash

Xóa tất cả các mục đã lưu trữ:

git stash clear

 

Đẩy thay đổi

Đẩy nhánh của bạn lên kho lưu trữ từ xa của bạn:

git push origin [tên nhánh]

Đẩy thay đổi lên kho lưu trữ từ xa, liên kết nhánh nếu cần:

git push -u origin [tên nhánh]

Đẩy thay đổi lên kho lưu trữ từ xa cho một nhánh đã được liên kết trước đó:

git push

 

Cập nhật và kéo thay đổi

Cập nhật kho lưu trữ cục bộ của bạn lên bản cam kết mới nhất từ kho lưu trữ từ xa:

git pull

Kéo thay đổi từ một nhánh cụ thể trong kho lưu trữ từ xa:

git pull origin [tên nhánh]

 

Quản lý cấu hình

Đặt tên người dùng và email Git toàn cục của bạn:

git config --global user.name "joevu"

git config --global user.email "[email protected]"

Xem cấu hình Git toàn cục của bạn:

git config --global --list

Đặt tên người dùng và email Git cục bộ cho một kho lưu trữ cụ thể:

git config --local user.name "joevu"

git config --local user.email "[email protected]"

Xem cấu hình Git cục bộ cho một kho lưu trữ cụ thể:

git config --local --list

 

2. Mẹo và thủ thuật Git

 

Bỏ qua móc trước cam kết Git

Bạn có thể bỏ qua các móc trước cam kết Git bằng tùy chọn -n hoặc --no-verify:

git commit -n -m 'Cập nhật' # hoặc git commit -m 'Cập nhật' -n

 

Khám phá lịch sử Git

Xem nhật ký lịch sử Git của bạn:

git log

Xem lịch sử Git tóm tắt với thống kê cam kết:

git log --summary

Xem biểu diễn ngắn gọn, một dòng của lịch sử Git của bạn:

git log --oneline

 

Xem trước thay đổi trước khi trộn

So sánh các thay đổi giữa hai nhánh trước khi trộn:

git diff [nhánh nguồn] [nhánh đích]

 

Điều tra thay đổi với Git Blame

Xác định ai đã thực hiện thay đổi đối với các dòng mã cụ thể bằng cách sử dụng git blame:

git blame đường dẫn/đến/tệp

 

Hoàn tác thay đổi cam kết

Hoàn tác một cam kết cụ thể bằng ID của nó:

git revert [commitid]

 

Rebase nâng cao

Rebase nhánh hiện tại của bạn từ một nhánh chính được chỉ định (ví dụ: develop):

git rebase -i develop

 

So sánh lịch sử Git

So sánh các thay đổi giữa hai cam kết cho một tệp cụ thể:

git diff $start_commit..$end_commit -- đường dẫn/đến/tệp

 

Sử dụng Git Stash

Lưu trữ các thay đổi tạm thời và sau đó đưa chúng trở lại thư mục làm việc của bạn:

git stash save

git stash pop

 

Chọn một số cam kết từ các nhánh khác

Tìm băm cam kết git từ các nhánh khác mà bạn muốn chọn bằng git reflog hoặc git log. Sau đó thực hiện:

git cherry-pick hash_value

 

3. Mô hình nhánh Git - Luồng của nvie

 

Đối với một mô hình nhánh Git thành công, hãy xem xét việc làm theo Mô hình nhánh Git của nvie của Vincent Driessen. Mô hình này cung cấp một cấu trúc rõ ràng và hiệu quả để quản lý các nhánh Git trong các dự án của bạn, đảm bảo quy trình làm việc suôn sẻ cho các nhóm phát triển.

Mô hình đề xuất các nhánh sau:

 

  • Các nhánh chính:

    • master/main: Đại diện cho mã đã sẵn sàng cho sản xuất. Chỉ hợp nhất vào nó từ nhánh develop khi bạn đã sẵn sàng phát hành phiên bản mới.
       

    • staging: Đại diện cho mã đã sẵn sàng cho giai đoạn (sẵn sàng cho uat). Chỉ hợp nhất vào nó từ nhánh develop khi bạn đã sẵn sàng phát hành phiên bản mới.
       

    • develop: Nhánh tích hợp chính nơi các nhánh tính năng hợp nhất các thay đổi của chúng để kiểm tra và chuẩn bị cho bản phát hành tiếp theo.
       

  • Các nhánh hỗ trợ:

    • Các nhánh tính năng: Các nhánh này được tạo ra cho các tính năng mới hoặc sửa lỗi. Chúng được tạo nhánh từ develop và được hợp nhất trở lại khi công việc hoàn tất.
       

    • Các nhánh phát hành: Chuẩn bị cho bản phát hành mới từ develop. Chỉ cho phép sửa lỗi và điều chỉnh cuối cùng trong nhánh này.
       

    • Các nhánh khắc phục sự cố nóng: Được tạo từ master để giải quyết các sự cố nghiêm trọng trong phiên bản sản xuất. Được hợp nhất trở lại cả master và develop.
       

Mô hình của Vincent Driessen đơn giản hóa sự cộng tác, quản lý phát hành và theo dõi sự cố trong các dự án Git, biến nó thành tài liệu tham khảo có giá trị cho các nhóm muốn sắp xếp hợp lý các quy trình phát triển của họ.

Với các lệnh Git cần thiết, mẹo và giới thiệu về mô hình nhánh Git của nvie, bạn sẽ có các kỹ năng và kiến thức để nâng cao khả năng quản lý phiên bản và cộng tác của mình, giúp bạn trở thành người dùng Git thành thạo hơn.

Tag list:
- git commands
- git remote
- gitlab
- git log
- git
- git pull
- git branch
- github
- git commit
- git reflog
- git cheatsheet
- git checkout
- git rebase
- git push

Liên quan

Python Experience

ChatGPT: Tương lai của Giáo dục

Đọc thêm
Project Management

Đọc thêm
Python

Đọc thêm

Theo dõi

Theo dõi bản tin của chúng tôi và không bao giờ bỏ lỡ những tin tức mới nhất.