Những Lệnh Git Quan Trọng Mà Developer Cần Biết

Những Lệnh Git Quan Trọng Mà Developer Cần Biết

Bài viết này nhằm 2 mục đích, một là mình muốn chia sẻ với mọi người về những câu lệnh làm việc với git mà ai viết code cũng cần biết, ngoài ra mình cũng muốn lưu lại một vài thứ mà mình đã phải googling không ít lần mỗi khi sử dụng để nếu lần sau có quên, mình có thể quay lại bài viết thay vì vào google gõ mấy dòng chữ kiểu như "how to ... using git" :D.

Mình đã làm việc với git khoảng 2 năm tuy nhiên không phải lúc nào mình cũng nhớ hết tất cả các câu lệnh xử lý với git và thậm chí mình nhớ nó nhưng lại không nhớ được từ đó viết như nào. Vậy là lại phải google mất vài giây. Bài viết này phù hợp với những ai đã có một chút kiến thức về git hay những ai đã làm việc với git mà có tính hay quên như mình.

Dành cho ai chưa biết về Git

Git là phần mềm quản lý mã nguồn phân tán được phát triển bởi Linus Torvalds vào năm 2005, ban đầu dành cho việc phát triển nhân Linux. Làm việc với git là rất quan trọng đối với mọi lập trình viên. Bài viết này sẽ đưa ra những lệnh git mà lập trình viên nào cũng cần biết, giúp cho các bạn học tập và làm việc hiệu quả hơn.

Nội dung bài viết:

  1. Thêm remote repository
  2. Thay đổi remote repository
  3. Xóa branch
  4. Merge một file từ branch này sang branch khác
  5. Hoàn tác một commit 

1. Thêm remote repositories

Một kho lưu trữ code còn gọi là repository hay dân coder thường gọi là repo. Thông thường có hai loại repo là local repository và remote repository. Local repository là kho lưu trữ code ở tại máy của bạn, còn remote repository là phiên bản của các dự án của bạn được lưu trữ trên internet chẳng hạn như github hay gitlab là những nền tảng phổ biến nhất. Thêm một remote repository là một cách để nói với Git nơi những dòng code của bạn được lưu trữ trên internet.

Để thêm repository mới, bạn sử dụng lệnh sau:

git remote add <shortname> <url>

trong đó shortname là tên remote và là duy nhất và url là đường url của repository bạn muốn thêm.

Ví dụ, nếu mình muốn thêm một repository với tên remote là upstream, mình có thể làm như này:

git remote add upstream https://github.com/mikasa/demo.git

Để xem danh sách các URL đã thêm, hãy chạy lệnh sau:

git remote -v

Bạn sẽ thấy một danh sách các remote name và các remote URL bạn đã thêm.

Nhưng nếu bạn muốn thay đổi các remote URL này thì sao? Hãy chuyển sang lệnh Git tiếp theo.

2. Thay đổi remote repositories

Để thực hiện thay đổi, bạn sử dụng lệnh sau:

git remote set-url <an-existing-remote-name> <url>

trong đó, tên remote phía sau tham số set_url phải tồn tại. Điều đó có nghĩa là lệnh sẽ không thực hiện được nếu bạn chưa thêm tên remote trước đó.

Tiếp tục ví dụ ở phần 1, nếu mình muốn thay đổi remote URL, mình sẽ phải thực hiện:

git remote set-url upstream [email protected]:mikasa/demo.git

Hãy nhớ chạy git remote -v để xác nhận rằng thay đổi của bạn đã hoàn thành.

3. Xóa branch

Branch hay còn gọi là nhánh, là một phiên bản của repository khác với dự án làm việc chính. Hiểu đơn giản nó là một nhánh làm việc có chứa hệ thư mục, file độc lập với branch khác. Chắc hẳn bạn cũng quen với khái niệm này khi làm việc với git rồi, dưới đây mình sẽ hướng dẫn cách xóa branch ở máy local và trên remote repository.

Làm sao để xóa một branch ở dưới máy local

Để xóa một local branch, hãy chắc chắn rằng bạn không ở branch bạn muốn xóa. Vì vậy, bạn phải checkout sang một branch khác sử dụng git checkout <branch_name> và thực hiện xóa như sau:

git branch -d <name-of-branch>

Ví dụ, nếu mình muốn xóa một branch có tên fix_demo, mình sẽ làm như sau:

git branch -d fix_demo

Bạn có thể chạy git branch -a trên terminal của mình để xác nhận rằng branch đã được xóa thành công.

Đôi khi bạn có thể phải xóa một branch bạn đã push đến một remote repository. Làm thế nào để xóa trực tiếp trên remote repository.

Xóa một remote branch

Bạn sử dụng lệnh sau:

git push <remote-name> --delete <name-of-branch>

trong đó remote-name là tên của remote repository mà bạn muốn xóa branch.

Ví dụ, nếu muốn xóa branch fix_demo khỏi origin, ta sẽ thực hiện:

git push origin --delete fix_demo

Branch sẽ bị xóa trên remote repository.

4. Merge một file từ branch này sang branch khác

Đôi khi, bạn có thể muốn đưa nội dung của một file cụ thể trong một branch sang một branch khác, đó gọi là merge. Merge dịch ra có nghĩa là hợp nhất,

Ví dụ, bạn muốn hợp nhất nội dung của tệp index.html trong branch master của dự án vào branch development. Làm bằng cách nào?

Đầu tiên, checkout đến nhánh đích, trong trường hộp này ta sử dụng

git checkout development

Sau đó merge file bằng lệnh checkout --patch.

git checkout --patch master index.html

Khi đó, file index.html của branch master sẽ được kéo sang branch development.

Nếu bạn muốn ghi đè hoàn toàn file index.html trên branch development với file trên branch master, bạn bỏ --patch trong dòng lệnh trên.

git checkout master index.html

Ngoài ra, bỏ --patch nếu file index.html không tồn tại trên branch development.

5. Hoàn tác một commit 

Đôi khi bạn đã commit thay đổi của mình nhưng sau đó lại nhận thấy commit đó là không chính xác và bạn muốn hoàn tác commit này, tức đưa git về trạng thái trước đó. Đôi khi, bạn thậm chí có thể push các thay đổi đến một remote branch. Làm sao để bạn hoàn tác hoặc xóa commit này? Hãy bắt đầu với việc hoàn tác một local commit (commit tại máy của mình).

Một cách bạn có thể hoàn tác một local commit là sử dụng git reset.

Ví dụ: nếu bạn muốn hoàn tác commit cuối cùng được thực hiện, bạn có thể chạy lệnh này:

git reset --soft HEAD~1

Tham số --soft giữ những thay đổi bạn đã thực hiện cho các tập tin khi bạn đã commit, chỉ commit này được hoàn tác. Tuy nhiên, nếu bạn không muốn giữ các thay đổi đã thực hiện cho các file, bạn có thể sử dụng --hard :

git reset --hard HEAD~1

Mọi thứ sau khi --hard sẽ biến mất và dĩ nhiên vẫn sẽ có cách khôi phục lại, nhưng mình sẽ chưa nói ở đây :D

Lưu ý rằng bạn chỉ nên sử dụng --hard khi bạn chắc chắn rằng mình không cần thay đổi.

Ngoài ra, lưu ý rằng HEAD~1 là để chỉ commit gần đây nhất. Nếu bạn muốn hoàn tác một commit trước nữa, bạn có thể sử dụng git reflog để xem nhật ký của tất cả các commit trước đó. Sau đó sử dụng git reset.

Ví dụ: bạn check git reflog và thấy một commit có mã hash là 9157b6910, bạn thực hiện reset như sau:

git reset --soft 9157b6910

Còn sau đây sẽ là cách hoàn tác một remote commit

Bạn sử dụng git revert để hoàn tác nó ở máy local và đẩy thay đổi này đến branch ở trên remote repository.

Đầu tiên, lấy mã hash bằng lệnh

git reflog

Sau đó hoàn tác lại commit ví dụ có mã hash là 9157b6910, sử dụng:

git revert 9157b6910

Cuối cùng, đẩy thay đổi này lên branch trên remote repository bằng git push.

Tạm kết

Trong bài viết này, mình đã đưa ra các trường hơp sử dụng lệnh git cơ bản mà rất quan trọng với lập trình viên là

  1. Thêm remote repository
  2. Thay đổi remote repository
  3. Xóa branch
  4. Merge một file từ branch này sang branch khác
  5. Hoàn tác một commit

Lý thuyết về git thì rất nhiều, bạn có thể đọc cả một cuốn sách về git nếu muốn ở đây , nhưng để làm việc với git bạn sẽ cần bắt đầu từ những dòng lệnh cơ bản nhất như trong bài viết mình đã trình bày. Hy vọng bạn cảm thấy hữu ích khi đã đọc đến đây, mình cảm ơn bạn đã giành thời gian quan tâm tới bài viết. Hãy cho mình một đánh giá với cảm nhận của bạn nhé. 

Thank for reading!


[References]

https://git-scm.com/docs/gittutorial

https://dzone.com/articles/top-20-git-commands-with-examples