Git survival cheatsheet

Saturday, November 20, 2021
Edit this post


Git là một phần mềm quản lý source code rất mạnh mẽ và được ưa chuộng ở hầu khắp các công ty công nghệ. Trước đây, tôi thường sử dụng các công cụ Git UI vì ngại gõ lệnh command line. Tuy nhiên, sau thời gian làm việc ở Agoda Bangkok, tôi bắt đầu tập sử dụng Git command line và thấy cũng không quá khó như mình nghĩ, lại rất nhanh và tiện dụng, cũng như nhìn "pro" hơn.

Dưới đây là những lệnh git command mà tôi thường xuyên sử dụng trong công việc hàng ngày. Dĩ nhiên nhiêu đây không thể gọi là đầy đủ nhưng tôi tin rằng chỉ cần nắm được cách dùng các lệnh bên dưới là đã tương đối đủ cho hầu hết các use case, giúp bạn có thể survive được trong môi trường làm việc công nghệ.

Thay đổi thông tin username và email?

git config --list (liệt kê toàn bộ git configuration hiện có)
git config --global user.name "<name>"
git config --global user.email "<email>"

Thay đổi công cụ so sánh và merge mặc định?

Lấy ví dụ tôi muốn sử dụng WinMerge như công cụ compare và merge chính của mình mỗi khi chạy lệnh git difftool, tôi sẽ chạy lần lượt các câu lệnh sau:

git config --global diff.tool winmerge
git config --global difftool.winmerge.path "<đường dẫn tới winmerge.exe>"
git config --global difftool.prompt false
git config --global merge.tool winmerge
git config --global mergetool.winmerge.path "<đường dẫn tới winmerge.exe>"
git config --global mergetool.prompt false

Làm sao để lấy về một repository?

Hãy bắt đầu với lệnh thông dụng nhất. Lệnh git clone giúp bạn tạo một bản copy của một repository nào đó. Hay nói cách khác, lệnh cho phép bạn tạo một bản copy của remote repository và đặt nó ở máy local của bạn, bản này được gọi là local repository.

git clone <git repository url>
git clone https://github.com/appium/appium.git

Làm sao để tạo branch hoặc chuyển qua branch khác?

Lệnh git checkout cho phép bạn:
- Tạo một bản copy của một branch bất kỳ ở máy local, đồng thời switch qua branch đó.
- Switch qua một branch bất kỳ ở local (trong trường hợp bản copy của branch đó đã được tạo).
- Tạo một local branch mới từ branch hiện tại.

git checkout <branch_name> (switch qua branch khác)
git checkout -b trunk-US123456-FixBugs (tạo một branch mới có tên 'trunk-US123456-FixBugs')

Làm thế nào để đặt lại tên hoặc xóa branch?

Lệnh git branch cho phép:
- Liệt kê các branch hiện có ở local.
- Xóa một branch bất kỳ ở local.
- Rename một branch bất kỳ ở local.

git branch (liệt kê các branch hiện có ở local)
git branch -d <local_branch_name> (xóa branch ở local)
git branch -D <local_branch_name> (xóa branch ở local - force delete)
git branch -m <new_branch_name> (rename cho branch hiện tại ở local)
git branch -m <old_branch_name> <new_branch_name> (nếu rename cho một branch khác branch hiện tại ở local)

Để xóa một remote branch ta dùng lệnh:

git push origin --delete <remote_branch_name>

Để rename một remote branch, ta đi theo các bước:

git branch -m <new_branch_name> (rename cho branch hiện tại ở local)
git branch -m <old_branch_name> <new_branch_name> (nếu rename cho một branch khác branch hiện tại ở local)
git push origin -u <new_branch_name> (push branch mới lên remote)
git push origin --delete <old_branch_name> (xóa branch cũ ở remote)

Làm thế nào để cập nhật thay đổi về local branch?

Lệnh git pull cho phép bạn "kéo về" những thay đổi từ remote của branch (nhánh) hiện tại về local.

git pull
git pull origin trunk (kéo thay đổi từ nhánh trunk + merge vào nhánh hiện tại)
git pull = git fetch + git merge

Lệnh git fetch khá giống với git pull tuy nhiên nó thường bao gồm 2 bước:
- Kéo tất cả commit và thay đổi từ một nhánh nào đó và cất giữ chúng trong một trong branch mới ở local repository.
- Để những thay đổi này được apply vào branch hiện tại, cần sử dụng lệnh git merge tiếp sau đó.

git fetch
git merge

Xem trước các thay đổi?

Lệnh git status cho phép xem những thay đổi giữa working directory và staging/index. Điều này khá hữu dụng trong trường hợp bạn muốn xem trước hoặc theo dõi những thay đổi tracked và non-tracked.

git status

Xóa đi các thay đổi?

git stash (tạm cất đi các thay đổi chưa được commit)
git stash apply (lấy lại các thay đổi đã được stash trước đó)

Ứng dụng tốt nhất của hai câu lệnh này có lẽ là để giúp cho lập trình viên có thể tiếp tục công việc của mình ở thời điểm trước khi họ phải switch qua các branch khác (vì lý do gì đó).
Nguồn: Vladimir Stevanovic

Liệt kê những commit gần nhất?

Lệnh git log giúp liệt kê những commit gần nhất kèm theo hash id của các commit.

git log --oneline
git log --reverse

Làm thế nào để thay đổi từ local lên remote?

Lệnh git add cho phép thêm các tập tin và thay đổi (changes) vào staging are/index của directory hiện tại.

git add . (đẩy toàn bộ thay đổi vào staging)
git add <file_name> (đẩy thay đổi vào staging - từng file một)
git add <folder_name> (đẩy thay đổi của một thư mục vào staging)

Tiếp theo, lệnh git commit sẽ đẩy những thay đổi này từ staging lên local repository.

git commit -m "<commit message>"

Và cuối cùng, lệnh git push sẽ đẩy những thay đổi này lên remote repository.

git push
git push -u <new_branch_name> (dùng trong trường hợp push lần đầu)

Head là gì?

Head là một tham chiếu (reference) tới commit object cuối cùng của một branch. Đối với mỗi repository, sẽ luôn có một head mặc định như "master" hoặc "main" nhưng không có giới hạn nào đối với số lượng head.

git checkout HEAD~1 (checkout commit trước commit gần nhất)
git reset HEAD~3 (uncommit nhưng không xóa thay đổi 3 commit gần nhất)
git reset --soft HEAD~3 (uncommit nhưng không xóa thay đổi 3 commit gần nhất)
git reset --hard HEAD~3 (uncommit đồng thời xóa luôn thay đổi của 3 commit gần nhất)
git diff HEAD~3 (xem những thay đổi của 3 commit gần nhất)
git revert --no-commit HEAD~3....HEAD (revert 3 commit gần nhất)

Trong trường hợp bạn đã lỡ tay commit (nhưng chưa push) thì có thể dùng lệnh sau để uncommit, đưa những file đã được commit về trạng thái staging:

git reset --soft HEAD~1


.
Xin vui lòng chờ đợi
Dữ liệu bài viết đang được tải về

💻Nhận dạy online 1 kèm 1 Automation Test từ cơ bản tới nâng cao (From Zero to Hero) 😁😁😁
Lộ trình gồm 3 phần:
1) Kỹ thuật lập trình và tư duy lập trình cơ bản
2) Nhập môn kiểm thử (Manual Test)
3) Kiểm thử tự động (Automation Test) + Chuẩn bị cho phỏng vấn
* Lộ trình chi tiết: Xem tại đây

🎓Đối tượng người học:
- Những bạn bị mất gốc căn bản môn lập trình.
- Những bạn muốn theo con đường kiểm thử (testing), đặc biệt là kiểm thử tự động (Automation Test).

🦘Người giảng dạy:
- Mình sẽ là người trực tiếp hướng dẫn.
- Nếu là các vấn đề ngoài chuyên môn hoặc sở trường, mình sẽ nhờ các anh chị em khác cũng làm trong ngành.

🤓Giới thiệu:
- Mình đã có hơn 10 năm kinh nghiệm làm IT ở cả trong và ngoài nước. Trong đó 3 năm đầu là làm lập trình viên Java, sau đó bén duyên với mảng Automation Test và theo nghề tới tận bây giờ. Mình được đào tạo chính quy về IT từ một trường Đại học danh tiếng ở TP.HCM (hệ kỹ sư 4 năm rưỡi), có chứng chỉ ISTQB, có thể giao tiếp tốt bằng tiếng Anh và có kinh nghiệm làm việc thực tế ở cả 2 mảng Outsource và Product. Title chính thức của mình là QA Automation Engineer, tuy nhiên, mình vẫn làm những dự án cá nhân chuyên về lập trình ứng dụng như Học Tiếng Anh StreamlineSách Nhạc. Mình là người có thái độ làm việc chuyên nghiệp, chăm chỉ và luôn nhiệt tình trong công việc.

💵Chi phí và hình thức thanh toán:
- Các bạn vui lòng liên hệ qua email songtoigianvn@gmail.com (email, chat, hoặc call) để book nội dung và khung giờ học (từ 8h tối trở đi).
- Mức phí: 150.000đ/buổi, mỗi buổi 60 phút.
- Lộ trình From Zero to Hero: 4.350.000đ (29 buổi).
- Bạn có thể học riêng và đóng tiền theo từng phần nếu muốn.
- Có thể học trước 1-2 buổi trước khi quyết định đi full lộ trình hoặc từng phần.
- Thanh toán qua Momo, chuyển khoản v.v...
BÌNH LUẬN
© Copyright by CUỘC SỐNG TỐI GIẢN
Loading...