Devops roadmap: Git
Back To BlogsTổng quan về Git
Hệ thống quản lý phiên bản, tạo ra bởi Linus Torvalds - cha đẻ của Linux.
Các câu lệnh
git init: khởi tạo 1 repo mớigit clone <repository_url>: tải repo về máygit status: kiểm tra trạng thái hiện tại, hiển thị các file thay đổi / thêm mới / xoá…git add <file_name>: thêm file trước khi commitgit add .: thêm tất cả các filegit commit -m "Your commit message": sau khi các file được thêm, dùng lệnh này để lưu các thay đổi vào repo ở máy local trước khi push lên servergit push origin mainpush các thay đổi lên nhánhmaintrên servergit pull origin mainupdate các thay đổi của repo trên server vào repo trên máy local
Câu hỏi thường gặp
- Huỷ một commit đã thực hiện khi commit nhầm
Nếu commit chưa được push lên remote: git reset --hard HEAD~1
Nếu commit đã được push lên remote: git revert <commit_hash>
- Gộp nhiều commit thành một commit để giữ lịch sử commit sạch sẽ:
git rebase -i HEAD~n n là số lượng commit muốn gộp
Khi mở trình soạn thảo, bạn sẽ thấy danh sách các commit. Thay đổi từ pick thành squash (hoặc s), và sau đó gộp chúng lại thành một commit.
- Làm sao để hủy bỏ các thay đổi đã add nhưng chưa commit?
Để hủy bỏ các thay đổi đã được thêm vào staging area, sử dụng lệnh:
git reset <file_name>Lệnh này sẽ đưa các file ra khỏi staging area nhưng giữ nguyên thay đổi trong working directory. Nếu bạn muốn hoàn toàn loại bỏ thay đổi, sử dụng:
git checkout -- <file_name>
- Làm sao để chuyển sang một branch khác mà không mất các thay đổi chưa commit?
Sử dụng git stash để lưu trữ các thay đổi cục bộ của bạn trước khi chuyển branch
Sau đó, chuyển sang branch khác:git checkout <branch_name>
Khi bạn quay lại branch cũ, sử dụng git stash pop để khôi phục lại các thay đổi:
GitOps - Git flow
- nhánh chính: develop
- khi code các feature mới thì checkout từ nhánh develop, test ok thì merge vào develop
- khi chuẩn bị release, checkout 1 nhánh mới
release/v1.0.0từ develop - các bug fix cho lần release sẽ merge vào nhánh release
- khi test trên nhánh release ok, sẽ merge vào nhánh master và tạo tag, deploy lên production theo các tag này
- sau khi tạo tag thì nhánh release lại merge vào develop và xoá bỏ nhánh release
- các feature không deploy trong lần release vẫn checkout từ nhánh develop và merge vào develop như bình thường
- các hotfix checkout ra từ nhánh master, sau đó merge vào master → tạo tag → deploy production. cuối cùng merge hotfix vào nhánh develop.