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 – MindX blog

Câu lệnh git

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 status

.

Nế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.

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ả.

Nguồn: medium.freecodecamp.com