CÔNG VIỆC CỦA CHÚNG TÔI

+ Đào tạo & hỗ trợ thi & Cấp chứng chỉ Ứng dụng CNTT cơ bản, nâng cao
+ Cung cấp dịch vụ Thiết kế - Lập trình web
+ Các giải pháp triển khai - quản trị hệ thống mạng doanh nghiệp
+ ĐÀO TẠO CHUYÊN NGHIỆP: LẬP TRÌNH (C, .Net, ASP.net, PHP, Thiết kế Đồ họa

Các câu lệnh Git không thể không biết nếu bạn là lập trình viên

Giống như hầu hết người mới bắt đầu sử dụng Git, tôi lên StackOverflow search các câu lệnh git rồi copy-paste vào mà không thực sự hiểu cái gì cả.


Chú thích ảnh:
A: Đây là git. Nó được sử dụng để theo dõi các dự án cộng tác, biểu diễn bởi một biểu đồ nhánh cây đẹp tuyệt vời.
B: Ôi cool thế! Dùng thế nào?
A: Méo biết. Cứ nhớ các lệnh rồi gõ vào thôi, nếu sai, thấy báo lỗi, thì save project vào chỗ nào khác rồi xóa repo và làm lại cái mới 🙂

Tôi đã nhớ mình đã nghĩ: “Cuộc sống không phải tốt đẹp hơn nếu trên đời này có một dãy các câu lệnh Git thường được sử dụng cùng với lời giải thích tại sao chúng lại có ích không được à?”
Vậy nên, sau nhiều năm, tôi đã biên soạn ra một dãy như thế, và bổ sung một số ví dụ mà ngay cả các developer ở mức nâng cao cũng thấy có ích.
Để giữ tính thực tế, danh sách các câu lệnh Git này được dựa trên những câu lệnh mà tôi thực sự sử dụng tuần trước.

Hầu hết các developer đều sử dụng Git, và hầu hết là GitHub. Nhưng đa phần các developer 99% chỉ sử dụng 3 câu lệnh này:
git add –all
git commit -am “<message>”
git push origin master
Nếu chỉ làm việc một mình thôi thì không sao, nhưng nếu độ ổn định và bảo trì bắt đầu trở thành một sự ưu tiên lớn thì việc dọn dẹp commit, dựa vào một nhánh (branch) nhất định, viết commit messege rõ nghĩa trở thành vấn đề quan trọng.
Tôi sẽ bắt đầu với những câu lệnh thường được sử dụng để những người mới bắt đầu cảm thấy dễ hiểu hơn Git có thể làm gì, rồi chuyển sang những câu lệnh mang tính nâng cao hơn.

Những câu lệnh thường sử dụng

Để khởi tạo Git trong một repository (repo), bạn chỉ cần gõ câu lệnh sau. Nếu bạn không khởi tạo Git, bạn không thể sử dụng bất kì các câu lệnh Git nào cả.
git init
Nếu bạn sử dụng GitHub và bạn đẩy code lên một repo GitHub được lưu trữ online, thì khi đó bạn sử dụng remote repo (repo từ xa). Tên mặc định cho cái remote repo đó là origin. Nếu bạn clone một project từ GitHub thì tự thân nó đã có origin rồi. Bạn có thể xem URL của remote repo đó bằng câu lệnh git remote -v.
Nếu bạn muốn tự khởi tạo Git của riêng mình và muốn nó liên kết với GitHub, thì bạn phải tự tạo trên GitHub trước, copy URL của repo, sử dụng lệnh git remote add origin <URL>, thay URL của repo vào “<URL>”. Từ đó, bạn có thể thêm, commit và push đến remote repo của bạn.
git remote -v
git remote add origin <url>
git remote set-url origin <url>
Câu lệnh cuối được sử dụng khi bạn cần đổi remote repo. Giả dụ bạn copy một cái repo của người khác và bạn muốn chuyển owner thành tài khoản GitHub của bạn. Thì bạn sử dụng câu lệnh đó.

Cách thông dụng nhất để copy một cái repo là sử dụng lệnh git clone.
* Nên nhớ là cái remote repo đó sẽ được liên kết với tài khoản mà bạn dùng để clone. Vậy nếu bạn clone một repo thuộc về một người khác, bạn sẽ không push được lên GitHub trừ khi bạn đổi origin của nó.
git clone <url>
Rất nhanh, bạn sẽ bắt đầu “táy máy” vào branch (nhánh). Nếu bạn không hiểu branch là gì, có rất nhiều tutorial giải thích chi tiết branch là gì, và bạn nên đọc chúng trước khi đọc tiếp.
Câu lệnh git branch liệt kê tất cả các branch (nhánh) trong local của bạn. Nếu bạn muốn tạo một branch mới, bạn có thể sử dụng câu lệnh git branch <tên branch>, tên branch có thể ví dụ là “master”, “develop”.
Câu lệnh git checkout <tên branch> sẽ chuyển sang một nhánh đã tồn tại khác. Bạn cũng có thể sử dụng lệnh git checkout -b <tên branch> để tạo một nhánh và ngay lập tức chuyển sang nhánh đó. Hầu hết mọi người sử dụng câu lệnh này thay vì dùng tự tạo một branch riêng rồi nhảy sang branch đó.
git branch
git branch <name>
git checkout <name>
git checkout -b <name>

Nếu bạn đã thực hiện một loạt các thay đổi cho một branch, giả dụ tên branch là “develop”, và bạn muốn hợp nhất branch đó vào branch chính – master của bạn, bạn sử dụng câu lệnh git merge <tên branch>. Bạn sẽ checkout nhánh master, rồi chạy lệnh git merge develop để hợp nhất nhánh develop vào nhánh master.
git merge <branch>
Nếu bạn làm việc với nhiều người, bạn sẽ gặp trường hợp trên GitHub đã được cập nhật rồi nhưng máy bạn lại không có những thay đổi đó. Khi đó, bạn có thể sử dụng lệnh git pull origin <tên branch> để kéo những thay đổi mới nhất về.
git pull origin <branch>
Nếu bạn muốn biết những file nào đã bị thay đổi và những file nào được theo dõi, bạn có thể sử dụng lệnh git statusNếu bạn muốn biết những file đã được thay đổi bao nhiêu, bạn có thể sử dụng lệnh git diff để biết được mỗi file đã thay đổi bao nhiêu dòng code.
git status
git diff –stat

Các lệnh nâng cao và ví dụ thực hành

Bạn sẽ sớm đạt đến thời điểm bạn muốn các commit của bạn nhìn trông sáng sủa, sạch sẽ. Bạn cũng muốn nghịch chơi lịch sử commit để các commit của bạn trông dễ hiểu hơn và tránh trường hợp một thay đổi không mong muốn.
Lệnh git log giúp bạn biết được lịch sử commit. Bạn sẽ muốn biết lịch sử commit của bạn.
Các commit của bạn sẽ có một tin nhắn và một hash – dãy các số và chữ theo thứ tự ngẫu nhiên, ví dụ giống như thế này c3d882aa1aa4e3d5f18b3890132670fbeac912f7
git log
Giả dụ bạn push một commit phá app của bạn. Thay vì bạn ngồi fix bug thì bạn quay lại một commit trước và thử lại.
Nếu bạn muốn quay ngược lại và checkout app của bạn từ các lần commit trước, bạn có thể làm nó trực tiếp bằng cách sử dụng dãy hash đó. Bằng cách này, app của bạn tách rời với phiên bản hiện tại (bởi bạn đang chỉnh sửa một bản ghi chép cũ, chứ không phải bản ghi chép hiện tại.
git checkout c3d88eaa1aa4e4d5f
Sau đó, nếu bạn muốn thay đổi từ một bản ghi chép cũ và push lại nó lên thì bạn phải sử dụng force push.

Chú ý: Force push rất nguy hiểm và chỉ nên được thực hiện khi bạn không còn cách nào khác. Nó sẽ viết lại lịch sử commit của app của bạn và bạn sẽ mất các bản ghi chép sau bản đang định push

Và về cơ bản thì nó rất không thực dụng khi để tất cả trong một commit. Có lẽ bạn muốn giữ tiến độ của bạn trước khi thực hiện một điều gì đó nguy hiểm. Cho vấn đề đó, chúng ta có lệnh git base.
Ví dụ bạn có 4 commit trong máy local của bạn (chưa push trên GitHub). Các commit của bạn trông thật vũng về và thiếu quyết đoán. Bạn có thể dùng lệnh rebase để gộp tất cả các commit lại với nhau thành một commit ngắn gọn, vắn tắt hơn.
git rebase -i HEAD~4

Câu lệnh trên sẽ mở editor mặc định ở máy tính của bạn (thường là Vim), với nhiều cách lựa chọn cách bạn muốn thay đổi commit. Nó sẽ nhìn giống như phía dưới:
pick 130deo9 oldest commit message
pick 4209fei second oldest commit message
pick 4390gne third oldest commit message
pick bmo0dne newest commit message
Để gộp tất cả các commit đó lại, chúng ta cần sửa “pick” thành “fixup” để hợp các commit và loại bỏ các commit messege. Chú ý là trong vim, bạn cần phải nhấn phím “a” hoặc “i” để có thể chỉnh sửa được văn bản, để save và thoát, bạn cần nhấn phím Esc rồi nhấn tổ hợp phím “shift + z + z”
pick 130deo9 oldest commit message
fixup 4209fei second oldest commit message
fixup 4390gne third oldest commit message
fixup bmo0dne newest commit message
Câu lệnh này sẽ hợp nhất tất cả các commit của bạn thành một commit với messege là “oldest commit message”.
Để thay đổi commit messege, bạn sử dụng amend
git commit –amend

Lưu ý: bạn nên tránh rebase và nhét commit của bạn nếu bạn đang cộng tác trong một dự án, và có code đẩy lên GitHub. Nếu bạn bắt đầu thay đổi lịch sử các phiên bản mà không báo cho mọi người, bạn có thể sẽ làm cho cuộc sống của tất cả mọi người thành ác mộng với các lỗi rất khó theo dõi.
Có một số lượng gần như vô tận các lệnh có thể với Git, nhưng các lệnh này có thể là những lệnh duy nhất bạn cần biết trong vài năm đầu tiên lập trình.
Nguồn: medium.freecodecamp.com


EmoticonEmoticon