Skip to content

Blog Công Nghệ

MENUMENU
  • Trang chủ
  • Giới Thiệu
  • Lập Trình
    • Lập Trình Website
      • Laravel
        • Phân Tích Dự Án
      • PHP
      • SQL
      • HTML
      • CSS
      • Javascipt
      • My Project
      • Wordpress
    • Luyện Skill
    • Lập trình winform
    • CSDL
    • Lập Trình Android
    • Trí tuệ nhân tạo
    • Khai Khoáng Dữ Liệu
    • Arduino
    • Khác
    • Đồ án
  • Phần Mềm
    • Powerpoint
    • Tool
  • Cuộc sống và Giải trí
    • Hợp âm
    • web5ngay - youtube
    • Công Giáo
    • Kỹ Năng Sống
    • Street Workout
  • Danh sách bài viết
  • Guide line
    • Guild line phỏng vấn
    • Guide lines Laravel
    • Guide line Module Frontend
  • Tóm tắt sách
  • Fanpage

Blog Công Nghệ

Nơi chia sẻ kiến thức

Lệnh cơ bản của Git, đơn giản, hiệu quả – điểm cộng cho các lập trình viên Việt Nam

12 Tháng Mười Hai, 2021 by admin
Lượt xem: 97
Git – công cụ cơ bản, đơn giản cho lập trình viên Việt Nam

Contents

  • 1. Git là gì?
  • 2. Cách hoạt động của Git đơn giản như thế nào?
  • 3. Sử dụng các lệnh của Git cơ bản đơn giản, hiệu quả
    • 1. Cài đặt Git như thế nào?
    • 2. Tạo một Repository trong Github như thế nào?
    • 3. Sử dụng các lệnh cơ bản của Git
      • 3.1 Lấy
        • 3.1.1 Git Clone – lệnh cơ bản đầu tiên
        • 3.1.2 git fetch origin
        • 3.1.3 git submodule
        • 3.1.4 Sử dụng file
          • 3.4.1 git format-patch
          • 3.4.2 git apply
          • 3.4.3 git bundle
      • 3.2 Cấu hình
        • 3.2.1 git config
        • 3.2.2 git ignore
      • 3.3 Check
        • 3.3.1 Git Status – một lệnh đơn giản để kiểm tra trạng thái
        • 3.3.2 git log
          • git shortlog
        • 3.3.3 git reflog
        • 3.3.4 git remote
        • 3.3.5 git diff
        • 3.3.6 gitk
        • 3.3.7 git revision
        • 3.3.8 git fsck
        • 3.3.9 git ls-files
        • 3.3.10 git ls-tree
      • 3.4 Commit
        • 3.4.1 Git add – lệnh hiệu quả để thêm file vào commit
        • 3.4.2 Git commit
          • git commit –amend
        • 3.4.3 Git push
        • 3.4.4 Git pull
        • 3.4.5 git notes
        • 3.4.6 git rm
        • 3.4.7 git mv
        • 3.4.8 git tag
        • 3.4.9 git describe
        • 3.4.10 git gc
      • 3.5 Gộp
        • 3.5.1 Git cherry-pick
          • Cú pháp
          • Lấy 1 commit từ 1 brach bỏ vào master
          • Lấy n commits từ 1 brach bỏ vào master
          • 1 lần commit cho cả 2 branches
          • Fix conflict
        • 3.5.2 git rebase
          • git rebase -i
        • 3.5.3 git merge
          • git mergetool
        • 3.5.4 git merge-base
      • 3.6 Branch
        • 3.6.1 git branch
        • 3.6.2 git checkout
          • git checkout -b
        • 3.6.3 git stash
        • 3.6.4 git worktree
      • 3.7 Rollback
        • 3.7.1 git revert
        • 3.7.2 git reset
        • 3.7.3 git restore
        • 3.7.4 git clean
      • 3.8 Tìm kiếm
        • 3.8.1 git grep
      • 3.9 Export
        • 3.9.1 git archive
      • 3.10. Debug
        • 3.10.1 git bisect
        • 3.10.2 git blame
      • 3.11 Các lệnh khác
        • 3.11.1 git send-mail
      • 3.38 git pull-request
        • 3.11.2 git instaweb
        • 3.11.3 git filter-branch
        • 3.11.4 git daemon
        • 3.11.5 git cat-file
  • 4. Tips, Trick với git
  • Kết luận

1. Git là gì?

Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System – DVCS). Trên Git, ta có thể lưu trạng thái của file dưới dạng lịch sử cập nhật. Vì thế, có thể đưa file đã chỉnh sửa về trạng thái cũ hay có thể biết được file đã được chỉnh sửa chỗ nào bằng những lệnh git rất đơn giản.

Git là môi trường tuyệt vời cho các teamwork, khi sử dụng chung cùng một mã nguồn. Do đó biết được Git là một điểm cộng cho bạn trước người phỏng vấn do ở các công ty chúng ta thường làm việc teamwork cùng nhau.

2. Cách hoạt động của Git đơn giản như thế nào?

Các hoạt động của Git cực kỳ đơn giản

Như bạn thấy trên hình, mã nguồn sẽ được lưu online trên máy chủ, khi bạn muốn sử dụng thì bạn phải clone(nhân bản) về máy tính local của các bạn, khi bạn có chỉnh sửa và muốn cập nhật lên máy chủ, bạn phải commit để ghi lại thời điểm thay đổi, commit có tác dụng để sau này khi bạn có lỗi phát sinh muốn quay lại thời điểm trước thì đây là tác dụng của commit, sau khi commit thì bạn push lên máy chủ và những máy có clone project này về thì phải sử dụng pull để cập nhật lại dữ liệu thay đổi. Pull được sử dụng khi nào máy local đã có project đó mà muốn cập nhật lại dữ liệu không cần phải clone lại thêm một bản nữa.

3. Sử dụng các lệnh của Git cơ bản đơn giản, hiệu quả

1. Cài đặt Git như thế nào?

Bạn cài git vào máy tính tại đây nhé.

Download Git đơn giản

Ở đây mình chọn sử dụng github các bạn có thể sử dụng các nhà cung cấp khác như gitlab nha.

Để sử dụng yêu cầu bạn phải có tài khoản bạn đăng ký tại đây và login vào nhé.

Đăng ký tài khoản Github cũng đơn giản mà

2. Tạo một Repository trong Github như thế nào?

Ở góc phải trên của màn hình bạn click vào dấu + và click new repository.

Tạo repository trong github

Tiếp theo điền các thông tin cần thiết.

Điền thông tin để tạo repository

Bạn điền tên của repository, mô tả có thể có hoặc không, trạng thái cho mọi người xem hay chỉ bạn, có tạo file readme hay không, thông thường thì mình check để tạo file readme un. Và cuối cùng click create repository.

3. Sử dụng các lệnh cơ bản của Git

3.1 Lấy

3.1.1 Git Clone – lệnh cơ bản đầu tiên

Bạn lấy link repository cần clone.

Lấy URL của repository

Tại thư mục muốn lưu bạn làm như sau:

git clone url
3.1.2 git fetch origin

Lấy dữ liệu server về nhưng không merge vào code, chỉ để check có thay đổi không.

git fetch --all
  
git fetch origin <tenBranch>
3.1.3 git submodule

Add repository khác làm library cho dự án, library xài chung nhiều dự án quản lý khó khăn thì xài cách này tiện hơn.

git submodule add <repository> [<path>]
  
  // Example
  git submodule add https://github.com/username/demo.git app/module

git submodule update // pull code submodule
3.1.4 Sử dụng file
3.4.1 git format-patch

Tạo file để chuyển code sang người khác mà không sử dụng commit.

Đối với git chúng ta hay sử dụng việc đóng gói những thay đổi vào các commit và share cho các thành viên khác trong team. Tuy nhiên đôi khi chúng ta vì lý do nào đó mà không thể push lên repo chung. Khi đó việc dùng patch file là cực kì quan trọng và thuận lợi, chúng ta có thể trao đổi thông qua việc gửi email, share file. Thậm chí có thể quan sát các thay đổi trong từng file.

git format-patch HEAD~n  // n là số lượng commit cần tạo file patch
  						 // tương ứng với số lượng file patch

Xem thêm: https://viblo.asia/p/su-dung-git-tao-patch-file-PdbGnLxOkyA

3.4.2 git apply

Tạo file patch xong thì sử dụng git apply để add code từ file đó vào.

git apply --stat file.patch  // Kiểm tra xem patch sẽ thực hiện những thay đổi gì
git apply --check file.patch // Kiểm tra xem file có apply được vô source code hay không
git am --signoff < file.patch // Thực hiện apply
  								// Chú ý bạn có thể bỏ tham số –signoff.
								// Hoặc nếu muốn apply nhiều file dùng *.patch thay cho tên file.

Xem thêm: https://viblo.asia/p/su-dung-git-tao-patch-file-PdbGnLxOkyA

3.4.3 git bundle

Thay vì sử dụng github, gitlab,… truyền online.

Thì cái này truyền offline qua file.

git bundle create <tenFile> <commit> <branchName>
git clone <tenFile> <tenThuMuc> // clone repository từ file
git bundle verify <tenFile> // apply code từ file vào
git fetch <tenFile> <branchHienTai>:<tenBranchMoi> // apply vào và tạo branch mới
  												   // branch cũ giữ nguyên

3.2 Cấu hình

3.2.1 git config

Cấu hình git folder.

git config --global user.name <name>  // config commit name

git config --global user.email <email>  // config email
  
git config --global alias.<alias name>  // add git command
  //Example:
  git config --global alias.unstage 'reset HEAD --'
  // when usage
  	$ git unstage fileA
  	// sẽ ngắn gọn hơn thay vì
  	$ git reset HEAD -- fileA
3.2.2 git ignore

Sử dụng file .gitignore

Dùng để bỏ qua file hoặc folder khi commit code.

Các ký hiệu tham khảo trang chủ pattern format.

3.3 Check

3.3.1 Git Status – một lệnh đơn giản để kiểm tra trạng thái
Lệnh git status

Bạn thấy mình vừa tạo file mới và dùng git status để kiểm tra xem có file nào đã tạo hay chỉnh sửa không, đó là công dụng của lệnh git status.

3.3.2 git log

Xem lịch sử commit

git log
git log --oneline
git log --graph  // xem dạng thanh biểu đồ bên trái
git log -<limit>
git log -p // show detail each commit
git log --stat // show more file add or alter
git log --author="<pattern>" // search commit by author
git log --grep="<pattern>" // search commit by message
git log <since>...<until> // search between commitId, branch name, HEAD, any other
git log --file // show commit have file special
git log --after="2014-7-1" --before="2014-7-4"
git shortlog

Nhóm commit theo cái gì đó, mặc định theo tác giả

git shortlog
git shortlog -n // sắp xếp số lượng commit lớn hiển thị trước
git shortlog -n -s // dạng dễ nhìn commit_number author
git shortlog -n -s -e // thêm email commit_number author email
3.3.3 git reflog

Xem lịch sử thao tác, có thể git rết bất kỳ cái nào ở đây.

3.3.4 git remote

Xem và cấu hình remote cho git folder.

git remote -v // xem các origin remote
  
git remote set-url origin <git remote url> // set lại url remote
3.3.5 git diff

So sánh sự khác nhau của code.

git diff
git diff HEAD // xem sự thay đổi ở commit nào đó
git diff --cached
3.3.6 gitk

Mở một trình trực quan git như source tree.

3.3.7 git revision

Là những tham số sử dụng cho filter git như git log, …

git log HEAD~5...HEAD~3 // => chỉ hiện thị HEAD ~4 chẳng hạn
git log <rev1>..<rev2>
3.3.8 git fsck

Check file git system.

Mình không đi sâu vào lệnh này.

3.3.9 git ls-files

Liệt kê file và folder của dự án.

3.3.10 git ls-tree

Liệt kê danh sách file và folder của dự án nhưng nhiều thông tin hơn.

git ls-tree HEAD
git ls-tree <branchName> // trên branch cụ thể
git ls-tree <hash>

3.4 Commit

3.4.1 Git add – lệnh hiệu quả để thêm file vào commit
// thêm tất cả file đã chỉnh sửa và file mới vào commit tiếp theo
git add .   // hoặc git add *

//chỉ thêm 1 file nào đó
git add giaoDien.php
3.4.2 Git commit
//Sau khi đã add file thì tiến hành commit
git commit -m"mô tả cho commit"

Nếu ở bước này bị lỗi tức là có file ở local khác với server bạn sử dụng git pull rồi làm lại git add . và git commit nhé.

git commit –amend

Gộp tiếp vào commit trước.

3.4.3 Git push
// Khi đã commit xong bạn dùng git push để chuyển file lên server
git push

//nếu yêu cầu đăng nhập thì bạn đăng nhập vào nhé.
3.4.4 Git pull
// git pull để kéo file từ server về mà không cần phải clone lại
git pull
3.4.5 git notes

add note to commit.

git notes add -m "<message>" <commit>
3.4.6 git rm

Dùng xóa file mà không tạo thêm tracking delete for file.

Chỉ dùng cho file đã git add .

git rm <file>
  
git rm -f <file>
3.4.7 git mv

Dùng đổi tên file mà không tạo thêm tracking for file.

Với lệnh này tracking sẽ là rename file … thay vì

delete file …

add file …

=> Do đó rename sử dụng lệnh này sẽ rõ ràng hơn.

Chỉ dùng cho file đã git add .

git mv <file> <fileNameNew>  // có thể bao gồm cả đường dẫn vd test/text.txt
3.4.8 git tag

Add tag cho commit

git tag <tagName> <commit>
git tag --list
git push --tags
  
git tag -d <tagName> // delete tag
3.4.9 git describe

Liên quan đến tags.

Cho biết tag trước đó, cách bao nhiêu commit, tag đó ở commit nào

git describe // lấy tag ở commit mới nhất làm default

git describe <tagName> // describe theo tên tag
  
  // respone
  Tag gần nhất - cách bao nhiêu commit - commit chứa tag search
 //Example
  git descript v2
  	//=> response v1-35-gda9505f
3.4.10 git gc

Xóa file không cần thiết trong source code.

Mình không đi sâu vào lệnh này.

3.5 Gộp

3.5.1 Git cherry-pick

Lấy code commit của nhánh này bỏ qua nhánh kia.

Lấy code commit của nhánh A sang nhánh B.

Đôi khi, chúng ta chỉ muốn lấy 1 hay n commits từ 1 brach bỏ vào master, hoặc commit 1 lần và lên 2 branch

Cú pháp
git cherry-pick [--edit] [-n] [-m parent-number] [-s] [-x] [--ff] [-S[<keyid>]] <commit>… 
git cherry-pick --continue 
git cherry-pick --quit 
git cherry-pick --abort
Lấy 1 commit từ 1 brach bỏ vào master
git checkout master

git cherry-pick feature-A~1

# Hoặc chúng ta có thể chỉ định hash commit
git cherry-pick C2
Lấy n commits từ 1 brach bỏ vào master
# Nếu muốn thêm 1 vài commit, không liên tục
git cherry-pick commit_id1 commit_id3

# Nếu muốn thêm 1 loạt commit lần lượt cạnh nhau
git cherry-pick commit_id1...commit_id5

# Với code trên, thì  commit_id1 sẽ ko được thêm vào
# Để đưa commit được tính vào trong branch muốn thêm thì 
git cherry-pick commit_id1^..commit_id5
1 lần commit cho cả 2 branches
# Đang ở branch-X, thực hiện commit để tạo ra commit A
git add -A
git commit -m " finish commit A"

# Checkout sang branch Y và dùng cherry-pick nào
git checkout branch-Y
git cherry-pick branch-X
Fix conflict
git add .
git commit

Tham khảo thêm: https://viblo.asia/p/git-nang-cao-git-cherry-pick-RQqKLQ9pZ7z

3.5.2 git rebase

Lấy code branch khác về branch hiện tại

Lấy commit branch A nối tiếp vào commit branch B (branch B lấy code từ branch A vào).

git rebase <tenBranch>
  
// Khi bị conflict thì xử lý conflict và sử dụng lệnh sau để chạy rebase tiếp
git rebase --continue
git rebase -i

Gộp nhiều commit lại thành 1 commit

git rebase -i HEAD~2  // 2 là số lượng commit cần gộp
3.5.3 git merge

Giống git rebase là lấy code từ branch khác về gộp vào branch hiện tại.

Nhưng:

  • git merge ==> gộp commit theo trình tự thời gian
  • git rebase ==> thêm các commit vào sau commit cuối cùng của branch hiện tại

Hình ảnh demo git merge

Hình ảnh demo git rebase

git mergetool

Hiển thị khung cho biết đã xảy ra xung đột thay đổi chỗ nào.

3.5.4 git merge-base

Tìm commit chung nhất để hợp nhất.

Mình không đi sâu vào lệnh này.

3.6 Branch

3.6.1 git branch

Tạo branch mới.

git branch <tenBranch>
3.6.2 git checkout

Lệnh chuyển branch.

git checkout <tenBranch>
git checkout -b

Tạo branch và chuyển luôn qua branch đó.

git checkout -b <tenBranch>
3.6.3 git stash

Lưu tạm lại code khi chuyển branch.

git stash save // lưu tạm version
git stash list // hiện danh sách các bảng lưu tạm
git stash apply <stash>   hoặc  git stash pop // lấy lại phiên làm việc trước
  //Example:
  git stash apply stash@{0}
git stash --drop
3.6.4 git worktree

Đem các branch khác vào chung thư mục, thay vì phải chuyển qua lại giữa các branch.

git worktree <branchName>
git worktree add <folder> <branchName>
git worktree list

3.7 Rollback

3.7.1 git revert

Trả về code trước của một commit nào đó, add thêm 1 commit mới vào sau commit cuối cùng.

Hinh trên là revert, hình dưới là reset

git revert <commit>
3.7.2 git reset

Trả về một commit nào đó, xóa các commit phía sau commit đó.

git reset hình bên dưới, hình bên trên là git revert

git reset --soft <commit> // trả code của các commit trước đó khi đã git add (Staged)

git reset --mixed <commit> // trả code của các commit trước đó khi chưa git add (working directory)
  
git reset --hard <commit> // xóa bỏ hẳn luôn code của các commit trước đó

3.7.3 git restore

Đưa code từ staged về working directory

git restore -- .  // => all file

git restore -- <file>
3.7.4 git clean

Xóa code ở working directory.

git clean -n // xem xóa thế nào - chỉ file

git clean -n -d // xem xóa thế nào - gồm file và folder
  
git clean -f -n // xóa file
  
git clean -f -n- d // xóa file và folder

3.8 Tìm kiếm

3.8.1 git grep

Dùng để tìm kiếm file or code trong folder git.

Cá nhân mình thì thấy lệnh này ít xài do VS Code đã có search. Nhưng khi lên server chắc có thể cần xài lệnh này.

git grep <search>
  // Example
  git grep 'test('

3.9 Export

3.9.1 git archive

Xuất souce code ra file zip,… mà không có thư mục .git

git archive --format <formatName> --output <path> <branchName>
  // Example
  git archive --format zip --output /full/path/to/zipfile.zip master

3.10. Debug

3.10.1 git bisect

Debug commit nào sửa làm chương trình bị sai.

Nó sẽ dựa vào commit good làm chương trình chạy và apply code từng commit sau nó để mình test chương trình còn đúng k? nếu đúng thì báo nó là good và nó tiếp tục apply commit mới vào để test tiếp.

git bisect start // bắt đầu debug
git bisect bad // nói cho bisect commit này bad
git bisect good // nói cho bisect commit này good
git bisect good <commit> // nói bisect commit id này good
// Quy trình:
1. git bisect start
2. git bisect bad // => báo commit cuối cùng hiện tại bị bad
3. git bisect good <commit> // => báo commit này good nè bắt đầu từ đây
4. git bisect good // nếu commit good
5. git bisect reset // nếu commit bad => quay code về trạng thái trước khi bisect
  
//Mô tả:
1. git bisect start  
2. git bisect bad
commit 5 BAD
commit 4
commit 3
commit 2
commit 1
3. git bisect good commit_1
commit 5 BAD
commit 4
commit 3
commit 2
commit 1 GOOD

bisect qua commit 2 
nó good => git bisect good
commit 5 BAD
commit 4
commit 3
commit 2 GOOD
commit 1 GOOD
  
bisect qua commit 3 
nó bad => git bisect reset
commit 5 BAD
commit 4
commit 3 BAD
commit 2 GOOD
commit 1 GOOD

  => Lỗi nằm ở code commit 3
3.10.2 git blame

Dùng debug file.

Liệt kê sự thay đổi của file.

git blame <tenFile>
git blame -L 1,2 <tenFile> // xem sự thay đổi ở dòng 1 và 2 của file
git blame -L 1,+4 <tenFile> // xem sự thay đổi ở dòng 1 đến 4 của file
git blame <tagName> <tenFile> // xem sự thay đổi ở commit có tag
git blame -since=1.week <tenFile> // xem sự thay đổi file trong vòng 1 tuần
								  // nó sẽ liệt kê hết
  								  // cái nào có dấu ^ là trước 1 tuần
  								  // không có dấu ^ là trong 1 tuần
git blame -since=1.week <tenFile> | grep -v "^\^" // chỉ hiển thị thay đổi trong 1 tuần
  												  // không hiển thị trước 1 tuần
  												  // -v là nghịch đảo, phủ định lại vì grep là lấy

3.11 Các lệnh khác

3.11.1 git send-mail

Github hỗ trợ sẵn giao diện thao tác. (Vào github Settings/Notification).

Mình không đi sâu vào lệnh này.

3.38 git pull-request

Xem code thay đổi thế nào trước khi merge code.

Cái này github cũng hỗ trợ giao diện thao tác sẵn.

Mình không đi sâu vào lệnh này.

3.11.2 git instaweb

Thiết lập git web và duyệt web trên kho lưu trữ.

Mình không đi sâu vào lệnh này.

3.11.3 git filter-branch

Viết lại lịch sử commit

Mình không đi sâu vào lệnh này.

3.11.4 git daemon

Tạo một git server riêng.

Mình không đi sâu vào lệnh này.

3.11.5 git cat-file

Cho biết loại và thông tin các đối tượng của repository. là gì commit, blobs hay gì gì đó.

git cat-file -p <maBam> // nội dung của object
git cat-file -s <maBam> // kích thước của object
git cat-file -t <maBam> // loại của object

4. Tips, Trick với git

Tham khảo: https://viblo.asia/p/19-bi-kip-ban-co-the-dung-khi-pham-sai-lam-voi-git-dWrvwdmPRw38

Kết luận

Như vậy, với những lệnh cơ bản của git, bạn hoàn toán có thể làm việc nhóm, teamwork cùng nhau, cùng sử dụng chung một mã nguồn mà quản lý thì đơn giản, dễ dàng phải không nào. Cảm ơn bạn đã đọc bài viết.

Related posts:

  1. Những công cụ hữu ích cho quá trình học tập của một lập trình viên
  2. Cách seo bài viết lên top google hiệu quả bằng công cụ free
  3. Lộ trình mà tôi học Dev Web trong năm nhất và năm hai hiệu quả
  4. Xoắn não với lập trình viên

Post navigation

Previous Post:

Selenium không khó – học không thừa (P1)

Next Post:

Gỡ quảng cáo trình duyệt

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Ẩn sidebar

Tìm kiếm

Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages

Blog Công Nghệ

Bài viết mới

  • Master typescript
  • Sendmail trong Laravel sử dụng dịch vụ SES, SQS của Amazon
  • Install SSL in Nginx Ubuntu
  • Docker study
  • Bảo vệ: Hướng dẫn code bot Telegram easy game

Lượng truy cập

0074482
Visit Today : 78
Visit Yesterday : 178
This Month : 753
Who's Online : 7
© 2025 Blog Công Nghệ | WordPress Theme by Superbthemes