Sử dụng Sourcetree để clone GitHub

Sử dụng Sourcetree để clone GitHub

Đa số các project open source đều để ở GitHub và nhiều bạn ấn nút “Download” để tải code về. Làm như vậy sẽ bất tiện đối với các project lớn mỗi khi có update code thì bạn lại phải download toàn bộ. Bài này sẽ hướng dẫn các bạn sử dụng Sourcetree – 1 công cụ sử dụng Git để công việc dễ dàng hơn. Với giao diện GUI thân thiện các bạn có thể dễ dàng xem log của code. Các thao tác pull, commit, push,… đều dễ dàng hơn việc nhớ các dòng lệnh dài dòng. Để đầu óc còn suy nghĩ việc khác và khỏi lộn xộn với hàng đống cú pháp bạn phải làm việc mỗi ngày.

Bài viết này phù hợp với những người không chuyên lập trình, những người thích làm cho mọi việc đơn giản hơn. Còn những bạn cho rằng phải sử dụng command cho Git thì mới pro thì bài viết này không dành cho các bạn.

Các bạn cũng có thể sử dụng GitHub Desktop với tính năng tương tự. Tuy nhiên Sourcetree được đánh giá cao hơn & thân thiện người dùng hơn (quan điểm cá nhân).

Những lý do cần sử dụng sourcetree

Trong repo Git (ở đây là GitHub) có nhiều branch khác nhau, mỗi file code có nhiều lần sửa đổi khác nhau. Sử dụng Sourcetree giúp bạn dễ dàng xem được lịch sử của những sửa đổi đó. Hơn nữa giúp bạn quản lý nhiều repo khác nhau trong máy tính.

Các tính năng nổi bật gồm:

  • Xem lịch sử commit một cách dễ dàng: sửa bao nhiêu file, file sửa dòng nào,…
  • Dễ dàng chuyển qua lại các branch khác nhau
  • Hiển thị thông báo rõ ràng

sourcetree-code-compare
Hình trên là so sánh sự thay đổi của code trong lịch sử. Dòng màu đỏ là bị xóa, màu xanh là thêm vào, số dòng giữ nguyên nhưng code 2 dòng đó đã thay đổi.

Giải thích các thuật ngữ

Repo: viết tắt của repository – “thùng chứa” code
Origin: repository gốc, khi bạn clone code tức là bạn clone từ origin. Bài này lấy ví dụ minh họa từ GitHub thì origin được đặt ở GitHub.
Working Directory: folder chứa code trong máy bạn.
Pull: “kéo” code mới từ origin về máy, tương tự như update bên SVN
Commit: cập nhật những sửa đổi của code vào repo trong máy của bạn
Push: “đẩy” những sửa đổi mà bạn đã commit lên origin
Hunk: đoạn code bị sửa đổi trong file, 1 file có thể có nhiều hunk
Stage hunk: chọn hunk để commit
Stage file: chọn file để commit, tương đương stage tất cả hunk trong file đó.

Cài đặt sourcetree

Các bạn tải về từ trang web: https://www.sourcetreeapp.com/.

Khi cài đặt chương trình sẽ yêu cầu bạn cài 1 số thứ như Git và .Net Framwork (nếu chưa cài). Khi cài xong chương trình có giao diện như bên dưới
sourcetree-main

Các repo được hiển thị dưới dạng tab, các bạn có thể quản lý nhiều project khác nhau dễ dàng.

Các thao tác thường gặp

Clone source code

Các bạn vào trang web của repo, ấn nút Clone or download, 1 popup hiện ra bạn copy link .git của repo đó.
clone-github

Mở Sourcetree lên, ấn vào nút Clone và điền các thông tin cần thiết: link tới repo, thư mục chứa code trong máy của bạn và tên của project sẽ hiển thị. Sau đó ấn nút clone và chờ đợi
sourcetree-clone

Switch qua lại giữa các branch

Switch qua branch khác còn được gọi là “Checkout branch”. Mục đích của mỗi branch là viết code cho 1 vài tính năng nào đó, sau khi hoàn thành thì merge vào branch chính là Master. Các project của mình đưa lên GitHub có những branch khác nhau nên cần switch qua branch phù hợp.

Lấy ví dụ về repo IPSSedu, đây là project hướng dẫn cách đọc biển số xe máy. Trong repo có nhiều branch khác nhau, mỗi branch là 1 ngôn ngữ khác hoặc 1 thuật toán khác. Do đó cần phải switch qua branch có code phù hợp với nhu cầu.

sourcetree-ipssedu

Trong hình trên có “origin” là repo trên GitHub, trong đó đang có 5 branch. Ấn chuột phải vào branch muốn checkout rồi chọn “Checkout …” như trong hình. Sau khi checkout xong thì code của bạn sẽ tương ứng với code trong branch đó.

Khi code của bạn đang bị sửa khác với branch định checkout thì Sourcetree sẽ báo lỗi conflict. Lúc đó bạn phải revert/stash/commit… trước khi checkout qua branch khác.

Pull source code

Pull là thao tác “kéo” code từ origin về máy mỗi khi có thay đổi ở origin. Cũng như tương tự như update bên SVN: đó là cập nhật những thay đổi về Working Directory cho giống server. Thao tác này xảy ra khi các bạn cần cập nhật code mới nhất.

sourcetree-ipssedu

Chỉ cần ấn nút pull, sau khi pull xong code sẽ giống với server. Lưu ý là code dưới máy bạn bị sửa trùng với file bị sửa ở origin thì cần revert/stash/commit… code.

Checkout submodule

Submodule là 1 repo khác thường được sử dụng như 1 lib, ví dụ như OpenCV thường được dùng làm submodule. Mặc định thì khi clone code không clone kèm submodule, do đó cần phải checkout submodule để đầy đủ code.

sourcetree-ipssedu

Trong hình trên có 1 submodule là opencv320, khi bạn double click vào thì Sourcetree sẽ mở ra tab mới như 1 repo. Lúc đó bạn cũng cần clone, pull code về như 1 repo bình thường. Sau khi pull xong thì sẽ có đủ code để sử dụng.

Stash file

Ở phần trên khi pull, checkout code mà bị conflict thì bạn phải revert/stash/commit code. Nhưng khi đang làm dở dang thì bạn có thể stash – nghĩa là cất tạm đâu đó rồi sửa sau.

Mỗi khi stash là bạn sẽ “đem cất” toàn bộ những file code đang bị sửa để có thể pull/checkout code mới. Ấn vào nút Stash, ở cửa sổ hiện lên đặt tên cho stash đó sao cho dễ nhớ rồi OK. Khi đó thì toàn bộ code trong máy bạn sẽ clean để sẵn sàng pull/checkout code mới về.

sourcetree-stashpanel

Các stash nằm trong mục Stashes ở panel bên trái. Khi bạn đã pull/checkout code xong thì ấn chuột phải vào stash rồi chọn “Apply stash” để lấy code đã cất tạm ra. Lưu ý các file code sau khi apply stash sẽ bị mất đoạn vừa sửa trên origin. Lúc đó phải kiểm tra kỹ đoạn nào bị sửa mà revert lại cho đúng.

Lời cuối

Mục tiêu của bài viết này nhằm hướng dẫn cách sử dụng Sourcetree để clone code đúng cách. Còn làm việc thì cần commit, push, pull request,… mình sẽ viết ở bài viết khác.

Leave a Reply