Hướng dẫn

GitHub Desktop: cách tải, cài đặt và dùng Git không cần dòng lệnh

Cập nhật: · Skillaria.Top

GitHub Desktop là ứng dụng miễn phí của GitHub dành cho Windows và macOS, thực hiện các thao tác Git cơ bản bằng nút bấm: clone, commit, push, pull, nhánh, merge và giải quyết xung đột. Tải ứng dụng từ desktop.github.com, đăng nhập tài khoản GitHub, sau đó clone repository bạn muốn làm việc.

GitHub Desktop là gì

GitHub Desktop là ứng dụng miễn phí, mã nguồn mở do GitHub phát hành cho Windows và macOS. Ứng dụng hiển thị các file đã thay đổi, lịch sử commit và nhánh trong một cửa sổ, đồng thời thực hiện các lệnh Git chính chỉ bằng cú nhấp chuột. Ứng dụng có sẵn một bản Git đi kèm, nên bạn không bắt buộc phải cài Git riêng để dùng nó.

Nếu hỏi ngắn gọn git desktop là gì, câu trả lời là: đây là một client Git có giao diện đồ họa, được thiết kế riêng cho GitHub. Ứng dụng có thể clone repository của bạn chỉ với một cú nhấp, tạo pull request và hiển thị trạng thái kiểm tra. Nó cũng hoạt động với bất kỳ repository remote nào qua HTTPS, chẳng hạn GitLab hoặc máy chủ riêng.

GitHub Desktop phù hợp với người mới, nhà thiết kế, người viết tài liệu kỹ thuật, và bất kỳ ai cần một chu trình dễ hiểu: sửa, commit, đẩy lên. Lập trình viên có kinh nghiệm dùng nó để xem diff trực quan và commit từng dòng được chọn, còn các thao tác phức tạp thì họ làm trong terminal.

Cách tải GitHub Desktop

Địa chỉ tải chính thức là desktop.github.com. Trang web tự nhận diện hệ điều hành và đề nghị trình cài đặt cho Windows hoặc file nén cho macOS. Chỉ tải từ trang đó hoặc từ trang releases của repository desktop/desktop trên GitHub. Các bản "github desktop tải miễn phí" từ trang bên thứ ba có thể chứa bất cứ thứ gì.

Hiện chưa có phiên bản chính thức cho Linux. Có một bản fork do cộng đồng duy trì (repository shiftkey/desktop) với gói .deb, .rpm và AppImage, nhưng đây không phải bản chính thức. Trên Linux, làm việc trong terminal hoặc dùng client Git tích hợp sẵn trong trình soạn thảo sẽ tiện hơn.

Cài đặt trên Windows

  1. Chạy file GitHubDesktopSetup đã tải về.
  2. Trình cài đặt không hỏi gì thêm: ứng dụng được cài vào profile của người dùng hiện tại và tự mở ngay.
  3. Không cần quyền quản trị viên, ứng dụng tự tải bản cập nhật.

Với máy tính của tổ chức có trình cài đặt MSI riêng. Bạn có thể tìm trong tài liệu của GitHub Desktop.

Cài đặt trên macOS

  1. Giải nén file zip đã tải về.
  2. Kéo GitHub Desktop vào thư mục Applications (Ứng dụng).
  3. Mở ứng dụng và xác nhận việc mở chương trình tải từ internet.

Có bản dựng cho chip Intel và Apple Silicon; trang web thường tự gợi ý bản phù hợp. Bạn cũng có thể cài bằng Homebrew:

brew install --cask github

Đăng nhập tài khoản và thiết lập ban đầu

Lần đầu mở, GitHub Desktop yêu cầu đăng nhập vào GitHub.com. Nhấn nút đăng nhập, trình duyệt sẽ mở ra để bạn xác nhận cấp quyền cho ứng dụng. Bạn không cần nhập mật khẩu vào chính ứng dụng, và xác thực hai yếu tố được thực hiện trên trình duyệt như bình thường. Với GitHub Enterprise có một cách đăng nhập riêng.

Sau đó ứng dụng yêu cầu thiết lập Git: tên và e-mail sẽ được ghi vào mọi commit. Đây chính là user.name và user.email được đặt bằng git config --global, nên nếu Git đã được cấu hình trước đó thì thông tin sẽ được điền sẵn. Để commit gắn với hồ sơ GitHub của bạn, hãy dùng e-mail đã thêm vào tài khoản, hoặc địa chỉ noreply có dạng ID+username@users.noreply.github.com.

Sau này có thể đổi các thiết lập này: trên Windows vào menu File → Options, trên macOS vào menu GitHub Desktop → Settings. Cũng tại đây bạn chọn trình soạn thảo bên ngoài (ví dụ VS Code) và terminal sẽ mở từ ứng dụng, cũng như giao diện sáng hoặc tối.

Clone repository

Clone nghĩa là tải về một bản sao của repository remote cùng toàn bộ lịch sử. Trong GitHub Desktop, chọn File → Clone repository. Cửa sổ này có ba tab: repository của bạn trên GitHub.com, repository GitHub Enterprise, và tab URL để dán bất kỳ địa chỉ nào, kể cả địa chỉ GitLab.

  1. Chọn repository trong danh sách hoặc dán URL.
  2. Chỉ định thư mục trên máy (Local path).
  3. Nhấn Clone và chờ tải xong.

Lệnh git clone cũng làm đúng việc này. Trên trang repository GitHub, trong menu nút Code có mục Open with GitHub Desktop; mục này mở ứng dụng với địa chỉ đã được điền sẵn. Nếu bạn clone repository của người khác mà không có quyền ghi, ứng dụng sẽ đề nghị tạo fork khi bạn lần đầu cố gửi thay đổi.

Thư mục dự án Git đã có sẵn được thêm bằng File → Add local repository, còn tạo repository mới thì dùng File → New repository. Tại đây bạn có thể chọn ngay mẫu .gitignore, giấy phép, và tạo README.

Cách commit trong GitHub Desktop

Bên trái tab Changes liệt kê tất cả file đã thay đổi, bên phải hiển thị diff của file được chọn: dòng bị xóa màu đỏ, dòng được thêm màu xanh lá. Ô đánh dấu bên cạnh file quyết định file đó có được đưa vào commit hay không. Đây tương đương với staging area và lệnh git add.

  1. Bỏ đánh dấu các file bạn không muốn commit.
  2. Nếu cần, nhấn vào từng dòng trong diff để loại trừ chúng: đây là cách tạo commit một phần, giống như git add -p.
  3. Ở phía dưới, nhập mô tả ngắn vào ô Summary và, nếu muốn, chi tiết vào Description.
  4. Nhấn nút Commit to <tên nhánh>.

Commit chỉ được tạo trên máy của bạn và chưa gửi lên server. Với git desktop commit, bạn dễ dàng tạo các commit nhỏ, có ý nghĩa, vì thấy rõ mỗi commit chứa gì. Nếu commit có lỗi, nút Undo xuất hiện ngay ở phía dưới sau khi commit; nút này hủy commit cuối và đưa các thay đổi trở lại thư mục làm việc, miễn là commit chưa được đẩy lên.

File không nên đưa vào repository có thể bị loại trừ qua menu ngữ cảnh của file: tùy chọn ignore sẽ thêm nó vào .gitignore. Để hủy các thay đổi chưa commit, dùng Discard changes trong cùng menu. Các thay đổi sẽ bị xóa (vào thùng rác của hệ thống trên Windows và macOS), nhưng hãy coi đây là thao tác không thể hoàn tác.

Push, pull và fetch: đồng bộ với server

Nút chính trên thanh trên cùng đổi nhãn theo tình huống. Đây là nơi git desktop push và git desktop pull được thực hiện chỉ bằng một cú nhấp.

Nhãn nútĐiều xảy raLệnh Git
Publish repositoryrepository cục bộ chưa có trên GitHub: tạo mới trên đó và gửi lêntạo remote + git push -u
Publish branchnhánh mới chỉ tồn tại cục bộgit push -u origin tên-nhánh
Fetch originkiểm tra xem trên server có commit mới khônggit fetch
Pull origintrên server có commit mới, cần lấy vềgit pull
Push origincó commit cục bộ, cần gửi đigit push

Cạnh nhãn nút có số commit kèm mũi tên lên và xuống: bao nhiêu commit cần gửi và bao nhiêu cần nhận. Ứng dụng tự fetch định kỳ ở nền, vì vậy nút Pull tự xuất hiện khi đồng nghiệp đã đẩy thay đổi.

Nếu nhánh của bạn và server đều có commit mới, push sẽ bị từ chối. Hãy chạy Pull origin trước: Git sẽ gộp thay đổi, và nếu chúng đụng nhau thì xuất hiện xung đột. Force push chỉ được ứng dụng đề nghị sau các thao tác làm thay đổi commit đã gửi, ví dụ sau rebase.

Nhánh: tạo, chuyển và checkout

Nhánh được quản lý qua menu thả xuống Current branch trên thanh trên cùng. Trong đó có danh sách nhánh cục bộ và nhánh remote, ô tìm kiếm và nút New branch. Chọn một nhánh trong danh sách chính là git desktop checkout: ứng dụng chuyển thư mục làm việc sang nhánh đó. Nhánh remote chưa có trên máy chỉ cần được chọn, và ứng dụng sẽ tạo nhánh cục bộ theo dõi nhánh remote đó.

Nhánh mới được tạo từ nhánh hiện tại hoặc từ nhánh mặc định; ứng dụng sẽ hỏi nếu có lựa chọn. Sau khi tạo, nhánh chỉ tồn tại trên máy bạn, nên nút phía trên đổi thành Publish branch. Đổi tên và xóa nhánh thực hiện qua menu Branch hoặc menu ngữ cảnh của nhánh trong danh sách; khi xóa, bạn có thể chọn xóa luôn cả trên server.

Khi công việc trên nhánh đã xong, trong menu Branch có mục Create pull request: trình duyệt mở trang tạo pull request trên GitHub. Quy trình review và merge diễn ra trên trang web đó.

Merge và rebase trong GitHub Desktop

Để gộp một nhánh khác vào nhánh hiện tại, chọn Choose a branch to merge into <nhánh> trong menu Current branch (cũng có trong menu Branch). Ứng dụng sẽ cho biết trước có bao nhiêu commit sẽ được gộp và có xung đột hay không. Đây chính là git desktop merge, tức là git merge thông thường.

Trong cùng menu có Squash and merge, nén tất cả commit của nhánh thành một, và Rebase current branch, tức là git desktop rebase, đặt các commit của bạn lên trên nhánh đã chọn. Sau khi rebase một nhánh đã được gửi lên, lịch sử trên server và trên máy bạn khác nhau, và nút Push đổi thành Force push origin. Chỉ làm việc này trên nhánh của riêng bạn, nơi không ai khác đang làm việc.

Trong tab History, bạn có thể kéo thả commit: sang nhánh khác (đây là cherry-pick), lên trên commit khác (squash), hoặc đổi thứ tự. Rebase tương tác đầy đủ các thao tác không có sẵn; để làm việc đó hãy dùng git rebase -i trong terminal.

Xung đột khi merge

Nếu cùng một dòng bị thay đổi ở cả hai nhánh, khi merge, pull hoặc rebase sẽ xuất hiện cửa sổ liệt kê các file bị xung đột. Với mỗi file, bạn có thể mở nó trong trình soạn thảo bên ngoài hoặc chọn nguyên một phiên bản: phiên bản của bạn hoặc phiên bản đến.

Trong trình soạn thảo, xung đột trông như thường lệ:

<<<<<<< HEAD
const limit = 20;
=======
const limit = 50;
>>>>>>> feature/pagination

Giữ lại phiên bản đúng, xóa các dấu đánh dấu, rồi lưu file. Khi các dấu đánh dấu biến mất khỏi mọi file, GitHub Desktop đánh dấu chúng là đã giải quyết và bật nút tiếp tục merge; nút này tạo merge commit. Nếu có gì sai, bạn có thể hủy merge bằng nút cancel trong cùng cửa sổ. Tác dụng tương đương với git merge --abort.

Git stash trong GitHub Desktop

Trong cửa sổ chính không có nút "stash" riêng, nhưng cơ chế vẫn có. Khi bạn chuyển sang nhánh khác trong lúc còn thay đổi chưa commit, ứng dụng hỏi bạn muốn làm gì với các thay đổi đó: để lại trên nhánh hiện tại hay mang sang nhánh mới. Lựa chọn "để lại" sẽ cất thay đổi vào stash, đó là cách git stash hoạt động trong GitHub Desktop.

Bạn cũng có thể cất thay đổi thủ công qua menu ngữ cảnh của danh sách thay đổi (mục Stash all changes). Khi quay lại nhánh đó, bên dưới tab Changes sẽ xuất hiện dòng Stashed changes. Tại đây bạn xem các file đã cất và khôi phục (Restore) hoặc xóa chúng.

Giới hạn: GitHub Desktop chỉ giữ một stash cho mỗi nhánh. Nếu cần nhiều mục, hãy dùng terminal với git stash pop chọn mục cụ thể, hoặc git stash apply stash@{1}. Ứng dụng có thể mở terminal ngay tại thư mục đúng qua menu Repository.

Git LFS trong GitHub Desktop

Git LFS lưu các file nhị phân lớn (video, PSD, mô hình 3D) trên một server riêng, còn trong repository chỉ còn lại con trỏ (pointer). GitHub Desktop hỗ trợ LFS: khi clone hoặc mở repository có dùng LFS, ứng dụng đề nghị khởi tạo Git LFS, sau đó tự động tải và gửi các file lớn.

Tuy nhiên, không thể chọn file nào được theo dõi qua LFS trên giao diện. Việc này làm một lần trong terminal, và sau đó git lfs trong GitHub Desktop hoạt động trong suốt:

git lfs install
git lfs track "*.psd"
git add .gitattributes
git commit -m "Theo dõi file PSD bằng Git LFS"

Lưu ý hạn mức: tài khoản GitHub miễn phí có giới hạn dung lượng và băng thông LFS. Xem giới hạn hiện hành trong phần cài đặt thanh toán của tài khoản.

Reset, revert và lịch sử

Tab History hiển thị các commit của nhánh hiện tại và thay đổi trong từng commit. Từ menu ngữ cảnh của commit có các mục:

  • Revert changes in commit — tạo một commit mới hủy commit đã chọn. An toàn ngay cả với commit đã được gửi lên.
  • Create branch from commit và Create tag — tạo nhánh hoặc tag từ bất kỳ điểm nào trong lịch sử.
  • Amend commit — dành cho commit cuối: sửa thông điệp hoặc thêm file.
  • Reset to commit — ở các phiên bản mới của ứng dụng: đưa nhánh về commit đã chọn và giữ thay đổi trong thư mục làm việc, giống git reset --mixed.

Không có lựa chọn git desktop reset xóa cứng thay đổi (git reset --hard) trên giao diện. Đây là thiết kế có chủ ý để người mới không mất công việc. Nếu thực sự cần, hãy dùng terminal; commit bị mất có thể tìm lại bằng git reflog.

Khi nào nên dùng dòng lệnh

GitHub Desktop đáp ứng chu trình làm việc hằng ngày, nhưng nhiều việc không có sẵn hoặc không tiện trong đó:

  • rebase tương tác với đầy đủ thao tác, git bisect, git reflog, git worktree;
  • nhiều mục stash, submodule, và cấu hình remote chi tiết;
  • làm việc trên server qua SSH và tự động hóa trong script, CI;
  • Linux, vì không có phiên bản chính thức.

Ngoài ra, trong phỏng vấn người ta hỏi đúng các lệnh, và hiểu fetch, merge, rebase làm gì cũng giúp bạn khi dùng GUI. Cách làm thực tế: nắm vững dòng lệnh, và dùng ứng dụng ở những chỗ nó tiết kiệm thời gian, ví dụ xem diff, commit một phần, và xử lý xung đột. Từ GitHub Desktop, terminal mở được qua menu Repository ngay trong thư mục dự án.

Kết luận

GitHub Desktop là cách đơn giản và miễn phí để làm việc với Git trên Windows và macOS: tải từ desktop.github.com, đăng nhập tài khoản, clone repository, và commit, push, pull, nhánh cùng xung đột đều thực hiện bằng nút bấm. Với stash, LFS và reset, khả năng của nó còn hạn chế, còn các thao tác phức tạp vẫn thuộc về terminal. Repository remote, push, pull và làm việc nhóm qua pull request được trình bày thực hành trong khóa học Git.

Câu hỏi thường gặp

GitHub Desktop có miễn phí không?

Có, ứng dụng hoàn toàn miễn phí và là mã nguồn mở; chỉ khi bạn chọn gói trả phí của GitHub thì mới phải trả tiền.

Có cần cài Git riêng để dùng GitHub Desktop không?

Không, ứng dụng đã đi kèm một bản Git riêng. Nhưng nếu bạn cũng muốn làm việc trong terminal, hãy cài Git cho hệ điều hành của mình.

Có thể dùng GitHub Desktop với GitLab hoặc Bitbucket không?

Có, bạn có thể clone repository bằng địa chỉ HTTPS ở tab URL. Tích hợp pull request và đăng nhập tài khoản chỉ hoạt động với GitHub.

GitHub Desktop có giao diện tiếng Việt không?

Giao diện chính thức là tiếng Anh. Tên các nút ngắn và tương ứng với lệnh Git, nên khá dễ hiểu.

Vì sao GitHub Desktop không thấy thay đổi trong file?

Thường là file nằm trong quy tắc của .gitignore, hoặc bạn đang mở nhầm thư mục repository. Hãy kiểm tra đường dẫn trong menu Current repository và nội dung .gitignore.

Học chủ đề này qua video

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