Được tạo ra bởi Linus Torvalds vào năm 2005, Git đã trở thành một phần không thể thiếu trong quy trình làm việc của các lập trình viên. Các lệnh Git cho phép bạn làm việc hiệu quả hơn với mã nguồn, duy trì lịch sử của các thay đổi và hợp tác với đồng đội.
Git không ngừng phát triển và mỗi phiên bản mới lại bổ sung các tính năng và lệnh mới để hỗ trợ người dùng làm việc nhanh chóng và dễ dàng hơn. Trong bài viết này, hãy cùng Green Academy tìm hiểu về 10 lệnh Git mới cần biết giúp tăng hiệu quả công việc trong phát triển phần mềm.
Git là một hệ thống quản lý phiên bản phân tán, cho phép các lập trình viên làm việc trên các phiên bản khác nhau của mã nguồn mà không lo bị mất dữ liệu. Git giúp theo dõi lịch sử thay đổi của dự án, hỗ trợ hợp tác làm việc và phục hồi các phiên bản trước đó của mã nguồn. Git lưu trữ toàn bộ lịch sử thay đổi và cho phép bạn dễ dàng quay lại trạng thái trước đó hoặc làm việc trên các nhánh riêng biệt của dự án mà không ảnh hưởng đến nhánh chính.
Quản lý phiên bản: Git cho phép bạn theo dõi sự thay đổi của mã nguồn, dễ dàng quay lại các phiên bản cũ và xem lịch sử thay đổi.
Hợp tác hiệu quả: Git giúp các lập trình viên làm việc cùng nhau trên một dự án mà không lo xung đột. Mỗi người có thể làm việc trên một nhánh riêng biệt và sau đó hợp nhất lại.
Phát triển song song: Bạn có thể phát triển các tính năng mới hoặc sửa lỗi trên các nhánh riêng biệt mà không làm ảnh hưởng đến mã nguồn chính.
Khả năng khôi phục dữ liệu: Git cho phép bạn phục hồi dự án về các trạng thái trước đó, giúp giảm thiểu rủi ro mất mát dữ liệu.
Dưới đây là 10 lệnh Git mới giúp cải thiện quy trình làm việc của bạn, được giới thiệu trong các phiên bản gần đây của Git:
Trước Git 2.23, git checkout là lệnh chính để chuyển nhánh, nhưng nó còn có nhiều chức năng khác như khôi phục file và kiểm tra commit cụ thể. Điều này khiến lệnh checkout trở nên phức tạp và dễ gây nhầm lẫn.
Git 2.23 đã giới thiệu lệnh git switch, giúp đơn giản hóa thao tác chuyển nhánh:
Chuyển sang nhánh khác:
git switch feature-branch
Tạo và chuyển sang nhánh mới:
git switch -c new-branch
Lệnh này giúp giảm nguy cơ xảy ra sai sót trong quá trình chuyển nhánh mà không làm thay đổi các file.
Trước khi có lệnh git restore, bạn có thể sử dụng git checkout hoặc git reset để hoàn nguyên các thay đổi. Tuy nhiên, những lệnh này có thể gây ảnh hưởng đến nhánh nếu sử dụng sai cách.
Git 2.23 giới thiệu git restore, giúp phục hồi các thay đổi một cách an toàn và rõ ràng hơn:
Hoàn nguyên thay đổi trong thư mục làm việc:
git restore main.js
Hoàn nguyên các thay đổi đã staging:
git restore --staged main.js
Lệnh này giúp bạn dễ dàng hoàn nguyên mà không lo bị ảnh hưởng đến các commit hoặc nhánh khác.
Khi repository phát triển lớn mạnh, hiệu suất có thể giảm. Git 2.29 giới thiệu git maintenance, tự động hóa các tác vụ bảo trì như dọn dẹp và tối ưu hóa repository:
Kích hoạt bảo trì tự động:
git maintenance start
Chạy các tác vụ dọn dẹp ngay lập tức:
git maintenance run
Điều này giúp bạn giữ cho repository luôn khỏe mạnh mà không cần phải thực hiện thủ công các tác vụ như garbage collection hay repacking.
Trong các monorepo, việc clone toàn bộ repository là không hiệu quả nếu bạn chỉ cần làm việc với một phần nhỏ. Git 2.25 giới thiệu git sparse-checkout để giải quyết vấn đề này:
Kích hoạt chế độ sparse-checkout:
git sparse-checkout init
Chỉ lấy các thư mục cụ thể:
git sparse-checkout set services/ docs/
Lệnh này giúp bạn chỉ lấy các phần cần thiết của repository, tiết kiệm thời gian và dung lượng lưu trữ.
Kể từ Git 2.35, bạn có thể sử dụng git log --remerge-diff để hiểu rõ hơn về các thay đổi được giới thiệu trong quá trình merge, đặc biệt là khi có xung đột:
Hiển thị sự khác biệt trong merge:
git log --remerge-diff
Lệnh này giúp bạn gỡ lỗi xung đột merge và dễ dàng theo dõi những thay đổi quan trọng đã được giới thiệu.
Khi thực hiện thay đổi định dạng mã nguồn hàng loạt, git blame có thể không còn hữu ích, vì mọi dòng đều chỉ đến commit thay đổi định dạng thay vì tác giả ban đầu. Để giải quyết vấn đề này, Git 2.23 giới thiệu tùy chọn --ignore-rev:
Bỏ qua commit định dạng:
git blame --ignore-rev commit-hash
Cấu hình bỏ qua commit định dạng tự động:
echo commit-hash >> .git-blame-ignore-revs
git config blame.ignoreRevsFile .git-blame-ignore-revs
Điều này giúp giữ cho việc sử dụng git blame chính xác và có ích.
Sau khi thực hiện rebase, bạn có thể muốn so sánh các commit cũ với commit mới. Git 2.26 giới thiệu git range-diff để giúp bạn làm điều này:
So sánh phạm vi commit:
git range-diff <range1> <range2>
Lệnh này giúp bạn theo dõi sự thay đổi giữa các commit trong quá trình chỉnh sửa lịch sử.
Với git worktree, bạn có thể làm việc trên nhiều nhánh trong các thư mục làm việc khác nhau mà không cần phải chuyển nhánh liên tục:
Thêm worktree mới cho một nhánh:
git worktree add ../feature-branch feature-branch
Xóa worktree khi đã hoàn thành:
git worktree remove ../feature-branch
Điều này giúp bạn tiết kiệm thời gian và công sức khi làm việc trên các nhánh khác nhau.
Khi thực hiện rebase, các tham chiếu nhánh có thể không được cập nhật, dẫn đến sự không đồng bộ. Git 2.38 giới thiệu tùy chọn --update-refs để tự động đồng bộ các tham chiếu:
Cập nhật các tham chiếu sau khi rebase:
git rebase --update-refs
Điều này giúp bạn tránh việc phải cập nhật thủ công các references sau mỗi lần rebase.
Git cung cấp các lệnh git commit --fixup và git rebase --autosquash để giúp bạn sửa các commit đã được thực hiện trước đó mà không làm rối loạn lịch sử commit:
Tạo commit fixup:
git commit --fixup=<commit-hash>
Tự động squash các commit fixup:
git rebase -i --autosquash <base-branch>
Lệnh này giúp bạn giữ lịch sử commit sạch sẽ và dễ hiểu, đặc biệt khi bạn phải chỉnh sửa các commit trước đó.
Việc nắm vững các lệnh Git mới có thể giúp bạn làm việc hiệu quả hơn, đặc biệt khi phải đối mặt với các repository lớn, làm việc trên nhiều nhánh cùng lúc hoặc cần quản lý lịch sử commit một cách chính xác. Hãy thử sử dụng những lệnh này để tối ưu hóa quy trình làm việc và cải thiện hiệu quả phát triển phần mềm của bạn.
Tìm hiểu khóa Lập trình Fullstack tại Green Academy.
New Paragraph
MỌI NGƯỜI ĐANG QUAN TÂM
CÓ THỂ BẠN QUAN TÂM
Chi Nhánh 3:
Số 201 Trường Chinh, Phường Khương Mai, Quận Thanh Xuân, Tp.Hà Nội