Lưu ý bé xíu xíu: Đây là bí kíp tương tự Quỳ Hoa Bảo Điển, đọc xong vẫn ăn hành với git xin hãy tự cung! Cấm có gọi
Dzung thêm 1 lần nào nữa…
1. Git là gì?
Ngày xửa ngày xưa, khi các lão đại trong làng coding sau khi vật vã với sao chép code khi team work cũng như
quản lý source của team thì các bác mới nghĩ ra các tools VSC (version source control) giúp việc quản lý source dễ
dàng hơn bao giờ hết.Git là một trong nhũng tool thần thành ấy. Sâu xa hơn về git thì em cũng ứ biết đâu.
2. Các khái niệm cần biết ở trong git?
- Repository: Repository có thể được hiểu như thư mục chứa source code, khi clone project từ trên git server tức là
bạn đang tạo một bản sao của remote repository ở trên local và được hiểu là local repository. - Branch: Branch là nhánh phát triển của project. Một project có thể có nhiều branch được phát triển đồng thời giúp
tiến độ phát triển project nhanh hơn. - Master: Đây là branch chính chứa version code đúng nhất của project và được protected. Thường thì không được
commit trực tiếp vào master. - Commit: Đánh dấu lưu lại toàn bộ thay đổi nằm trong vùng staging vào branch.
- Merge: Ở đây có thể hiểu là gộp branch hiện tại với 1 branch khác, update những commit còn thiếu ở branch kia vào
branch hiện tại. - Checkout: Chuyển từ branch hiện tại sang một branch khác đã có sẵn hoặc một branch mới. Nếu là branch mới, code
của branch sau khi checkout sẽ giống với branch làm việc. Toàn bộ thay đổi nếu chưa commit thì sẽ chuyển sang branch
mới. Branch cũ sẽ trở về trạng thái của lần commit gần nhất. - Pull là kéo toàn bộ code của remote repository về local repository.
- Push là đẩy những code đã commit ở local repository lên branch hiện tại ở trên remote server.
3. Bespokify git workflow
Bước 1: Clone project về local bằng command : git clone địa_chỉ_repository
Bước 2: Để thêm một tính năng mới hay fix bug, ta checkout ra 1 branch mới bằng command git checkout -b tên_branch
.
Nếu branch đi kèm với issue thì nên tên branch nên kèm thêm id của issue. Vd như:1
git checkout -b 69-fix-bug-created-by-dzung
Như vậy sau khi merge branch vào master, issue sẽ tự động close.
Bước 3: Sau khi hoàn thành công việc, chúng ta sẽ commit code và push lên remote server và tạo merge request.
Thực ra, trước hoàn thành chúng ta cũng nên thường xuyên đẩy code lên thường xuyên để reviewer dễ review code
cũng như là đề phòng lỡ tay làm mất code trên local còn có để back up. Các thao tác để đẩy code lên origin:
- Sử dụng lệnh
git add path_của_file
để thêm toàn bộ thay đổi vào staging. Để add toàn bộ ta sử dụng dấu.
thay
cho tên file
Commit toàn bộ thay đổi bằng lệnhgit commit -am "commit message"
. Nếu commit riêng từng file sử dụng lệnh
git commit -m path_của_file "commit message"
- Sử dụng lệnh
git push origin tên_branch
để đẩy code lên remote origin. Nếu trong lần commit đầu sử dụng thêm
thuộc tính -u thì sẽ up stream branch hiện tại với branch ở trên origin. Các lần sau chỉ cần sử dụng lệnhgit push
để đẩy code lên.
Bước 4: Sau n lần bị chặt chém bởi reviewer, team sẽ đi đến quyết định merge branch hiện tại vào master. Trước khi merge,
chúng ta phải gộp toàn bộ commit lại thành 1 commit để dễ dàng quản lý project. Để gộp toàn bộ thành 1 commit
đẹp ta làm theo những bước sau:
- Checkout master và pull code mới nhất về
- Merge master vào branch hiện tại để chắc chắn code hiện tại không cách master quá xa
- Sử dụng lệnh
git reset origin/master
để reset lại những commit thay đổi khác với master - Add toàn bộ thay đổi vào bằng lệnh
git add .
- Commit toàn bộ thay đổi với 1 message thật có tâm
- Do branch ở local khác số commit ở branch remote nên chúng ta sẽ sử dụng lệnh
git push -f
để thay đổi
branch ở trên remote giống ở local
Bước 5: Sau khi branch hiện tại được merge vào master, chúng ta pull master mới nhất về và xử lý task mới như
từ bước 2 trở đi.
4. Những lưu ý nho nhỏ khi dùng git
- Conflict: Là trường hợp người cùng làm việc trên 1 file hoặc 2 branch đều sửa chung 1 file. Như thế git sẽ
không biết nhận sự thay đổi nào. Lúc này nên solve bằng tay để tránh code lỗi hoặc mất code. Để tránh conflict,
nên tránh làm việc trên cùng 1 file. Nếu có hãy pull về trước khi push code. - Commit message không có tâm: Lúc mới vào, do lười nghĩ nên commit message của Dzung thường xuyên là “.”. Sau
một lần Dzung phải lục vào đống message “.” của bản thân để tìm đoạn code cần thì Dũng đã biết commit có tâm
hơn. Vì vậy hãy commit có tâm, đừng để đồng đội khổ. Đừng như Dzung! - Update master ngay lúc có branch khác được merge vào master.
- Xem git graph để xem vị trí của branch hiện tại so với master thường xuyên.
- Gọi người có khả năng trước khi mọi chuyện đi quá xa ngoài tầm kiểm soát.