1. Trang chủ
  2. » Công Nghệ Thông Tin

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

45 256 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 45
Dung lượng 2,19 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Cơ Bản về Git Tóm lại thì, Git là gì? Đây là một phần quan trọng để tiếp thu, bởi vì nếu bạn hiểu được Git là gì và các nguyên tắc cơ bản của việc Git hoạt động như thế nào, thì sử dụng Git một cách hiệu quả sẽ trở nên dễ dàng hơn cho bạn rất nhiều. Khi học Git, hãy cố gắng gạt bỏ những kiến thức mà có thể bạn đã biết về các VCS khác, ví dụ như Subversion và Perforce; việc này sẽ giúp bạn tránh được sự hỗn độn, bối rối khi sử dụng nó. Git nghĩ về thông tin và lưu trữ nó khá khác biệt so với các hệ thống khác, mặc dù giao diện người dùng tương đối giống nhau; hiểu được những khác biệt đó sẽ giúp bạn tránh được rất nhiều bối rối.

Trang 1

Cơ bản về GIT

Version: 1.1 Author: Nguyen Dong Thang

1

<2/21/19>

Trang 2

Tổng quan

Mục đích:

Thời lượng: 1.5h - 2h.

Đối tượng: Devs, Tests

Trang 3

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,…

Nội dung

Trang 4

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

Trang 5

Giới thiệu về 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)

5

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.

Trang 6

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

Trang 7

Khái niệm cơ bản

Repository

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

Trang 8

Khái niệm cơ bản

Commit

Để 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

Trang 9

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

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

9

Trang 10

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

Untracked và Tracked

10

Trang 11

UnModified và Modified

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

11

 Đen: UnModified

Xanh dương: Modified

Xanh lá cây: UnModify

Đỏ: Untracked

Trang 12

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

Trang 13

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

Trang 14

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

Trang 15

Tạo branch mới

- Command: git branch <<name_bracnh>>

- Android studio: VCS ->Git ->Branches ->New branch

15

Trang 16

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

Trang 17

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

Click to edit Master text styles

Trang 18

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

Trang 19

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

Trang 20

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

Trang 21

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

Trang 22

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

Trang 23

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

Trang 24

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

Trang 25

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

Trang 26

Khi thực hiện cherry-pick commit chúng ta cần chú ý tới:

Cherry-pick cài gì? Như ở hình bên dưới là pick commit 2981.

Cherry-pick vào đâu? Theo mặc định, source code được pick sẽ apply lên nhánh mà chúng ta đang đứng (HEAD)

Như vậy, để thao tác đúng pick bug 2981 lên dự án NX433 chúng ta cần phải chuyển về nhánh origin/nx434Step2 trước khi thực hiện cherry-pick.

26

Trang 27

Merge Squash

Khi chỉ định lựa chọn này rồi merge branch thì commit mà tổng hợp tất cả commit của branch đó sẽ được thêm vào.

27

Trang 28

Checkout nhiều nhánh để giải quyết công việc song song

Ví dụ bạn đang dở fix bug 1 nhưng PM yêu cầu bạn chuyển sang fix bug 2 urgent hơn Khi đó, bạn có thể commit những file thay đổi đã fix cho bug 1 trên nhánh Fixbu1 lại, rồi tạo branch mới là FixBug2 để fix bug 2.

Cách trên cũng có thể áp dụng trong trường hợp bạn là dev ở cùng lúc 2 dự án.

28

Trang 29

Shelve and Unshelve changes

Tương tự ví dụ trên, nhưng lần này bạn không cần phải commit lại những file thay đổi nữa mà chỉ cần lưu lại (Shelve Change…) những file thay đổi và phục hồi (Unshelve change ) khi cần.

29

Trang 30

III.Hướng dẫn giải quyết một số tình huống thực tế

• So sánh giữa các file, branch

• Show Annotate

• Show history log, git ref log

• Undo action in git

• Push Reject

30

Trang 31

Git command trên Android Studio

Để sử dụng git commit trên AS, bạn cần phải config biến môi trường git trên máy.

31

Trang 32

Compare in Git

So sánh file:

32

Trang 33

So sánh branch:

33

Trang 34

Git Annotate

Git Annotate: Để check lại lịch sử code của file, bạn có thể chọn show annotate của file lên VCS -> Git -> Annotate

34

Trang 35

Git Log

• git log : Hiển thị lịch sử commit trong respository

• git shortlog : Nhóm các commit theo author

35

Trang 36

Custom formatting

git log pretty=format:“Custom_format“

Tham khảo: https:// git-scm.com/docs/pretty-formats

36

Trang 37

Một số lệnh khác:

git log –10 : Filter log theo số lượng

git log –after=“2016-12-22” : Filter theo ngày

git log –grep=“FGAB22NX433-2983” : Filter theo commit message

Tham khảo: https:// www.atlassian.com/git/tutorials/git-log

37

Trang 39

Undo action trong Git

Nếu trong quá trình sử dụng, bạn thao tác 1 bước nào đó nhưng ko biết cách để hoàn tác Đừng lo, bạn có thể sử dụng lệnh

git reset hard HEAD@{x}

Trong đó X là chỉ số bước bạn muốn Undo lại

39

Trang 40

Lỗi Push Reject

Commit thiếu file commit-msg

Thiếu file commit-msg trong folder \your_respository \.git\hooks nên không tạo được change-id cho commit -> Push reject

40

Trang 41

Lỗi Push Reject

41

Push sai tên branch remote

Push commit lên nhánh remote thiếu prefix: refs/for/<name_branch>

Trang 42

Giải quyết conflict code

Khi merge, git sẽ tích hợp tự động source code, nhưng cũng có những ngoại lệ

Phần phía trên đã được chia ra bằng ==== là local repository, phía dưới là nội dung chỉnh sửa của remote repository

42

Trang 44

Tài liệu tham khảo

09e-BM/DT/FSOFT - ©FPT SOFTWARE - Corporate Training Center - Internal Use 44

https://git-scm.com/book/vi/v1

https://git-scm.com/book/en/v2

http://backlogtool.com/git-guide/vn/

https://www.atlassian.com/git/tutorials/

Trang 45

Thank you

45

Ngày đăng: 20/02/2019, 16:18

TỪ KHÓA LIÊN QUAN

w