Đàm đạo về git - Suy nghĩ về git cho người mới bắt đầu

Đàm đạo về git - Suy nghĩ về git cho người mới bắt đầu

Những mẩu tin ngắn hàng ngày dành cho bạn
  • Quá ghê ghớm, Codeium - vốn được biết đến như một đối thủ của Github Copilot, khi nó cho người dùng dùng miễn phí không giới hạn. Mới đây họ giới thiệu thêm Windsurf Editor - không chỉ còn là VSCode Extentions nữa mà là một trình Editor luôn - cạnh tranh trực tiếp với Cursor. Và điểm chính là nó... hoàn toàn miễn phí 🫣.

    » Xem thêm
  • Tin vui đầu này, Github Copilot đã chính thức có bản Free cho tất cả mọi người.

    Github Copilot là một trợ lý AI code cùng chúng ta, nó có thể tự động hoàn thành mã, trò chuyện hoặc sửa lỗi. Hiện đang hỗ trợ nhiều trình soạn thảo, IDE phổ biến như VSCode, JetBrains, XCode...

    Phiên bản miễn phí đang bị giới hạn 2000 Suggestions, và khoảng 50 requests đến tính năng Chat hàng tháng. Sau đó bạn có thể nâng cấp lên các phiên bản cao cấp hơn với giá từ 10$.

    Theo đánh giá của mình thì Copilot rất tốt và xứng đáng trong tầm giá, đang dùng hàng ngày 😄

    » Xem thêm
  • Có một nghiên cứu khá thú vị mà mình rút ra được đó là: "Người dùng chẳng bao giờ chịu đọc những thứ mà họ không muốn". (Khẳng định chắc nịch thế chứ, đa số thì đúng hơn 😅).

    Không tin á, mình dám cá chắc là bạn đã không ít lần gặp trường hợp nhấn vào một nút gì đó liên tục mà nó không phản hồi, nhưng thật ra là nó có báo một dòng lỗi ở đâu đó. Hoặc nhập xong xuôi các thứ rồi đến lúc nhấn nút gửi thì không gửi được. Bực mình mới kéo lên trên hoặc xuống dưới đọc thì à... hoá ra là phải làm thêm bước này bước kia đúng không?

    Cũng chẳng đâu xa ngay như blog của mình đây. Nghĩ là mọi người ai mà quan tâm đến blog sẽ nhấn vào nút "Cho phép bật thông báo" ở ngay phía dưới bài viết. Nhưng sự thật là chẳng ai thèm bấm cả. Có phải là họ không muốn nhận không? Chắc là không! Mình nghĩ do họ không đọc đến dòng đó thôi.

    Bằng chứng là chỉ khi cho hiện một thông báo chiếm một nửa cái màn hình, hoặc bất ngờ hiện ra để gây sự chú ý thì họ mới thật sự đọc và dĩ nhiên thu hút thêm vài người đăng ký - điều mà trước đó chẳng bao giờ đạt được.

    » Xem thêm

Vấn đề

Git là một công cụ quản lý phiên bản và làm việc nhóm rất phổ biến hiện nay. Nhưng không vì thế mà ai cũng biết sử dụng thành thạo git, chứ chưa nói đến nhiều tính năng nâng cao khác. Sở dĩ nói như vậy là vì tôi đã tiếp xúc với nhiều câu chuyện về cách sử dụng git của đồng nghiệp, thoạt nhìn có vẻ họ không gặp vấn đề gì, nhưng trong sâu xa có nhiều câu lệnh khiến cho họ phải lúng túng. Ngay cả bản thân tôi cũng thế, có nhiều tình huống làm cho mình cảm thấy thật bối rối.

Bên cạnh những tính năng mà git trao cho ta qua dòng lệnh thì có thể nói đa phần chúng ta không sử dụng git đúng cách là từ trong lối suy nghĩ. Tưởng tượng nhiều người làm việc với git chỉ đơn thuần là nhớ một vài lệnh mà mình hay dùng, hoặc là lệnh đã được áp dụng trong các dự án từ rất lâu trước đó. Điều đó dẫn đến việc chỉ biết sử dụng lệnh mà không để ý đến lý do tại sao phải dùng lệnh đó.

Bắt đầu với những dự án cá nhân từ khi còn ngồi trên ghế nhà trường, gọi là dự án thì hơi quá, đúng ra thì đó chỉ là các opensource mà tôi nghịch ngợm, xào nấu lại theo sở thích. Mỗi lần phát hành phiên bản ổn định (có thể gọi là "go production", mặc dù hồi đó vẫn chưa có biết đến mấy khái niệm này) hoặc chuẩn bị làm một điều gì đó lớn mà có nguy cơ thay đổi logic, thì cách mà tôi làm là sao chép dự án ra rồi thực hiện thay đổi mới trên đó. Nếu tính năng thành công thì sẽ giữ lại, còn thất bại thì bỏ, coi như làm lại từ đầu.

Như thế, mỗi phiên bản ổn định sẽ được tôi nén lại, đặt cho một cái tên kèm với ngày nén. Từng ngày, số lượng các tệp nhiều lên đến một mức nào đó, tôi còn không biết tất cả chúng chứa những thay đổi gì, chỉ còn cách đoán mò. Hoặc sau này biết cách viết thêm những thay đổi vào trong một tệp README.md.

Đấy là cách mà tôi phát triển dự án khi chưa biết đến git. Có thể nhận thấy nhiều hạn chế khi làm theo cách này, phải sao chép mã liên tục và không thể nhìn lại được những thay đổi trước đó. Chợt nghĩ chẳng lẽ tất cả lập trình viên đều làm như thế này!?

Git xuất hiện! Nhớ lại lần đầu tiếp xúc với git, tôi vẫn chưa rõ khái niệm về nó, nếu làm theo hướng dẫn của Github, tôi đẩy được dự án lên trên kho lưu trữ trên này. Thật tuyệt vời, thế là giờ đây tôi đã có thể mang nó đi chia sẻ với người khác chứ không cần nén lại và gửi một cách thủ công nữa. Sau đó tôi học thêm được cách để tiếp tục đẩy mã mới lên và xem lại thay đổi trước đó.

Khi đi làm, tôi được biết nhiều hơn về cách sử dụng git và dùng git để làm việc nhóm, học nhiều hơn về gitflow và tư duy về cách mà git hoạt động, và cả những cuộc trao đổi với đồng nghiệp về git.

Thay vì nhớ máy móc cách dùng thì hãy dành thời gian để hình dung vấn đề mà git có thể giải quyết. Vì thế bài viết ngày hôm nay là chia sẻ của tôi về cách sử dụng git cho người mới bắt đầu.

Git giúp quản lý phiên bản

Như trong câu chuyện đầu bài viết, nếu không có git, tôi cần phải làm rất nhiều công đoạn thủ công, phức tạp và rườm ra. Khi có git, tôi có thể dễ dàng "commit" mã mình viết ra tại mỗi thời điểm, sau đó phát triển tính năng và tiết tục commit.

Cách áp dụng git vào dự án cũng rất đơn giản, chỉ cần một lệnh init.

$ git init

Commit được hiểu là hành động tạo ra cam kết cho một phiên bản mã tại thời điểm hiện tại. Giống như việc bạn sao chép mã ra thư mục khác và nén lại, nhưng thay vì làm thủ công như thế thì chỉ với một lệnh commit, git làm mọi thứ cho chúng ta.

$ git commit -m "nội dung commit"

Sau khi commit, git lưu giữ lại nhật ký commit đã tạo. Để xem tất cả commit, chỉ cần dùng git log.

$ git log

commit 98cd1bfde6dbe39f883324dad476f30dd836b3c4
Author: hoaitx <[email protected]>
Date:   Mon Feb 26 23:50:23 2024 +0700

    fix: một số lỗi giao diện

commit 7c24960175c652dabdf1f4615622b0375e81eea8
Author: hoaitx <[email protected]>
Date:   Sun Feb 25 16:37:25 2024 +0700

    feat: hiệu chỉnh giao diện

Nếu muốn xem lại mã tại thời điểm commit, chỉ cần checkout đến commit đó, tất cả mã quay về thời điểm commit.

$ git checkout 98cd1bfde6dbe39f883324dad476f30dd836b3c4

Với dãy 98cd... là hash của commit trong lịch sử commit.

Nhưng trước khi commit, git cần biết bạn thực hiện những thay đổi gì trên những file nào. Thông thường, chúng ta chỉ nên tạo ra một commit cho một tính năng cụ thể vừa làm xong, vì thế lý tưởng nhất là commit áp dụng cho tất cả các file vừa thay đổi.

$ git add .  

Git giúp quản lý mã tập trung

Khi dự án chỉ nằm ở trong máy của bạn, nó đơn giản là một dự án cục bộ, nếu muốn chia sẻ dự án cho với người khác thì cần thêm một bước nữa là đẩy lên một cơ sở quản lý mã tập trung (remote repository).

Git local vs remote

Nếu không biết đến git, cách tôi vẫn làm là nén dự án lại, đặt tên cho nó bằng những cái tên bất chợt nghĩ ra được rồi tải lên đâu đó, gửi liên kết cho người nhận tải về rồi tiếp tục chỉnh sửa. Thử tưởng tượng một ngày mỗi người sửa bao nhiêu lần thì phải trao đổi với nhau như thế nào? Chưa kể họ còn sửa vào cả những đoạn mã mà chúng ta đang viết dở.

Github hay Gitlab là hai cái tên rất phổ biến giúp bạn đẩy mã lên và chia sẻ chúng. Ví dụ sau khi commit, đẩy mã lên bằng cách dùng lệnh push.

$ git push

Nhưng trước đó, git cần biết chính xác dự án local đang gắn với cơ sở quản lý mã tập trung nào? Github hay Gitlab? Địa chỉ là gì?... Đừng lo lắng, vì khi tạo ra một kho lưu trữ (repository) trên Github, Gitlab nó sẽ chỉ cho bạn từng bước.

Github

Ví dụ:

$ git remote add origin [email protected]:tonghoai/demo.git

Sau đó hãy đẩy dự án lên remote.

$ git push -u origin main

[email protected]:tonghoai/demo.git chính là địa chỉ remote của dự án. Thiết lập kho remote chỉ cần làm một lần và sau đó chỉ cần push mỗi khi tạo commit mới để đẩy mã mới nhất của bạn lên trên này.

Git giúp làm việc nhóm

Làm việc nhóm luôn đòi hỏi quy trình phức tạp hơn làm việc một mình rất nhiều.

Khi chỉ có một mình bạn làm việc trong dự án, bạn có thể thoải mái thêm sửa xóa và commit những thay đổi, tạo ra nhiều phiên bản khác nhau rồi đẩy mã lên remote. Bây giờ một người khác tham gia vào quá trình viết mã chung, điều đầu tiên họ cần làm là lấy được kho lưu trữ remote về.

$ git clone [email protected]:tonghoai/demo.git

Ngay lập tức dự án được kéo về trong thư mục demo. Chỉ cần mở ra là đã có thể bắt đầu viết mã.

Nhưng chưa kịp viết gì thì bạn báo với họ "tôi vừa push code mới lên đó, pull về đi". pull là hành động kéo những thay đổi mới nhất từ remote về local.

$ git pull

Nếu may mắn, bạn sẽ pull code về thành công, còn khi có bất kỳ lỗi nào xuất hiện, chúc mừng bạn đã bắt đầu với quy trình làm việc phức tạp nhất quả đất!

Git có cơ chế giải quyết xung đột mã khi làm việc nhóm rất hiệu quả. Tuy nhiên trong bài viết này tôi sẽ chưa nhắc đến. Nếu bạn là một người mới làm quen với git, hãy dành thời gian để hiểu cách git hoạt động trước khi muốn "chế ngự" được con thủy quái này. Còn nếu bạn có thắc mắc gì, hãy để lại bình luận dưới bài viết nhé!

Cao cấp
Hello

Tôi & khao khát "chơi chữ"

Bạn đã thử viết? Và rồi thất bại hoặc chưa ưng ý? Tại 2coffee.dev chúng tôi đã có quãng thời gian chật vật với công việc viết. Đừng nản chí, vì giờ đây chúng tôi đã có cách giúp bạn. Hãy bấm vào để trở thành hội viên ngay!

Bạn đã thử viết? Và rồi thất bại hoặc chưa ưng ý? Tại 2coffee.dev chúng tôi đã có quãng thời gian chật vật với công việc viết. Đừng nản chí, vì giờ đây chúng tôi đã có cách giúp bạn. Hãy bấm vào để trở thành hội viên ngay!

Xem tất cả

Đăng ký nhận thông báo bài viết mới

hoặc
* Bản tin tổng hợp được gửi mỗi 1-2 tuần, huỷ bất cứ lúc nào.
Author

Xin chào, tôi tên là Hoài - một anh Dev kể chuyện bằng cách viết ✍️ và làm sản phẩm 🚀. Với nhiều năm kinh nghiệm lập trình, tôi đã đóng góp một phần công sức cho nhiều sản phẩm mang lại giá trị cho người dùng tại nơi đang làm việc, cũng như cho chính bản thân. Sở thích của tôi là đọc, viết, nghiên cứu... Tôi tạo ra trang Blog này với sứ mệnh mang đến những bài viết chất lượng cho độc giả của 2coffee.dev.Hãy theo dõi tôi qua các kênh LinkedIn, Facebook, Instagram, Telegram.

Bạn thấy bài viết này có ích?
Không

Bình luận (0)

Nội dung bình luận...