Tải bản đầy đủ

Những điều cần biết về GIT

Cơ bản về GIT
Version: 1.1
Author: Nguyen Dong Thang
<2/21/19>

1


Tổng quan

• Mục đích:

• Giới thiệu các khái niệm cơ bản về Git
• Các thao tác cơ bản trong việc sử dụng Git trong công việc thực tế.
• Hướng dẫn giải quyết 1 số lỗi cơ bản

• Thời lượng:
• Đối tượng: Devs, Tests
1.5h - 2h.

© Copyright 2016 FPT Software


2


Nội dung
1.Giới thiệu về Git
Khái niệm cơ bản
Vòng đời của file trong Git
Branch trong Git
Cài đặt, cấu hình,…

2.Một số thao tác cơ bản trong Git
Tích hợp branch: Merge, Rebase
Cherry-Pick
Shelve và UnShelve Change
Merge Squash Commit,…

3.Hướng dẫn giải quyết một số tình huống thực tế
So sánh file, branch trong Git
Show Annotate
Push Reject,…

© Copyright 2016 FPT Software

3


I. Giới thiệu về Git

• Giới thiệu về git.






Khái niệm cơ bản
Vòng đời của file trong git
Branch trong git
Cài đặt git


Cấu hình git.

4


Giới thiệu về Git

• Lịch sử:

Git ( /ɡɪt/) là phần mềm quản lý mã nguồn phân tán được phát triển bởi Linus Torvalds vào năm 2005, ban đầu dành cho việc phát triển nhân Linux. Hiện nay, Git

trở thành một trong các phần mềm quản lý mã nguồn phổ biến nhất. Git là phần mềm mã nguồn mở được phân phối theo giấy phép công cộng GPL2. (Theo wikipedia.com).

• Khác nhau một số khái niệm

Khi sử dụng Git, nên chú ý để tránh sự nhầm lẫn với
những khái niệm ở bên SVN.

5


Khái niệm cơ bản
Đặc điểm của Git.

 Nhanh.
 Thiết kế đơn giản.
 Hỗ trợ tốt cho “phát triển phi tuyến tính”.
 Phân tán toàn diện.
 Có khả năng xử lý các dự án lớn.

6


Repository
Khái niệm

cơ bản

Repository là nơi sẽ ghi lại trạng thái của thư mục và file.
Remote repository: Là repository để chia sẻ giữa nhiều người và bố trí trên server.
Local repository: Là repository bố trí trên máy của bản thân người dùng.

7


Khái
Commit

niệm cơ bản

Để ghi lại việc thay đổi file hay thư mục vào repository thì sẽ thực hiện thao tác gọi là Commit.
Khi thực hiện commit, trong repository sẽ tạo ra commit (revision) ghi lại sự khác biệt từ trạng thái đã commit lần trước đến
trạng thái hiện tại.

8


Vòng đời của file trong Git
Vòng đời của file trong Git.

9


Thể hiện như thế nào trên Android Studio?
Untracked và Tracked

10


UnModified và Modified
Android studio phân biệt các status của file bằng màu của tên file.






Đen: UnModified
Xanh dương: Modified
Xanh lá cây: UnModify
Đỏ: Untracked

11


Staged
Tại một thời điểm, sẽ có một hoặc nhiều file ở đang bị thay đổi, nhưng bạn có thể chỉ muốn commit 1 số file nhất định mà không phải tất cả.
Staged chính là trạng thái mà file đã được đánh dấu để chuẩn bị cho lần commit tiếp theo.

12


II.Một số thao tác cơ bản trong git

• Phân nhánh trong git.
• Tích hợp branch: Merge, Rebase
• Amend commit
• Shelve và UnShelve Change
• Merge Squash
• Cherry-pick
• Checkout nhiều nhánh để giải quyết công việc song song
• …..

13


Branch là gì?



Branch là cái dùng để phân nhánh và ghi lại luồng lịch sử của file trong git. Nó đơn thuần là một con trỏ có khả năng di chuyển được, trỏ vào
commit. Tên nhánh mặc định của git là master. Mỗi lần thực hiện commit, nó sẽ được ghi vào theo hướng tiến lên.



Khi đã tách branch, mọi thao tác sẽ không ảnh hưởng đến branch khác. Có thể thao tác với nhiều branch trên cùng một repository.



Có thể hợp lại các branch đã tách bằng thao tác Merge.

14


Tạo branch mới

• Khi tạo branch, sẽ tạo ra một con trỏ mới cho phép bạn di chuyển vòng quanh.
- Command: git branch <>
- Android studio: VCS ->Git ->Branches ->New branch

15


Làm sao để biết bạn đang làm việc ở nhánh nào trên git?

Git giữ một con trỏ đặc biệt có tên là HEAD. Trong git, đây là một con trỏ trỏ tới nhánh nội bộ mà bạn
đang làm việc.

16


Hiển thị các branch và di chuyển giữa các branch

Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level

Git bash

Android Studio
17


Merge branch
Merge fast-forward: Ví dụ ta có branch bugfix phân nhánh ra từ branch master như hình:

Khi merge branch bugfix vào branch master vì lịch sử của branch bugfix sẽ bao gồm cả lịch sử của branch master nên con trỏ trên branch
master chỉ di chuyển tiến thắng về phía trước là lấy được nội dung của branch bugfix. Trong git, đây được gọi là merge fast-forward.

18


Merge non fast-forward: Trường hợp lịch sử của branch master vẫn đang tiến triển sau khi phân branch bugfix.

Vì thế, merge commit đã lấy thay đổi của cả hai branch sẽ được tạo ra. Đầu branch master sẽ di chuyển đến commit đó.

19


Rebase branch
Giống với ví dụ merge, sẽ có branch bugfix phân nhánh từ branch master như sơ đồ bên dưới.

Trường hợp sử dụng rebase ở đây rồi tiến hành tích hợp branch thì lịch sử sẽ giống như hình dưới.

20


Trình tự Rebase branch.
Trước hết, khi rebase branch bugfix vào branch master, lịch sử branch bugfix sẽ được thay đổi đính kèm sau branch master. Cho nên, lịch sử sẽ thành 1 đường như trong sơ đồ.

Nếu chỉ rebase không thôi thì vị trí đầu master vẫn cứ như vậy. Vì thế, merge branch bugfix từ branch master rồi di chuyển master đến phần đầu của bugfix.

21


Merge Vs Rebase
Cả merge và rebase đều là tích hợp lịch sử lại với nhau nhưng đặc trưng thì khác nhau.
Merge: Lịch sử nội dung thay đổi vẫn còn lại nhưng sẽ trở nên phức tạp hơn.
Rebase: Lịch sử sẽ trở nên đơn giản nhưng nội dung thay đổi từ commit ban đầu sẽ bị thay đổi. Cho nên cũng có trường hợp rơi vào tình trạng commit gốc không hoạt động.

22


Commit –amend
Các bạn có thể sử dụng amend commit khi mà bạn đã có 1 commit rồi nhưng muốn add thêm 1 hay nhiều file vào commit đó hoặc muốn
update commit message.

23


Chú ý: Không rebase, commit-amend commit public

Việc rebase, commit-amend commit sẽ làm thay đổi lịch sử commit, nếu làm việc này với những commit đã chia sẻ trên server sẽ
gây ra lỗi nghiêm trọng.

24


Cherry pick
Đặt tình huống, cả hai dự án NX413(origin/master) và dự án NX433 (origin/nx434Step2) đều cần fix bug 2981. Nhưng bug này đã được fix ở dự án NX413 rồi,
việc cần làm bây giờ chỉ là apply phần source code fix bug đó lên dự án NX433. Lúc này chúng sẽ sẽ cần đến khái niệm cherry-pick.

25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×