Professional Documents
Culture Documents
Git Căn Bản
Git Căn Bản
GIT LÀ GÌ?
4 4
Vấ n đ ề h i ệ n t ạ i
này?
đó?
• ...
phí.
Re m o t e Re p o s i t o r y
3 t rạ n g t h á i c ủ a G i t f i l e s
• Modified
• Staged
• Committed
Git HEAD
TERMINAL
$ git log
commit 0d4a808c26908cd5fe4b6294a00150342d1a58be
Author: Nguyễn Như Thưởng <thuongnn6666@gmail.com>
Date: Mon Jul 16 23:19:26 2012 +0900
commit 9a54fd4dd22dbe22dd966581bc78e83f16cee1d7
Author: Nguyễn Như Thưởng <thuongnn6666@gmail.com>
Date: Mon Jul 16 23:19:01 2012 +0900
commit 326fc9f70d022afdd31b0072dbbae003783d77ed
Author: Nguyễn Như Thưởng <thuongnn6666@gmail.com>
Date: Mon Jul 16 23:17:56 2012 +0900
Git HEAD
TERMINAL
$ git log
commit 326fc9f70d022afdd31b0072dbbae003783d77ed
Author: Nguyễn Như Thưởng <thuongnn6666@gmail.com>
Date: Mon Jul 16 23:17:56 2012 +0900
commit 48eec1ddf73a7fb508ef664efd6b3d873631742f
Author: Nguyễn Như Thưởng <thuongnn6666@gmail.com>
Date: Mon Jul 16 23:16:14 2012 +0900
first commit
$ git –version
git version 2.27.0
G i t Re p o s i t o r y
G i t Re p o s i t o r y
$ git status
G i t Re p o s i t o r y
G i t b ra n c h l à g ì ?
độc lập.
S ử d ụ n g G i t b ra n c h
từ nhánh master.
master
feature-x
S ử d ụ n g G i t b ra n c h
Có thể chuyển đổi qua lại giữa các nhánh, đảm bảo
S ử d ụ n g G i t b ra n c h
S o s á n h G i t m e r g e và r e b a s e
Before
After
S o s á n h G i t m e r g e và r e b a s e
Before
After
Xử l ý c o n f l i c
© 2021 Devops – Git căn bản alice sẽ tự động merge code (master -> alice)
25 25
Xử l ý c o n f l i c
$ vi hello.txt
<<<<<<< HEAD
Hello Dog!
=======
Hello Cat!
>>>>>>> 43eb14b3eed1d0e0cb9397912104e86964b665e7
Sau khi fix thì commit thay đổi và đẩy lên remote
Git reset
trước nó.
• git reset B
Git revert
Lưu lại các thay đổi hiện tại so với commit gần
(Sau khi giải quyết xong bug) Quay lại nhánh đang
làm việc lúc nãy và lấy các thay đổi được lưu
*Chú ý: Các thay đổi của mỗi lần lưu vào stash
Clone một repository có sẵn trên repo server về Kéo về toàn bộ các các nhánh từ Git remote về
Chuyển trạng thái một file về unstage nhưng vẫn Kéo về toàn bộ các thay đổi từ remote branch và
giữa các thay đổi của file đó merge vào local repository
Xem những thay đổi của file nhưng chưa staged Xem toàn bộ lịch sử commit của nhánh hiện tại
được commit
31
G i t Wo r k f l o w
ra.
G i t Wo r k f l o w : D e v e l o p và M a s t e r B ra n c h
đời dự án.
kỳ sắp tới.
G i t Wo r k f l o w : Fe a t u r e B ra n c h e s
từ nhánh develop
đi.
G i t Wo r k f l o w : Re l e a s e B ra n c h e s
develop.
develop.
G i t Wo r k f l o w : H o t f i x B ra n c h e s
trên production.
và develop.
G i t Wo r k f l o w : B u g f i x B ra n c h e s
sẽ là hotfix.
Tổng kết
• Nhánh develop và master luôn luôn tồn tại. Khởi đầu nhánh develop được tạo từ nhánh master.
• Nếu một lỗi nghiêm trọng xảy ra trên nhánh master thì tạo nhánh hotfix từ nhánh master
• Sau khi hoàn thành, nhánh release được merge lại vào nhánh master và nhánh develop
• Sau khi hoàn thành, nhánh feature hoặc bugfix được merge lại vào nhánh develop
• Sau khi hoàn thành, nhánh hotfix được merge lại vào nhánh master và nhánh develop
38
39
• Đảm bảo trạng thái gọn sạch của các • Git history khó đọc.
nhánh tại bất cứ thời điểm nào trong • Việc phân chia master/develop là cho
vòng đời của dự án. việc tích hợp CI/CD trở nên khó hơn.
• Các nhánh đặt tên theo một mô hình có • Không được khuyến khích dùng khi dự án
hệ thống làm cho nó dễ hiểu hơn. bảo trì một version duy nhất trong
sử dụng gitflow.
39
40 40
G i t h u b Wo r k f l o w
• Nhánh master là nhánh duy nhất luôn tồn tại trong toàn bộ vòng đời dự án. Mọi thứ trên nhánh
• Tạo một tính năng mới phát triển trên nhánh feature được checkout từ nhánh master
• Developer hoàn thiện tính năng - sẵn sàng merge code, Developer sẽ tạo một pull request
• Pull request được code review và được merge vào nhánh master
• Sau khi tính năng mới được thêm vào, dự án có thể deploy ngay lập tức
Github Flow là một mô hình đơn giản hơn • Vì chỉ có một nhánh duy nhất,
rất nhiều so với Git Flow, vì vậy nó có "production" code trở nên không ổn định
những ưu điểm đáng chú ý dưới đây mà có (production code gây ra bug bất cứ lúc
thể cân nhắc áp dụng nó vào dự án: nào vì các developer đẩy code vào một
• Đơn giản không phức tạp, giúp cho các nhánh duy nhất).
developers dễ dàng tiếp cận hơn. • Nhánh master luôn được cập nhật những
• Đối với dự án phát triển và bảo trì một feature mới nhất vì thế Github Flow
version duy nhất, deploy thường xuyên không khuyến khích cho những dự án bảo
thì đây là lựa chọn tốt nhất. trì nhiều version trong production.
41
42