Git Bash: đó là gì và cách dùng trên Windows
Git Bash là terminal cho Windows được cài cùng Git for Windows, cung cấp môi trường giống Unix: shell bash, các lệnh ls, cd, cat, grep, ssh và chính Git. Nó giúp các lệnh Git và hướng dẫn trong tài liệu chạy trên Windows giống như trên Linux và macOS.
Git Bash là gì
Git Bash là ứng dụng cho Windows được cài cùng Git for Windows, mở một cửa sổ terminal với shell bash. Bên trong chạy chính Git và bộ tiện ích Unix tiêu chuẩn: ls, cd, pwd, cat, grep, find, less, ssh, ssh-keygen, curl và nhiều lệnh khác.
Về mặt kỹ thuật, đây là bản port của môi trường MSYS2: chương trình được biên dịch cho Windows nhưng hoạt động như trên Linux. Cửa sổ terminal mặc định là trình giả lập MinTTY. Đây không phải máy ảo hay Linux đầy đủ — để có điều đó, bạn dùng WSL. Git Bash nhẹ hơn: khởi động tức thì và làm việc trực tiếp với tệp của Windows.
Khi tìm kiếm, người ta hay gõ «git bush» hoặc «git bash là gì» — tất cả đều nói về một thứ. Bash là viết tắt của Bourne Again SHell, không liên quan tới bụi cây (bush).
Vì sao cần Git Bash khi đã có cmd và PowerShell
Git chạy tốt trong PowerShell và trong dấu nhắc lệnh thông thường. Nhưng Git Bash có những lợi thế thực tế, đặc biệt với người mới.
- Cùng một bộ lệnh trên mọi hệ điều hành. Tài liệu Git, câu trả lời trên diễn đàn, hướng dẫn GitHub và các khóa học đều viết lệnh cho bash. Trong Git Bash chúng chạy mà không cần sửa:
rm -rf build,cat ~/.ssh/id_ed25519.pub,export VAR=value. - Công cụ SSH có sẵn.
ssh-keygen,ssh-agent,ssh-addđã có trong máy — khóa cho GitHub được tạo trong một phút. - Git hiển thị trong dấu nhắc. Git Bash hiện tên nhánh ngay trong dòng lệnh, ví dụ
(main), còn khi đang gộp nhánh là(main|MERGING). - Tự động hoàn thành. Phím Tab hoàn thành lệnh Git, tên nhánh và tên tệp.
- Kỹ năng cho tương lai. Máy chủ, container Docker và CI chạy trên Linux. Quen với bash trong Git Bash, bạn sẽ thấy thoải mái khi làm việc trên máy chủ.
Git Bash, Git CMD và PowerShell: khác nhau ở đâu
Sau khi cài Git for Windows, trong menu Start xuất hiện vài mục khiến người mới bối rối.
| Công cụ | Đó là gì | Khi nào dùng |
|---|---|---|
| Git Bash | Shell bash với các tiện ích Unix và Git | Làm việc chính với Git, làm theo hướng dẫn trên mạng |
| Git CMD | Dấu nhắc lệnh Windows thông thường (cmd.exe) có Git trong PATH | Khi bạn quen cmd và chỉ cần các lệnh git |
| Git GUI | Ứng dụng đồ họa đơn giản viết bằng Tcl/Tk | Để trực quan tạo commit, ít được dùng |
| PowerShell / cmd | Terminal chuẩn của Windows | Git vẫn chạy nếu khi cài đặt bạn chọn PATH «from the command line and also from 3rd-party software» |
Git CMD không phải là chương trình riêng, mà là cmd thông thường với môi trường đã được cấu hình. Các lệnh Git trong đó giống hệt, nhưng ls, cat và grep không hoạt động: thay vào đó là dir, type và findstr. Câu hỏi «git cmd» thường có nghĩa là: làm sao chạy git từ dấu nhắc lệnh chuẩn. Đáp án — không cần làm gì đặc biệt, chỉ cần chạy git status khi Git đã nằm trong PATH.
Cách mở Git Bash
Từ menu Start
Gõ «Git Bash» và mở ứng dụng. Terminal sẽ mở trong thư mục người dùng: /c/Users/Tên, trong bash ký hiệu là ~.
Trong thư mục cần thiết qua menu chuột phải
Cách tiện nhất: trong File Explorer, bấm chuột phải vào khoảng trống trong thư mục dự án và chọn «Open Git Bash here». Trên Windows 11, mục này nằm trong «Show more options» (hoặc Shift + chuột phải).
Trong terminal của VS Code
Mở terminal (Ctrl + `), bấm mũi tên cạnh dấu «+» và chọn Git Bash. Để nó mở mặc định, chạy lệnh «Terminal: Select Default Profile» và chọn Git Bash.
Trong Windows Terminal
Git for Windows có thể tự thêm profile Git Bash vào Windows Terminal (tùy chọn trong trình cài đặt). Nếu chưa có profile, hãy tạo mới với lệnh C:\Program Files\Git\bin\bash.exe -i -l.
Đường dẫn và tệp: khác biệt chính với Windows
Trong Git Bash, đường dẫn được viết theo kiểu Unix. Ổ C: trở thành /c, dấu gạch chéo ngược thành dấu gạch chéo xuôi.
| Windows | Git Bash |
|---|---|
C:\Users\Anna\projects | /c/Users/Anna/projects |
D:\work | /d/work |
%USERPROFILE% | ~ hoặc $HOME |
Nếu đường dẫn có khoảng trắng, hãy đặt nó trong dấu nháy: cd "/c/Users/Anna/My Projects". Mở thư mục hiện tại trong File Explorer bằng explorer ., còn trong VS Code bằng code ..
Các lệnh Git Bash cơ bản cho người mới
Điều hướng và tệp
pwd # tôi đang ở đâu
ls -la # danh sách tệp, kể cả tệp ẩn (.git, .gitignore)
cd projects/site # vào thư mục
cd .. # lên một cấp
mkdir new-app # tạo thư mục
touch index.html # tạo tệp rỗng
cat README.md # hiển thị nội dung
rm file.txt # xóa tệp
rm -r old-folder # xóa thư mục và nội dung bên trong
clear # xóa màn hình
Kho lưu trữ đầu tiên ngay trong Git Bash
$ mkdir my-first-repo && cd my-first-repo
$ git init
Initialized empty Git repository in C:/Users/Anna/my-first-repo/.git/
$ echo "Xin chào, Git" > hello.txt
$ git add hello.txt
$ git commit -m "Thêm hello.txt"
$ git log --oneline
Sau git init, dấu nhắc sẽ thay đổi: tên nhánh xuất hiện trong ngoặc. Đây là cách nhanh để biết bạn đang nằm trong một kho Git.
Mẹo hữu ích
- Tab — tự động hoàn thành lệnh, nhánh, tệp. Nhấn hai lần để xem các lựa chọn.
- Mũi tên lên — lệnh trước đó;
history— toàn bộ lịch sử; Ctrl + R — tìm trong lịch sử. - Sao chép/dán — trong MinTTY, bôi đen bằng chuột là sao chép ngay, dán bằng Shift + Insert hoặc chuột phải. Ctrl + C trong terminal dùng để dừng lệnh, không phải để sao chép.
- q — thoát khỏi chế độ xem từng trang (
git log,git diffmở trongless). - Esc, rồi :q! và Enter — thoát khỏi Vim nếu nó mở ra để nhập thông điệp commit.
Git CLI: vì sao nên học dòng lệnh
Git CLI là giao diện dòng lệnh của Git, tức là chính các lệnh git .... Ứng dụng đồ họa tiện để xem lịch sử, nhưng có giới hạn: không phải thao tác nào cũng có, và khi có lỗi, nút bấm không giải thích điều gì đang xảy ra. Dòng lệnh cho bạn kiểm soát đầy đủ và thông báo chi tiết.
Một lý do khác: khi phỏng vấn hay làm việc trong nhóm khác, bạn sẽ được yêu cầu chỉ cách hoàn tác commit hoặc giải quyết xung đột, nhưng mỗi nơi dùng một giao diện khác nhau. Lệnh thì giống nhau ở mọi nơi. Chiến lược tốt là làm việc qua CLI, còn GUI hoặc công cụ tích hợp trong IDE dùng để xem diff và lịch sử.
Tùy chỉnh Git Bash
Alias trong ~/.bashrc
Khi khởi động, Git Bash đọc ~/.bash_profile và ~/.bashrc. Hãy thêm các cách viết tắt:
alias gs='git status'
alias gl='git log --oneline --graph --all'
alias ll='ls -la'
Để áp dụng thay đổi mà không cần khởi động lại, chạy source ~/.bashrc. Nếu khi khởi động xuất hiện cảnh báo rằng có .bashrc nhưng không có .bash_profile, Git Bash sẽ tự tạo .bash_profile — đây là hiện tượng bình thường.
Alias của chính Git
Alias cũng có thể lưu trong Git, khi đó chúng hoạt động trên mọi terminal:
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all"
Bây giờ git st và git lg hoạt động trong cả Git Bash lẫn PowerShell.
Giao diện
Phông chữ, kích thước, màu sắc và độ trong suốt được chỉnh bằng chuột phải lên thanh tiêu đề cửa sổ → Options. Ở mục Text, hãy kiểm tra đã chọn mã hóa UTF-8.
Các sự cố thường gặp trong Git Bash
Chữ tiếng Việt bị hiển thị thành ký tự lạ trong git log
Thường thì chỉ cần chọn mã hóa UTF-8 trong Options → Text và thêm vào ~/.bashrc dòng export LANG=en_US.UTF-8. Với tên tệp có dấu trong git status, chạy git config --global core.quotepath false — nếu không, chúng sẽ hiển thị dạng mã thoát như \303\251.
Chương trình tương tác bị treo
Một số chương trình console (ví dụ trình thông dịch Python hoặc node không có tham số) hoạt động bất thường trong MinTTY. Hãy chạy chúng qua winpty: winpty python, hoặc dùng Git Bash trong Windows Terminal.
Đường dẫn bị biến thành thứ kỳ lạ
MSYS tự động chuyển các đối số giống đường dẫn Unix thành đường dẫn Windows. Đôi khi điều này gây trở ngại, ví dụ khi truyền /app cho docker run. Cách xử lý: viết kép dấu gạch chéo (//app) hoặc đặt MSYS_NO_PATHCONV=1 cho lệnh.
«Permission denied (publickey)» khi push
SSH-key chưa được tạo hoặc chưa được thêm vào GitHub. Tạo khóa trong Git Bash bằng ssh-keygen -t ed25519 -C "ban@example.com", dán nội dung ~/.ssh/id_ed25519.pub vào phần cài đặt GitHub và kiểm tra bằng ssh -T git@github.com.
Git Bash hay WSL
WSL là Linux thật chạy bên trong Windows, với hệ tệp và gói riêng. Bạn cần nó nếu phát triển cho Linux: chạy Docker, biên dịch, dùng ngăn xếp máy chủ. Git Bash đơn giản và nhẹ hơn, và cho công việc với Git thì hoàn toàn đủ. Điều quan trọng là đừng trộn lẫn: kho được clone bên trong WSL nên được quản lý bằng Git từ WSL, còn kho nằm trên ổ C: thì dùng Git for Windows.
Tóm lại
Git Bash là terminal có bash và các tiện ích Unix, đi kèm Git for Windows. Nó giúp Windows tương thích với tài liệu và hướng dẫn về Git, cung cấp sẵn SSH và hiển thị nhánh trong dấu nhắc. Git CMD là cùng Git nhưng trong dấu nhắc lệnh thông thường, không có lệnh Unix. Để học và làm việc hằng ngày trên Windows, hãy chọn Git Bash — trong khóa học Git, nó được dùng làm terminal chính cho các buổi thực hành.
Câu hỏi thường gặp
Git Bash có miễn phí không?
Có, Git Bash là một phần của Git for Windows và được phát hành miễn phí theo giấy phép mã nguồn mở.
Có thể cài Git Bash riêng mà không cài Git không?
Không, Git Bash chỉ được cài cùng Git for Windows. Nếu Git đã được cài, Git Bash có sẵn trong menu Start.
Trên macOS và Linux có Git Bash không?
Không có chương trình riêng và cũng không cần: terminal có sẵn trên macOS và Linux đã chạy bash hoặc zsh cùng các tiện ích Unix.
Git Bash lưu thư mục người dùng và cấu hình ở đâu?
Thư mục người dùng là C:\Users\Tên, trong bash truy cập bằng ~. Ở đó có .bashrc, .bash_profile, .gitconfig và thư mục .ssh.
Có thể chạy tệp bat và exe trong Git Bash không?
Có, các chương trình Windows chạy theo tên hoặc đường dẫn, ví dụ ./build.bat hoặc notepad file.txt.
Chủ đề này được giảng chi tiết kèm thực hành trong khóa học “Git с нуля до уверенного разработчика”.
Đến khóa học