Egit là phần mềm tích hợp Git cho Eclipse. Bài viết này sẽ hướng dẫn cách sử dụng Egit  và một số tính năng cơ bản.

Giới thiệu

Đối tượng: Bài viết này phù hợp cho những ai đã học Git cơ bản. Theo cá nhân tôi và ý kiến của một số anh chị đi trước, trước khi sử dụng Egit các bạn nên học cách sử dụng Git bằng command line, việc này giúp bạn hiểu sâu hơn về Git, biết được những tính năng vượt trội mà Git hỗ trợ đồng thời giúp bạn trở nên chuyên nghiệp hơn và sử dụng được những tính năng nâng cao hơn.

Với các bạn đã từng sử dụng SVN, khi mới chuyển sang sử dụng Git command line sẽ có chút bất tiện. Tuy nhiên, Git có nhiều ưu điểm vượt trội hơn. Bài viết này sẽ hướng dẫn các bạn cách sử dụng Egit mà một số tính năng cơ bản để có thể review code trực quan hơn, tiện lợi, nhanh chóng hơn so với Git command line.

Cài đặt Egit trên Eclipse

Egit đã tích hợp sẵn trên phiên bản Eclipse Juno, Vì vậy bạn không cần phải cài đặt Egit. Nếu bạn đang xài phiên bản cũ hơn của Eclipse, thực hiện các bước sau để cài đặt:

Tại thanh menu của Eclipse: chọn Help => Install New Software

Nhấn add button và chèn vào link: http://download.eclipse.org/egit/updates

Egit 1

Egit 2

Chọn Next và tiếp tục cài đặt.

EGit Configuration

Mỗi commit trong Git đều bao gồm user’s name và email address, các thông số này có thể config tại:

Window => Preferences => Team => Git => Configuration => Add Entry.

  • Key: user.name
  • Value: username của gitHub

Tiếp tục thêm:

  • Key: user.email
  • Value: email của github

Egit 3

Các tính năng

Create local repositories

Một lợi thế lớn của Git so với SVN hoặc CVS là bạn có thể dễ dàng tạo ra các local repositories, thậm chí trước khi bạn chia sẻ chúng với những người khác. Đầu tiên, bạn phải tạo ra một project trong eclipse mà bạn muốn chia sẻ thông qua local repositories của bạn.

Sau khi tạo project, bạn click phải lên project chọn Team => Share Project, Chọn Git, click Next. Tại mục repository, chọn Create button, tìm đến đường dẫn sẽ lưu project và click Finish

Egit 4

Repository vừa được tạo sẽ trống, mặc dù thư mục project đã được gán vào nó. Chẳng hạn như ta tạo 1 class TestClass,java, mặc dù file này đã tồn tại trong đường dẫn: C:\Users\Xuan\git\myLocalReposirory\test\src\test tuy nhiên nó vẫn chưa tồn tại trên local repository.

Lúc này Icon gắn với file này sẽ có biểu tượng dấu chấm hỏi.

Egit 5

Bây giờ chúng ta thực hiện đưa project này lên local repository bằng cách: Click phải lên project => Team => Add to index, sau khi thực hiện xong, biểu tượng icon trên các file chuyển thành dấu cộng.

Egit 6

Tiếp theo chúng ta tiền hành commit project lên local repository:

Click phải lên project, chọn Team => Commit.

Egit 7

Nhập nội dung commit và nhấn button Commit.

Vậy là chúng ta đã có một Repository tại local để sử dụng cho các mục đích hữu ích sau này.

Mô tả trạng thái files

Trong quá trình làm việc với project, việc biết được status của các files là rất quan trọng. Sau đây là một số files status thường gặp khi làm việc với Git repository.

Egit 8

Tên các files và trạng thái được mô tả như bảng dưới đây:

State Description
tracked File is committed to the Git repository and has not changed.
untracked File is neither staged nor committed.
ignored File is flagged to be ignored by Git operations.
dirty File has changed since the last commit.
staged Changes in the file will be included in the next commit.
partially-staged The resource has changes which are added to the index and additional unstaged changes in the working tree.
added Staged but not yet committed, i.e. snapshot of this file has been stored in the git database. This status is the same as thestaged status, but the file wasn’t under Git version control before.
removed The resource is staged for removal from the Git repository.
conflict A merge conflict exists for the file.
Table 1. Git label decorations

Cloning Repositories

Command line:

git clone https://github.com/phongnx1/studyGit.git

Sử dụng Egit:

Chọn File => Import => Chọn Project from Git:

Egit 9

Nhập Clone URL, thông tin kết nối: User, Password => Next.

Egit 10

Chọn Branch cần clone:

Egit 11

Egit 12

Egit 13

Kết quả:

Egit 14

Creating Branches

Để tạo new branch trên repository, click phải lên project: Team => Switch to => New Branch. Chọn branch mà bạn muốn tạo new branch từ nó, đặt tên new branch. Nếu bạn muốn checkout với branch vừa tạo, chọn checkbox Checkout new branch.

Egit 15

Synchronize

Đây là chức năng giúp bạn có thể so sánh giữa workspace và local repository hoặc giữa branch hiện tại với các branch khác. Việc này giúp bạn review lại source, xem lại những thay đổi trong quá trình sửa code, thêm mới,...

Click phải lên project chọn Team => Sychronize Workspace: So sánh branch hiện tại với local workspace.

Egit 16

Bạn cũng có thể chọn Team => Advanced => Synchronize... chọn branch mà bạn muốn so sánh sự thay đổi.

Reverting Changes

Đôi lúc chúng ta muốn thực hiện việc revert trên file đã chỉnh sửa, hay toàn bộ project, có 2 option.

  • Cách thứ 1: Bạn có thể compare mỗi file mà bạn muốn revert với HEAD version (hoặc index) và undo lại một vài hoặc tất cả các thay đổi.
  • Cách thứ 2: Bạn có thể reset lại toàn bộ project, điểu này nghĩa là tất cả các thay đổi trong working directory sẽ được revert.
Thông qua compare

Click phải lên file muốn revert, chọn Compare With => HEAD Revision. Một giao diện compare sẽ hiện ra và đánh dấu tất cả những điểm khác nhau. Nếu bạn muốn revert toàn bộ file về trạng thái chưa chỉnh sửa. Click button Copy All Non-Conflicting Changes from Right to Left trên Java Source Compare toolbar.

Egit 17

Nếu bạn muốn revert chỉ một số chổ trong file. Chọn line bạn muốn revert Click button Copy Current Change from Right to Left  (trên thanh toolbar)

Thông qua reset

Để revert tất cả những thay đổi trong project của bạn, Click phải lên project chọn *Team ==> Reset. *Chọn branch mà bạn muốn revert về branch đó, Chọn reset type: Hard. Hãy cẩn thận với lệnh này, bởi tất cả những thay đổi trong project của bạn sẽ mất đi.

Egit 18

Merge

Để merge một branch với một branch khác, đầu tiên bạn phải checkout branch mà bạn muốn merge.

  1. Click phải vào project chọn Team ==> Switch to, chọn branch bạn muốn checkout
  2. Click phải vào project chọn Team ==> Merge, chọn branch muốn merge và nhấn button Merge

Khi lệnh merge được thực hiện, một pop-up hiển thị kết quả xuất hiện:

Các kết quả có thể là: Already-up-to-date, Fast-forward, Merged, Conflicting, Failed. Với kết quả là Conflicting, quá trình merge chưa hoàn thành, Bạn phải xử lý conflic (trình bày ở mục tiếp theo). Kết quả Failed trả về, có thể có một conflic changes xảy ra trong working directory.

Egit 19

Resolving Conflicts

Nếu kết quả sau khi thực hiện lệnh merge trả về là Conflicts (có icon màu đỏ trên file) chúng ta sẽ resolve bằng tay. Mở files bị conflict và tìm đến đoạn xảy ra conflict có đánh dấu “<<<<<<<”

Egit 20

Xung đột xảy ra do thay đổi trên cùng một dòng với nội dung khác. Sau khi thực hiện sửa lại bằng tay, chúng ta tiến hành thực hiện add và commit lại.

Fetch and Pull

Khi clone một remote repository, Git sẽ tạo ra một bản copy của branch như một local branch và như một remote repositories. Lệnh Fetch chỉ update remote branch, muốn update luôn cả local branch bạn phải thực hiện merge sau khi thực hiện fetch. Lệnh Pull bao gồm cả Fetch và Merge.

Để thực hiện Fetch, click phải vào project chọn Team => Fetch From Upstream (trường hợp bạn clone từ repositories hiện tại). chọn Team => Remote ==> Fetch From, chọn repository mà bạn muốn fetch (trường hợp bạn muốn Fetch từ một repositories khác).

Pull:

Trước khi thực hiện commit và push files lên repository, chúng ta nên thực hiện synchoronize workspace để xem những thay đổi từ source và từ phía remote repositories. Trong trường hợp sau đây chúng ta cần thực hiện lệnh pull.

Egit 21

File *java *phía remote repository đã bị thay đổi, phía người lập trình cũng đang có chỉnh sửa trên file này. Biểu tượng icon màu đỏ xuất hiện, trong trường hợp này backup những thay đổi, đưa file về trạng thái chưa thay đổi, sau đó thực hiện update từ remote repository về. Rồi thực hiện chỉnh sửa rồi push lên lại.

Thực hiện pull: click phải lên file cần update, chọn Team ==> Repository ==> Pull

Kết quả: file AddStudentAction.java đã được update, thực hiện chỉnh sửa và push lên lại.

Egit 22

File có icon mũi tên màu xanh: File đã bị thay đổi trên remote repository, cần thực hiện pull để update.

Kết luận

Trên đây hướng dẫn cách cài đặt công cụ Egit, và một số tính năng cơ bản có thể giúp các bạn thuận tiện hơn trong khi làm việc với Git. Sử dụng Egit giúp thể hiện trực quan hơn các thay đổi của project, giúp developer phát hiện và thực hiện các xử lý thuận tiện hơn, đồng thời cũng giúp người review dễ dàng hơn trong việc thực hiện review code.

Các chức năng mà Egit hỗ trợ còn rất nhiều, trong phạm vi bài viết này, tôi chỉ nói đến những tính năng cơ bản. Các tính năng khác sẽ được tôi đề cập ở một bài viết khác. Một lần nữa tôi vẫn khuyến khích các bạn sử dụng thành thạo Git command line để hiểu sâu hơn về Git và sử dụng Egit một cách tốt nhất.

Link tham khảo: