SlideShare a Scribd company logo
1 of 56
Download to read offline
Quản lý mã nguồn với GIT – www.zendvn.com Trang 1
Quản lý mã nguồn
với GIT
Quản lý mã nguồn với GIT – www.zendvn.com Trang 2
Video 1 – Vấn đề làm việc thực tế
Nội dung video: nêu lên vấn đề thực tế về việc làm việc với các tập tin thư mục
1. Vấn đề cá nhân:
 Bạn đang làm việc với một tập tin nào đó. Khi muốn quay về trạng thái trước khi chỉnh sửa của tập tin thì
bạn sẽ làm gì?  backup file trước khi chỉnh sửa.
 Readme.txt 01.07.2017 02.07.2017 03.07.2017
 Backup với cách Đặt tên File theo version và ghi chú cho version
 01.07.2017 Readme-version1.txt : giới thiệu về tác giả
 02.07.2017 Readme-version2.txt : giới thiệu về tác giả, website
 03.07.2017 Readme-version3.txt : giới thiệu về tác giả, website, thông tin liên lạc của tác giả
 Backup với cách Đặt tên theo thời gian
 Readme-10am-010717.txt : giới thiệu về tác giả
 Readme-9pm-020717.txt : giới thiệu về tác giả, website
 Readme-11am-03072017.txt : giới thiệu về tác giả, website, thông tin liên lạc của tác giả
 Banner-01.psd banner-02.psd banner-finish.psd banner-finish-02.psd :
 Yêu cầu quay về file Readme ở thời điểm file chỉ gồm phần tác giả, website  dựa vào ghi chú ta quay về file
Readme-version2.txt
 Kết quả phát sinh: mất thời gian tạo file, dễ nhầm lẫn, số lượng File càng nhiều càng mất thời gian và không
đảm bảo sự chính xác
2. Vấn đề làm việc nhóm: tập hợp nhiều cá nhân
 Bạn và Gả bàn đối diện cùng làm việc với file Readme.txt để báo cáo với Sếp (2 người)
 Ngày 1:
 Bạn soạn File Readme.txt với 20 dòng văn bản.
 Cùng ngày hôm đó: Gả bàn đối diện soạn File Readme.txt 30 dòng văn bản
 Cùng ngày hôm đó: Bạn và hắn nhập File lại và gửi cho Sếp  File Readme-Finish.txt
 Ngày 2:
 Bạn soạn tiếp File Readme-Finish.txt 30 dòng văn bản
 Cùng ngày hôm đó: Gả bàn đối diện soạn File Readme.txt 30 dòng văn bản
 Cùng ngày hôm đó: Bạn và hắn nhập File lại và gửi cho Sếp  2 File không đồng nhất  tìm vấn đề
 Kết quả phát sinh: 2 bạn mất thời gian tìm và đồng nhất File Readme.txt để gửi cho sếp, 10 bạn cùng làm
chung 1 File thì sau, 10 bạn làm cùng 10 File thì sao ??
Quản lý mã nguồn với GIT – www.zendvn.com Trang 3
Video 2 – Khóa học, cách học và tài liệu học
Nội dung video: giới thiệu về khóa học, cách học và tài liệu học
1. Khóa học
2. Đối tượng học & Cách học
3. Tài liệu học tập tham khảo
Quản lý mã nguồn với GIT – www.zendvn.com Trang 4
Video 3 – Hệ thống quản lý phiên bản
Nội dung video: Tìm hiểu các hệ thống quản lý phiên bản
1. Hệ thống quản lý phiên bản là gì
 Version Control System – VCS: lưu trữ các thay đổi của một hoặc nhiều tập tin theo các mốc thời gian
 Đối tượng sử dụng: Bất kỳ ai có thao tác trên tập tin (demo dành mã nguồn)
 Chức năng nổi bật
 Xem lại các thay đổi đã được thực hiện theo thời gian
 Xem ai là người thực hiện thay đổi
 Khôi phục phiên bản cũ của các tập tin
2. Phân loại các hệ thống quản lý phiên bản:
Hệ Thống Quản Lý Phiên Bản
Cục Bộ
Hệ Thống Quản Lý Phiên Bản Tập
Trung
Hệ Thống Quản Lý Phiên Bản Phân Tán
- Version Control System - VCS
- Ví dụ: RCS
- Máy tính cá nhân Lưu trữ tất
cả các sự thay đổi của các tập tin
- Mỗi người chỉ biết phiên bản
làm việc của mình
- Centralized Version Control
System – CVCS
- Ví dụ: CVS, Subversion, Perforce
- Máy chủ Lưu trữ tất cả sự thay đổi
của các tập tin, máy khách có quyền
thay đổi các tập tin trên máy chủ
- Tất cả thành viên đều biết phiên
bản làm việc của nhau
- Distributed Version Control System (DVCS)
- Ví dụ: Git, Mercurial, Bazaar hay Darcs
- Máy chủ Lưu trữ tất cả sự thay đổi của các tập
tin, máy khách có quyền thay đổi các tập tin
trên máy chủ
- Tất cả thành viên đều biết phiên bản làm việc
của nhau
- Máy khách sao chép phiên bản mới nhất của
các tập tin và sao chép toàn bộ kho chứa
Quản lý mã nguồn với GIT – www.zendvn.com Trang 5
Video 4 – GIT là gì
Nội dung video: các thông tin tổng quan về GIT
1. Hệ thống quản lý phiên bản phân tán
2. So sánh GIT và các VCS khác
GIT VCS
- Tại mỗi phiên bản lưu trữ tất cả các files (thay đổi hoặc
không thay đổi) (snapshot)
- Phần lớn các thao tác trong Git chỉ cần yêu cầu các tập tin
hay tài nguyên cục bộ (ngay tại máy tính cá nhân)
- Tại mỗi phiên bản lưu trữ files thay đổi
- Các thao tác đồi hỏi phải kết nối đến máy chủ chứa
Repository
3. Một số chức năng của GIT
 Theo dõi sự thay đổi của các tập tin
 Theo dõi sự thay đổi của các người dùng trên các tập tin
 Phục hồi trạng thái của các tập tin vào một thời điểm nào đó
 Hỗ trợ làm việc offline
 Hỗ trợ rất tốt trong môi trường làm việc nhóm
 Yêu cầu của các doanh nghiệp hiện nay
 Cộng đồng hỗ trợ và sử dụng rộng lớn
Quản lý mã nguồn với GIT – www.zendvn.com Trang 6
Video 5 – Cài đặt môi trường học tập
Nội dung video: cài đặt các phần mềm cần thiết để tìm hiểu GIT
1. Cài đặt GIT
 Download & Cài đặt
 Link: https://git-scm.com/
 Kiểm tra cài đặt thành công
 Git Bash git –-version
 CMD git –-version
2. Cài đặt các phần mềm khác: Editor, IDE
 Git
 TortoiseGit
 SourceTree
 Git Bash
 Git Gui
 Editor: SublimeText, Notepad, Notepad++
Quản lý mã nguồn với GIT – www.zendvn.com Trang 7
Video 6 – Cấu hình GIT
Nội dung video: cấu hình GIT cho lần sử dụng đầu tiên
1. Các cấp độ cấu hình
 Cấu hình chung cho toàn bộ người dùng C:ProgramDataGitconfig
 Cấu hình cho một người dùng nào đó C:UsersHaiLan.gitconfig
 Cấu hình cho một repository D:CourseGitdemogit-one
2. Cấu hình GIT cho lần dầu tiên sử dụng
 Cấu hình
 git config --global user.name hailan
 git config --global user.email hailan@gmail.com
 Xem thông tin cấu hình
 git config --list
 git config X (X là tên thuộc tính cần xem giá trị cấu hình)
 Xem các thông số của câu lệnh X nào đó
 git help X
 git X --help
 Tùy chỉnh giao diện GishBash cho việc soạn thảo
 Background
 Font: size, color
Quản lý mã nguồn với GIT – www.zendvn.com Trang 8
Video 7 – Hệ thống kiến thức
Nội dung video: hệ thống các kiến thức đã được học trong chương đầu tiên “GIT những vấn đề cần biết”
 Hiểu được lý do sử dụng các VCS và vai trò của VCS
 Cài đặt thành công môi trường cho việc học tập sau này
 Tiếp xúc đầu tiên với GIT thông qua thực hiện thành công câu lệnh cấu hình
Quản lý mã nguồn với GIT – www.zendvn.com Trang 9
Ph
Video 8 – Repository là gì
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: tìm hiểu về repository
1) Repository là gì
 Lưu trữ tất cả các trạng thái của các tập tin, các hành vi của người dùng trên các tập tin này
 Thường bố trí 1 repository tương đương 1 project mà ta thực hiện
 Để ghi lại việc thay đổi trạng thái của tập tin vào repository chúng ta thực hiện thao tác gọi là Commit
 Khi thực hiện commit, trong repository sẽ tạo ra commit (hoặc 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. Mỗi commit phân biệt nhau = 1 id phân biệt (chuỗi ký
tự được tự động sinh ra có chiều dài 40 ký tự)
2) Phân biệt Repository
 Local Repository: repository lưu trữ trên máy tính cá nhân, một người sử dụng
 Remote Repository: repository lưu trữ trên hệ thống máy chủ chuyên dụng, chia sẻ project cho nhiều
người cùng thực hiện
 công việc bình thường thì có thể sử dụng local repository và thực hiện trên toàn bộ máy sẵn có
 công khai nội dung công việc mà bản thân đã làm trên local repository, thì sẽ upload lên remote repository
rồi công khai. Thêm nữa, thông qua remote repository cũng có thể lấy về nội dung công việc của người khác.
3) Trạng thái của các tập tin
 Commited: dữ liệu đã được lưu trữ an toàn trong CSDL
 Modified: đã thay đổi tập tin nhưng chưa commit vào cơ sở dữ liệu
 Staged: đánh dấu sẽ commit phiên bản hiện tại của một tập tin đã chỉnh sửa trong lần commit sắp tới
 Sinh ra 3 vùng làm việc đối với một dự án sử dụng Git:
 Git directory: nơi Git lưu trữ các "siêu dữ kiện" (metadata) và cơ sở dữ liệu cho dự án của bạn
 Working directory: các tập tin nằm trong dự án của bạn
 Staging area (index): các tập tin sẵn sàng được đưa lên Git directory
Quản lý mã nguồn với GIT – www.zendvn.com Trang 10
4) Quy trình đề commit một tập tin
 Working directory được add vào vùng Staged (index), vùng staged được đẩy vào repository
Quản lý mã nguồn với GIT – www.zendvn.com Trang 11
Video 9 – Init Local Repository
Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: Khởi tạo local repository và đưa file readme.txt vào repository
1. Tạo folder git-one
2. Git bash here ngay tại folder này
3. git init
4. git status kiểm tra trạng thái tập tin (ở working tree hay index)
5. Add readme.txt
6. git status
7. git add readme.txt thêm tập tin vào vùng index
8. git status
9. git commit –m “Init project”
10. git status
Quản lý mã nguồn với GIT – www.zendvn.com Trang 12
Video 10 – Edit File
Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: Cập nhật file readme.txt vào gửi vào repository
Case 1: Edit readme.txt
1. git status
2. git add readme.txt
3. git status
4. git commit –m “Commit 2”
5. git status
Case 2: Edit file readme.txt
1. git status
2. git commit –m “C2 – Case2 Edit readme”
3. git commit –a –m “C2 – Case2 Edit readme”
4. git status
5. git log
Quản lý mã nguồn với GIT – www.zendvn.com Trang 13
Video 11 – Multi File
Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: Add nhiều file vào vùng Staged cùng một lúc
1. Add author.txt
2. add folder documents
3. add file requirement.txt
4. git status
5. git add *
6. git status
7. git commit –m “C3 – Multi File”
8. git status
9. git log
Quản lý mã nguồn với GIT – www.zendvn.com Trang 14
Video 12 – Vòng đời của các tập tin
Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: Tìm hiểu kỹ hơn về vòng đời của các tập tin
1. Mỗi tập tin trong thư mục làm việc có thể ở một trong hai trạng thái : tracked hoặc untracked
2. Tập tin tracked là các tập tin đã có mặt trong ảnh (snapshot) trước;
a) Unmodified
b) Modified
c) Staged
3. Tập tin untracked là các tập tin còn lại - bất kỳ tập tin nào trong thư mục làm việc của bạn mà không có ở
ảnh (lần commit) trước hoặc không ở trong khu vực tổ chức (staging area)
4. Ví dụ với project hiện tại
a) Tất cả các tập tin đang ở trạng thái unmodified và đang được theo dõi tracked
b) Tạo mới một tập tin lifecycle.txt có nội dung lifecycle
c) Tập tin này ở trạng thái untracked
d) git add *
e) Tập tin này đã được tracked
f) git commit –m “Life cycle”
g) Tập tin này ở trạng thái unmodified
h) Edit tập tin này nó ở trạng thái modified
i) Commit nó sang trạng thái stageddeo 12 – Vòng đời c
Quản lý mã nguồn với GIT – www.zendvn.com Trang 15
Video 13 – Staging Area
Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video:
1. Giá sử project hiện tại đã clean
2. Edit author.txt
3. Git status
4. author.txt nằm trong trạng thái modifed và chưa sẵn sàng commit
5. git add *
6. git status
7. author.txt nằm trong trạng thái modifed và sẵn sàng commit
8. Edit author.txt
9. Git status
10. author.txt vừa nằm trong trạng thái modifed chưa sẵn sàng commit và trạng thái modifed đã sẵn sàng
11. git commit điều gì xảy ra
Quản lý mã nguồn với GIT – www.zendvn.com Trang 16
Video 14 + Video 15 – Xóa File ra khỏi vùng Staging
Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: : Tạo file report.txt, add file vào vùng staged, bây giờ làm sao xóa file này ra khỏi vùng stage
1. Tạo file report.txt
2. git status
3. git add *
4. git status
5. git reset HEAD report.txt Xóa file ra khỏi vùng staged
6. Hoặc git rm --cached <file> Xóa file ra khỏi vùng staged
7. git status
Quản lý mã nguồn với GIT – www.zendvn.com Trang 17
Video 16 – Sử dụng .gitignore
Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: Sử dụng .gitignore để không theo dõi các tập tin được chỉ định (Từ chối một số file được thêm
vào vùng Staged)
1. Add me.txt, libs/string.txt, libs/image.txt nhưng không muốn commit
2. git status
3. Add file .gitignore bằng câu lệnh touch .gitignore
4. Cập nhật nội dung cho file .gitignore
5. Không commit các file *.xml
6. Công cụ online https://www.gitignore.io/
7. Quy tắc cho các mẫu có thể sử dụng trong .gitignore như sau:
 # ghi chú được bỏ qua
 Không có nội dung được bỏ qua
 abc/ thư mục abc
 !abc.txt không phải tập tin abc.txt
 Và áp dụng quy tắt biểu thức chính quy (regular expression)
# không theo dõi tập tin có đuôi .a
*.a
# nhưng theo dõi tập lib.a, mặc dù bạn đang bỏ qua tất cả tập tin .a ở trên
!lib.a
# chỉ bỏ qua tập TODO ở thư mục gốc, chứ không phải ở các thư mục con subdir/TODO
/TODO
# bỏ qua tất cả tập tin trong thư mục build/
build/
# bỏ qua doc/notes.txt, không phải doc/server/arch.txt
doc/*.txt
# bỏ qua tất cả tập .txt trong thư mục doc/
doc/**/*.txt
Quản lý mã nguồn với GIT – www.zendvn.com Trang 18
Video 17 – Xóa tập tin khỏi GIT
Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: các trường hợp xóa tập tin
1. Tạo file abc.txt và xóa file này  đang ở vùng working tree
a) Cách 1: Xóa như tập tin bình thường ở hệ điều hành
b) Cách 2: Xóa câu lệnh rm abc.txt
2. Xóa tập tin trong GIT
a) Xóa khỏi danh sách tracked (xóa khỏi vùng staged) git rm <filename>
b) Sau đó commit git commit
3. Tập tin readme.txt đã được staged, edit nội dung của nó cho nó về trạng thái modified, chưa thêm vào
stated, xóa thế nào
a) git rm -f readme.txt
4. Tập tin account.txt đã được staged, ko edit nội dung gì cả, xóa thế nào
a) git rm account.txt
b) git commit
5. Tập tin readme.txt đã được staged, edit nội dung của nó cho nó về trạng thái modified, thêm vào stated, xóa
thế nào
Quản lý mã nguồn với GIT – www.zendvn.com Trang 19
Video 18 – Đổi tên tập tin
Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: đổi tên tập tin
1. Tạo file task-01.txt
2. Đưa file này vào vùng staged  git status  git add *  git status
3. Đổi tên task-01.txt thành task-02.txt
4. git mv task-01.txt task-02.txt
Quản lý mã nguồn với GIT – www.zendvn.com Trang 20
Video 19 – Phục hồi
Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: quay về trạng thái trước của một tập tin
1. Vấn đề: bạn chỉnh sửa file readme.txt, sau đó phát hiện rằng mình không muốn commit file này và muốn
quay về trạng thái trước khi chỉnh sửa của file
2. git checkout -- readme.txt
Quản lý mã nguồn với GIT – www.zendvn.com Trang 21
Video 20 – Gộp commit
Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: gộp commit đã thực hiện
1. Vấn đề: Bạn nhận task A yêu cầu phải tạo 2 file task-01.txt và task-02.txt, sau đó commit 2 file này lên. Bạn
chỉ tạo 1 file task-01.txt và commit nó, bạn chợt nhớ ra là chưa tạo task-02.txt. Bây giờ nếu tạo task-02.txt và
commit sẽ có đến 2 commit, trong khi yêu cầu chỉ có 1 commit
2. Add file task-01.txt  git status  git add *  git commit –m “task A”
3. Add file task-02.txt  git status  git add *  git commit –amend
Working Tree commit Local Repo
A gửi thư B
A viết thư X,Y gửi B,
A viết thư (X, Y) gửi B
Quản lý mã nguồn với GIT – www.zendvn.com Trang 22
Video 21 – Xem lịch sử commit
Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: xem các commit đã thực hiện
1. Sử dụng cơ bản
a) git log hiển thị lịch sử commit
b) gitk hiển thị lịch sử commit bằng GUI
2. Tham số
a) git log -p -3 hiển thị 3 commit gần đây nhất
b) git log --stat hiển thị lịch sử commit với các thông tin tóm tắt
c) git log --pretty=oneline hiển thị lịch sử commit với mỗi commit là 1 dòng
d) git log --pretty=format:"%h - %an, %ar : %s"
 Xem tài liệu để hiểu hơn về các param
Quản lý mã nguồn với GIT – www.zendvn.com Trang 23
Video 22 – Hệ thống kiến thức
Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: hệ thống các kiến thức đã học
# Câu lệnh Ý nghĩa
1 git init Khởi tạo một repository (local)
2 git status Kiểm tra trạng thái các files của repository
3 git add <fileName> Thêm fileName vào trạng thái Staged
4 git add * Thêm tất cả tập tin ở trạng thái Working vào trạng thái Staged
5 touch .gitignore Tạo file .gitignore
6 git commit --m “Message” Commit files nằm trong trạng thái Staged kèm theo thông điệp
7 git commit -a --m “Message”
Commit files đã hoặc chưa nằm trong trạng thái Staged kèm theo thông
điệp
8 git log Xem log các commit trong Repository (tham khảo thêm các param)
9 git reset HEAD <filename> Xóa fileName ra khỏi trạng thái Staged (file vẫn còn tồn tại)
10 git rm --f <filename>
Xóa fileName ra khỏi trạng thái Staged và xóa khỏi ổ cứng (file không còn
tồn tại)
11 git rm --cached <filename> Xóa fileName ra khỏi trạng thái Staged (file vẫn còn tồn tại)
12 git checkout Quay về trạng thái trước của một tập tin
13 git mv fileName1 fileName2
Đổi tên fileName1 thành fileName2 (chuyển nội dung fileName1 sang
fileName2, sau đó xóa fileName1)
14 git commit --amend Nhập 1 commit về commit trước đó
Quản lý mã nguồn với GIT – www.zendvn.com Trang 24
Video 23 – Tình huống thực hành
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: yêu cầu về tình huống thực hành
1. Khởi tạo một Local repo có tên mweb
2. Tích hợp bootstrap và hiển thị nội dung “Xin chào, sản phẩm đầu tiên của tôi đây” (edit)
3. Commit lần đầu tiên “Init Project”
4. Tạo folder chứa ghi chú notes và không muốn git quản lý folder này
5. Task “Edit theme 123”: Commit 3
 “Xin chào, sản phẩm đầu tiên của tôi đây”  Hello, First Project
 Style.css  change background
Quản lý mã nguồn với GIT – www.zendvn.com Trang 25
Video 24 – Remote Repository
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: tìm hiểu các kiến thức xoay quanh Remote Repository
1. Phân biệt Repository
a) Local Repository: repository lưu trữ trên máy tính cá nhân, một người sử dụng
b) Remote Repository: repository lưu trữ trên hệ thống máy chủ chuyên dụng, chia sẻ project cho nhiều
người cùng thực hiện
2. Thao tác thường gặp
a) Clone: sao chép remote repo. Tải về toàn bộ nội dung của remote repo, và tạo thành local repository
b) Push: đưa dữ liệu từ Local repo lên remote repo.
c) Pull cập nhật local repository từ remote repository
 Hình dung đơn giản
Remote Repository  clone  Local Repository  push (upload) Remote Repository
 pull (download) Remote Repository
Quản lý mã nguồn với GIT – www.zendvn.com Trang 26
Video 25 – Đăng ký Remote Repositoy với Github
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: đăng ký một remote repository
1. Create Account
2. Create Repository
Quản lý mã nguồn với GIT – www.zendvn.com Trang 27
Video 26 – Clone một Remote Repository
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: cách clone (sử dụng, sao chép, tiếp tục phát triển, ...) một Remote repository
1. Sử dụng: git clone <repository>
 Clone <repository> từ Remote repo và đặt vào folder trùng tên với <repository>
 git clone https://github.com/luutruonghailan/course-java.git
2. Sử dụng: git clone <repository> [<directory>]
 Clone <repository> từ Remote repo và đặt vào folder directory
 git clone https://github.com/luutruonghailan/course-java.git abc
3. Xem thông tin Remote repository hiện tại
 git remote –v Xem thông tin Remote reposity hiện tại
 git remote show <name> Xem thông tin <name> hiện tại
Quản lý mã nguồn với GIT – www.zendvn.com Trang 28
Video 27 – Add Local Repository lên Remote Repositoy
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: Add một Local Repository lên Remote Repository tại <url> và đặt tên nó là <shortname>
1. Tại thư mục chứa Local Repository thực hiện
 Cú pháp git remote add <name> <repository>
 git remote add hailanjava https://github.com/luutruonghailan/test01.git
2. Đổi tên <name1> thành <name2>
 git remote rename <name1> <name2>
3. Xóa <name>
a) git remote remove <name>
Video ? – Add Local Repository vào Remote Repositoy
Quản lý mã nguồn với GIT – www.zendvn.com Trang 29
Video 28 & Video 29 – Push & Pull
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: các thao tác cơ bản trên Remote Repository
1. Kiểm tra sự thay đổi trên Remote Repository: git fetch
2. Kiểm tra sự thay đổi trên Remote Repository và merge vào phiên làm việc hiện tại: git pull
 git pull <name> <branch> có thể được rút gọn chỉ còn git pull
3. Đẩy dữ liệu lên remote repository
 git push <name> <branch>
Quản lý mã nguồn với GIT – www.zendvn.com Trang 30
Video 30 – Sử dụng Alias
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: sử dụng alias để đơn giản hóa câu lệnh
1. Cú pháp
 git config --global.config alias.st status
Quản lý mã nguồn với GIT – www.zendvn.com Trang 31
Video 31 – Hệ thống kiến thức
Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: hệ thống các kiến thức đã học
# Câu lệnh Ý nghĩa
1 git clone <repository> [<directory>] Clone Remote reposity <reposity> và đặt vào folder [<directory>]
2 git remote –v Xem thông tin Remote reposity hiện tại
3 git remote show <name> Xem thông tin <name> hiện tại
4 git remote add <name> <repository>
Add một Local Repository lên Remote Repository tại <repository> và
đặt tên nó là <name>
5 git remote rename <name1> <name2> Đổi tên <name1> thành <name2>
6 git remote remove <name> Xóa remote <name>
7 git pull <name> <branch>
Kiểm tra sự thay đổi trên Remote Repository và merge vào phiên làm
việc hiện tại
8 git push <name> <branch> Đẩy dữ liệu lên remote repository
9 git config --global.config alias.st status Tạo alias
Quản lý mã nguồn với GIT – www.zendvn.com Trang 32
Video 30 – Tình huống thực hành
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: các thao tác cơ bản trên Remote Repository
1. Chuẩn bị một project có tên mweb và hiển thị ra màn hình giá trị Hello mwed
2. Khởi tạo Local repo cho mweb
 Tạo local repository cho project này: git init
 Add các file vào vùng staged: git add *
 Commit các file này vào local repository: git commit -m "init project"
3. Đưa Local repo mweb lên Github (remote-mweb)
 Tạo repob remote-mweb trên Github Thủ công
 Add Local Repository lên Remote Repository git remote add origin
https://github.com/luutruonghailan/remote-mweb.git
 Kiểm tra thông tin của remote git remote -v
 Đưa các data từ local lên remote git push origin master
4. Clone Github về với folder mabc
 Clone remote git clone
https://github.com/luutruonghailan/remote-mweb.git mabc
 Di chuyển vào project cd mabc
5. Cập nhật nội dung cho local repo mabc
 Edit file index.html, thay Hello, mwed! Thành Hello, mweb!
 Add các file vào vùng staged: git add *
 Commit các file này vào local repository: git commit -m "Fix index.html"
 Kiểm tra trong local repo mweb thì tập tin index.html đã được chỉnh sửa chưa  chưa  update lại từ
remote-mweb  vẫn chưa  lý do  do chưa đưa local repo mabc lên trên remote-mweb
o git pull origin master
6. Push local repo mabc lên remote-mweb
 Kiểm tra có sự thay đổi gì từ remote- hay không git pull origin master
 Công bố sự thay đổi git push origin master
 Kiểm tra trong local repo mweb thì tập tin index.html đã được chỉnh sửa chưa  chưa  update lại từ
remote-mweb  đã có
o git pull origin master
Quản lý mã nguồn với GIT – www.zendvn.com Trang 33
Video 33 – Tìm hiểu Branch
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: tìm hiểu các kiến thức về branch
1. Tại sao lại sử dụng Branch
 Website abc.com là một website tin tức đang vận hành. Khách hàng yêu cầu bổ sung:
o Chức năng tin tức dạng video cho abc.com
o Chức năng subscribe cho abc.com
 Lúc này chúng ta thấy abc.com vừa thực hiện phát triển các chức năng cũ (fix, update) và thực hiện phát triển
thêm 2 chức năng mới  1 nhóm task update, 1 nhóm task video, 1 nhóm task subscire  nhiều phiên bản  mà
cùng làm trên cùng 1 source code  rất dễ phát sinh vấn đề  branch ra đời
 Mối nhóm làm trên một branch khác nhau, các branch hoàn toàn độc lập nhau, sau khi đã hoàn thiện task của
mình rồi thì sẽ nhập branch vào branch chính (branch master)
2. Phân loại Branch
 Long-Running Branches (Intergration branch) branch tích hợp (chức năng): chức năng mới
 Topic Branches: bug, issues Branch chủ đề sẽ tạo ra bằng cách phân branch từ branch tích hợp đã ổn định, khi
đã hoàn thành xong công việc sẽ sử dụng đưa vào branch tích hợp.
Quản lý mã nguồn với GIT – www.zendvn.com Trang 34
Video 34 – Tạo và chuyển nhánh
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: tìm hiểu thao tác tạo và chuyển nhánh làm việc
1. Xem danh sách nhánh
 git branch
 nhánh nào có dấu * là nhánh chúng ta đang làm việc
2. Tạo nhánh task-login
 git branch task-login
 git branch
3. Chuyển nhánh làm việc
 git checkout task-login
 Trước khi chuyển nhánh phải đảm bảo nhánh làm việc phải “nothing to commit, working tree clean”
4. Demo làm việc trên nhánh
 git branch
 git checkout task-login
 tạo file login.html và commit trên nhánh task-login
 Chuyển nhánh master và xem file login.html có tồn tại hay không?
 git branch -v xem commit mới nhất ở mỗi nhánh
5. Mẹo
 git checkout -b <branchname> tạo branchname và chuyển đến branchname
Commit sdksldhls -------- Master ---- task-logout
-------- task-login ---- login.html ---- bug-01
Quản lý mã nguồn với GIT – www.zendvn.com Trang 35
Video 35 – Merge nhánh
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: tìm hiểu cách merge các nhánh làm việc lại với nhau
1. Di chuyển đến nhánh master
 git merge task-login
2. Xem nhánh đã merge hoặc chưa merge vào nhánh hiện tại
 git checkout –b fixbug tạo nhánh fixbug và di chuyển đến nhánh này
 git branch --merged xem các nhánh đã merge vào nhánh hiện tại
 git branch --no-merged xem các nhánh chưa merge vào nhánh hiện tại
 Edit file login.html  commit
 git checkout master di chuyển về nhánh master
 git branch --merged ra kết quả fixbug
 git branch --no-merged ra kết quả task-login
Quản lý mã nguồn với GIT – www.zendvn.com Trang 36
Video 36 – Đổi tên và Xóa nhánh
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: tìm hiểu cách merge các nhánh làm việc lại với nhau
1. Đổi tên nhánh
 git branch -m <oldname> <newname> đổi tên nhánh
2. Xóa nhánh
 git branch -d <branchname> xóa nhánh <branchname> và nhánh này đã được merge
 git branch -D <branchname> xóa nhánh <branchname> và nhánh này chưa được merge
Quản lý mã nguồn với GIT – www.zendvn.com Trang 37
Video 37 38 39 40 41 – Sử dụng tag
Nội dung video: tìm hiểu các kiến thức về việc sử dụng tag
1. Tại sao lại sử dụng tag
 Đặt tên cho 1 commit đặt biệt nào đó (thời điểm phát hành) để dễ dàng truy xuất đến nó
2. Phân loại Tag
 Annotated Tag: đặt tag cho commit, thông tin: tên, đính kèm tên và email của người tag, thời gian đặt
tag, miêu tả của tag, ... (sử dụng nhiều)
 Lightweight Tag: đặt tag cho commit, thông tin: tên (Local repo)
3. Tạo tag cho commit cuối cùng
 git tag <tagname> Tạo mới một Lightweight Tag có tên là tagname
 git tag -a <tagname> -m “Mesage” Tạo mới một Annotated Tag có tên là tagname cùng với thông điệp
4. Xem danh sách các tag & Thông tin tag & Xóa tag
 git tag Xem tất cả các tag hiện có
 git tag –n Xem tất cả các tag hiện có và phần miêu tả của task
 git show tagname Xem thông tin tagname (demo với 2 loại loại)
 git tag –d tagname Xóa tag có tên tagname
5. Tạo Tag cho một commit bất kỳ
 git log –pretty=oneline Xem ID của các commit trước đó, chọn ID của commit cần
gắn tag, giả sử ta có X
 git tag -a <tagname> <X> -m <message> Thêm annotated tag vào commit có ID là X
 TIP: Google git log pretty colors (https://coderwall.com/p/euwpig/a-better-git-log)
6. Nhập tag vào branch
 git checkout –b <branchname> <tagname> Tạo một nhánh mới branchname từ tag đã tồn tại
<tagname>
o git checkout -b finish v03
7. Đưa tag lên Remote Repo
 git push <name> <tagname> Thêm <tagname> vào remote <name>
 git push <name> --tags Thêm tất cả tag vào remote <name>
 git push <name> -d <tagname> Xóa tagname tại Remote repository có tên name
Quản lý mã nguồn với GIT – www.zendvn.com Trang 38
Video 42 43 – Remote Branches
Nội dung video: tìm hiểu các thao tác trên Remote branch
1. Tìm hiểm Remote Branch
 HÌnh 1: Một bản sao Git cung cấp cho bạn nhánh master riêng và nhánh origin/master trỏ tới nhánh
master của origin.
 HÌnh 2: Làm việc nội bộ và ai đó đẩy lên máy chủ khiến cho lịch sử thay đổi khác biệt nhau.
Quản lý mã nguồn với GIT – www.zendvn.com Trang 39
 Hình 3: Lệnh git fetch cập nhật các tham chiếu từ xa.
2. Xem danh sách các nhánh ở Local Repo và Remote Repo
 git branch -a
3. Đẩy nhánh từ Local Repo lên Remote Repo
 git remote push <remote_name> <branch>
4. Xem danh sách các nhánh trên Remote Repo
 git remote show <remote_name>
 git ls-remote <remote_name>
5. Chuyển đổi làm việc sang nhánh remote
 git checkout <remote_name>/<branch_name>
6. Clone một Branch chỉ định từ Remote repo
 git clone -b <branch> <remote_url>
7. Xóa một Branch từ Remote repo
 git push origin :<branch_name>
Quản lý mã nguồn với GIT – www.zendvn.com Trang 40
Video 44 – Sử dụng Git cheat sheet
Nội dung video: tìm hiểu cách sử dụng Git cheat sheet
 Link: https://github.com/luutruonghailan/cheat-git.git
Quản lý mã nguồn với GIT – www.zendvn.com Trang 41
Video 45 46 47 48 – Sử dụng Rebasing
Nội dung video: tìm hiểu các thao tác trên Remote branch
1. Phân nhánh & Tích hợp nhánh
 Xem lại mục “3.2 Phân Nhánh Trong Git - Cơ Bản Về Phân Nhánh và Tích Hợp” và hiểu rõ các khái nhiệm
nhánh, phân nhán, fast forward,
 Fast-forward (chuyển tiếp nhanh): lịch sử của branch bugfix sẽ bao gồm tất cả lịch sử của branch master
 Non fast-forward:
Quản lý mã nguồn với GIT – www.zendvn.com Trang 42
2. Rebase
 Trong Git có 2 cách chính để tích hợp nhánh: merge và rebase
 Phân nhánh lần đầu tiên
 Merge
 Rebase
Quản lý mã nguồn với GIT – www.zendvn.com Trang 43
3. Tích hợp nhánh sử dụng Rebase
 Chuẩn bị một Loca repo mô phỏng hình vẽ trên
 Sử dụng merge
 Sử dụng rebase
4. Câu hỏi: So sánh 2 phương pháp gộp nhánh: merge vs rebase
Quản lý mã nguồn với GIT – www.zendvn.com Trang 44
Video 49 – Hệ thống kiến thức
Nội dung video: hệ thống các kiến thức đã học, xem git cheat sheet
Quản lý mã nguồn với GIT – www.zendvn.com Trang 45
Video 50 51 52 – Tình huống thực hành
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: thực hành ôn tập lại các kiến thức đã học
1. Xây dựng project được GIT quản lý với lịch sử commit và phân nhánh như hình vẽ (Local Repo)
 Tạo tag v.1.0 sau khi commit A
 Hoàn thiện yêu cầu phát hiện quên đặt tag cho commit C
 Đặt tên nhánh sai checout và tìm cách sửa lại cho đúng
2. Tạo một Remote Repo trên Github có tên là exe-p4
3. Push nhánh cart và master lên Remote Repo
4. Push tất cả các tag lên Remote Repo
5. Nhập nhánh master và fix-bug và tạo ra một commit mới
Quản lý mã nguồn với GIT – www.zendvn.com Trang 46
6. Rebase nhánh
7. Push nhánh cart lên remote
8. Nhập nhánh cart và master sau đó đánh dấu tag fisinh và push lên Remote
Quản lý mã nguồn với GIT – www.zendvn.com Trang 47
Video 53 54 55 56 – Comparisons
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: các trường hợp so sánh tập tin với nhau
1. Cài đặt và cấu hình phần mềm hỗ trợ:
 DiffMerge https://sourcegear.com/diffmerge/webhelp/sec__git__windows__github.html
 p4merge https://gist.github.com/dgoguerra/8258007
2. Các trường hợp so sánh
 1 tập tin có thể tồn tại ở 4 vùng sau: Working Directory, Staging Area, Local Repo(.git folder) và
Remote Repo
 Staging vs Working (L-R) git diff git difftool
 Local Repo vsWorking (L-R) git diff HEAD git difftool HEAD
 Local Repo vs Staging Area (L-R) git diff --staged HEAD git difftool --staged HEAD
git diff –cached
 Local Repo vs Remote Repo (L-R) git diff master origin/master ...
Working Directory Staging Area Local Repo (.git) Remote Repo
File Readme.txt
init readme
local repo
working tree
init readme
local repo
staging area
init readme
local repo
init readme
 Comit vs Commit git diff comitID commitID git difftool
 Tag vs Tag git diff tagname vs tagname
Commit 1 Commit 2 Tag 1 Tag 2
File Readme.txt Commit 1 Commit 2 Tag 1 Tag 2
Quản lý mã nguồn với GIT – www.zendvn.com Trang 48
Video 57 – Sử dụng Stash
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: các trường hợp so sánh tập tin với nhau
1. Tình huống:
 Bạn đang làm việc trên nhánh phụ, có 1 số tính năng nhưng chưa hoàn thiện để commit, đi ra ngoài 
đặt code ở đâu để an toàn  sử dụng không giam tạm stash (phạm vi nội bộ - Local Repo)
 Stash: lưu lại các thay đổi chưa commit (khi bạn muốn đổi sang 1 branch khác mà lại đang làm dở ở
branch hiện tại)
 Tài liệu https://git-scm.com/book/en/v2/Git-Tools-Stashing-and-Cleaning
2. Thực hành
 git stash lưu toàn bộ nội dung công việc đang làm dở
o Sử dụng git stash bao nhiêu lần tuỳ thích, mỗi lần Git sẽ lưu toàn bộ lần thay đổi đó như 1 phần tử
trong Stack.
 Xem lại danh sách các lần lưu thay đổi
o git stash list
o git stash list -p
o git stash show stash@{1}
 Áp dụng thay đổi từ stash:
o git stash apply stash@{1}
o git stash pop [stash@{1}]
 Xóa các thay đổi không cần thiết
o git stash drop stash@{1}
o git stash clear
Quản lý mã nguồn với GIT – www.zendvn.com Trang 49
Video 58 59 60 61 62 63 64 65 66 – Conflict và Xử lý conflict
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: tìm hiểu Conflict và Xử lý conflict
1. Conflict:
 Xung đột, đụng độ, mâu thuẫn, đụng code ... có 2 sự thay đổi trong một dòng trên cùng một tập tin và
GIT không biết lựa chọn sử dụng dòng lệnh nào
 Khi làm việc nhóm: 2 người cùng chỉnh sửa một file, một dòng code, khi đồng bộ sẽ xảy ra conflict
 Chuyển branch, thao tác trên cùng một file sẽ xảy ra conflict.
2. Xử lý conflict (merge)
 Branch
o Master Commit 1: init project
Commit 2: master - fix readme.txt
Commit 3: video - fix readme.txt
Commit 4: Finish merge
o Video Commit 1: init project
Commit 2: video - fix readme.txt
 Remote
3. Xử lý conflict (rebase)
 git rebase --continue
 git rebase --abort
 git rebase --skip
4. Xử lý conflict – Sử dụng GUI
 Cấu hình mergetool
git config --global merge.tool p4merge
git config --global mergetool.p4merge.path "C:/Program Files/Perforce/p4merge.exe"
git config --global mergetool.p4merge.cmd "'C:/Program Files/Perforce/p4merge.exe' $PWD/$LOCAL
$PWD/$BASE $PWD/$REMOTE $PWD/$MERGED"
git config --global mergetool.p4merge.cmd "p4merge $BASE $LOCAL $REMOTE $MERGED"
 Thực hiện mergetool
Quản lý mã nguồn với GIT – www.zendvn.com Trang 50
5. Xử lý conflict – Sử dụng GUI
 Cấu hình mergetool
git config --global merge.tool p4merge
git config --global mergetool.p4merge.path "C:/Program Files/Perforce/p4merge.exe"
git config --global mergetool.p4merge.cmd "'C:/Program Files/Perforce/p4merge.exe' $PWD/$BASE
$PWD/$LOCAL $PWD/$REMOTE $PWD/$MERGED"
 Thực hiện mergetool
Quản lý mã nguồn với GIT – www.zendvn.com Trang 51
Video 66 – Vận dụng Long-Running Branches và Topic Branches
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: vận dụng Long-Running Branches và Topic Branches
1. Tham khảo:
 https://backlogtool.com/git-guide/vn/stepup/stepup1_5.html
 http://nvie.com/posts/a-successful-git-branching-model/
2. Nội dung:
 Hình 1: Làm việc với một chức năng mới “Chức năng Video”
 Hình 2: Tạo branch Hotfix để tiến hàng sửa lỗi
Quản lý mã nguồn với GIT – www.zendvn.com Trang 52
 Hình 3: Tích hợp nhánh Hotfix vào nhánh Master
 Hình 4: Nhánh video cũng cần nhánh Hotfix để phát triển tiếp
 Hình 5: Rebase nhánh
Quản lý mã nguồn với GIT – www.zendvn.com Trang 53
3. Mô hình ứng dụng phân nhánh
 Master: quản lý trạng thái có thể release, đánh tag
 Develop: phát triển thông thường hướng đến trước khi release
 Feature: phát triển chức năng mới hay sửa lỗi
 Release: release-xxx
 Hotfix: hotfix-xxx chỉnh sửa gấp đối với sản phẩm đã release
Quản lý mã nguồn với GIT – www.zendvn.com Trang 54
Video 67 – Hiểu rõ hơn về CLONE vs PULL vs FETCH
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: hiểu rõ hơn về CLONE vs PULL vs FETCH
1. CLONE:
 Sao chép toàn bộ Remote Repo (Sử dụng khi bạn cần tạo mới một Git mới trên máy tính với toàn bộ dữ
liệu và thiết lập của một remote repository)
2. PULL
 Lấy toàn bộ dữ liệu từ Remote Repo và gộp vào branch hiện tại.
3. FETCH
 Lấy toàn bộ dữ liệu từ Remote Repo nhưng sẽ cho phép bạn gộp thủ công vào một branch nào đó tại
Local Repo
Quản lý mã nguồn với GIT – www.zendvn.com Trang 55
Video 68 – Hiểu rõ hơn REBASING vs MERGING
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: hiểu rõ hơn REBASING vs MERGING
MERGE
 Lịch sử commit không bị thay đổi vẫn còn lại nhưng sẽ trở nên phức tạp hơn.
 Không bảo lưu tổng số commit
REBASE
 Lịch sử sẽ trở nên đơn giản
 Lịch sử commit sẽ bị thay đổi (X khác X’, ...)
 Lịch sử commit sẽ là lịch sử commit mới nhất
 Bảo lưu tổng số commit
 Trường hợp đưa code mới nhất của branch tích hợp vào branch chủ đề thì sử dụng rebase.
 Trường hợp đưa branch chủ đề vào branch tích hợp, thì trước hết hãy rebase rồi merge.
 Trường hợp không nắm rõ lịch sử commit trên một branch, nên sử dụng merge để không làm thay
đổi lịch sử commit
Quản lý mã nguồn với GIT – www.zendvn.com Trang 56
Video 69 – Hệ thống kiến thức
ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết
Nội dung video: hệ thống lại các kiến thức đã học

More Related Content

What's hot

Chương VII tư tưởng Hồ Chí Minh về văn hóa
Chương VII  tư tưởng Hồ Chí Minh về văn hóaChương VII  tư tưởng Hồ Chí Minh về văn hóa
Chương VII tư tưởng Hồ Chí Minh về văn hóale hue
 
Báo cáo môn mã nguồn mở
Báo cáo môn mã nguồn mởBáo cáo môn mã nguồn mở
Báo cáo môn mã nguồn mởThuyet Nguyen
 
báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê
báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phêbáo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê
báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phêthuhuynhphonegap
 
Bài 14: Quản trị File và Print Server - Giáo trình FPT
Bài 14: Quản trị File và Print Server - Giáo trình FPTBài 14: Quản trị File và Print Server - Giáo trình FPT
Bài 14: Quản trị File và Print Server - Giáo trình FPTMasterCode.vn
 
Bài giảng bảo mật hệ thống thông tin
Bài giảng bảo mật hệ thống thông tinBài giảng bảo mật hệ thống thông tin
Bài giảng bảo mật hệ thống thông tinTran Tien
 
Bai giang cau tao kien truc
Bai giang  cau tao kien trucBai giang  cau tao kien truc
Bai giang cau tao kien trucViet Nam
 
Design Pattern qua ví dụ thực tế
Design Pattern qua ví dụ thực tếDesign Pattern qua ví dụ thực tế
Design Pattern qua ví dụ thực tếVKhang Yang
 
Bài giảng công nghệ phần mềm PTIT
Bài giảng công nghệ phần mềm PTITBài giảng công nghệ phần mềm PTIT
Bài giảng công nghệ phần mềm PTITNguynMinh294
 
On tap thi triet hoc mac le nin
On tap thi triet hoc mac le ninOn tap thi triet hoc mac le nin
On tap thi triet hoc mac le ninlongly
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngHuyen Pham
 
Dịch nghĩa và giải thích chi tiết starter toeic unit 3
Dịch nghĩa và giải thích chi tiết starter toeic unit 3Dịch nghĩa và giải thích chi tiết starter toeic unit 3
Dịch nghĩa và giải thích chi tiết starter toeic unit 3my nguyễn
 
Hệ điều hành (chương 3)
Hệ điều hành (chương 3)Hệ điều hành (chương 3)
Hệ điều hành (chương 3)realpotter
 
Giáo trình xử lý ảnh
Giáo trình xử lý ảnhGiáo trình xử lý ảnh
Giáo trình xử lý ảnhTùng Trần
 
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLPHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLDang Tuan
 
Bai giang atbmtt
Bai giang atbmtt Bai giang atbmtt
Bai giang atbmtt Hà Vũ
 
Sức bền vật liệu - ôn tập về lý thuyết và bài tập sức bền vật liệu
Sức bền vật liệu - ôn tập về lý thuyết và bài tập sức bền vật liệuSức bền vật liệu - ôn tập về lý thuyết và bài tập sức bền vật liệu
Sức bền vật liệu - ôn tập về lý thuyết và bài tập sức bền vật liệuCửa Hàng Vật Tư
 
Báo cáo bài tập lớn phân tích thiết kế hệ thống
Báo cáo bài tập lớn phân tích thiết kế hệ thốngBáo cáo bài tập lớn phân tích thiết kế hệ thống
Báo cáo bài tập lớn phân tích thiết kế hệ thốngJojo Kim
 

What's hot (20)

Chương VII tư tưởng Hồ Chí Minh về văn hóa
Chương VII  tư tưởng Hồ Chí Minh về văn hóaChương VII  tư tưởng Hồ Chí Minh về văn hóa
Chương VII tư tưởng Hồ Chí Minh về văn hóa
 
Báo cáo môn mã nguồn mở
Báo cáo môn mã nguồn mởBáo cáo môn mã nguồn mở
Báo cáo môn mã nguồn mở
 
báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê
báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phêbáo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê
báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê
 
Hệ điều hành windows
Hệ điều hành windowsHệ điều hành windows
Hệ điều hành windows
 
Bài 14: Quản trị File và Print Server - Giáo trình FPT
Bài 14: Quản trị File và Print Server - Giáo trình FPTBài 14: Quản trị File và Print Server - Giáo trình FPT
Bài 14: Quản trị File và Print Server - Giáo trình FPT
 
Bài giảng bảo mật hệ thống thông tin
Bài giảng bảo mật hệ thống thông tinBài giảng bảo mật hệ thống thông tin
Bài giảng bảo mật hệ thống thông tin
 
Bai giang cau tao kien truc
Bai giang  cau tao kien trucBai giang  cau tao kien truc
Bai giang cau tao kien truc
 
Design Pattern qua ví dụ thực tế
Design Pattern qua ví dụ thực tếDesign Pattern qua ví dụ thực tế
Design Pattern qua ví dụ thực tế
 
Bài giảng công nghệ phần mềm PTIT
Bài giảng công nghệ phần mềm PTITBài giảng công nghệ phần mềm PTIT
Bài giảng công nghệ phần mềm PTIT
 
On tap thi triet hoc mac le nin
On tap thi triet hoc mac le ninOn tap thi triet hoc mac le nin
On tap thi triet hoc mac le nin
 
Chude07
Chude07Chude07
Chude07
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
 
Dịch nghĩa và giải thích chi tiết starter toeic unit 3
Dịch nghĩa và giải thích chi tiết starter toeic unit 3Dịch nghĩa và giải thích chi tiết starter toeic unit 3
Dịch nghĩa và giải thích chi tiết starter toeic unit 3
 
Hệ điều hành (chương 3)
Hệ điều hành (chương 3)Hệ điều hành (chương 3)
Hệ điều hành (chương 3)
 
Đề tài: Xây dựng website bán hàng trực tuyến, HAY
Đề tài: Xây dựng website bán hàng trực tuyến, HAYĐề tài: Xây dựng website bán hàng trực tuyến, HAY
Đề tài: Xây dựng website bán hàng trực tuyến, HAY
 
Giáo trình xử lý ảnh
Giáo trình xử lý ảnhGiáo trình xử lý ảnh
Giáo trình xử lý ảnh
 
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLPHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
 
Bai giang atbmtt
Bai giang atbmtt Bai giang atbmtt
Bai giang atbmtt
 
Sức bền vật liệu - ôn tập về lý thuyết và bài tập sức bền vật liệu
Sức bền vật liệu - ôn tập về lý thuyết và bài tập sức bền vật liệuSức bền vật liệu - ôn tập về lý thuyết và bài tập sức bền vật liệu
Sức bền vật liệu - ôn tập về lý thuyết và bài tập sức bền vật liệu
 
Báo cáo bài tập lớn phân tích thiết kế hệ thống
Báo cáo bài tập lớn phân tích thiết kế hệ thốngBáo cáo bài tập lớn phân tích thiết kế hệ thống
Báo cáo bài tập lớn phân tích thiết kế hệ thống
 

Similar to Quản lý mã nguồn với GIT

VNPAY Git Seminar
VNPAY Git SeminarVNPAY Git Seminar
VNPAY Git SeminarMr Slowly
 
tài liệu Mã nguồn mở 03 he-thong-tep-linux-14
tài liệu Mã nguồn mở  03 he-thong-tep-linux-14tài liệu Mã nguồn mở  03 he-thong-tep-linux-14
tài liệu Mã nguồn mở 03 he-thong-tep-linux-14Thuyet Nguyen
 
Báo cáo athena
Báo cáo athenaBáo cáo athena
Báo cáo athenaHồng Ân
 
Dang baitapthuchanh monhdh_unix
Dang baitapthuchanh monhdh_unixDang baitapthuchanh monhdh_unix
Dang baitapthuchanh monhdh_unixBảo Bối
 
Owncloud - cloud solution for SME
Owncloud - cloud solution for SMEOwncloud - cloud solution for SME
Owncloud - cloud solution for SMEMichael Phan
 
Lưu trữ và xử lý dữ liệu trong điện toán đám mây
Lưu trữ và xử lý dữ liệu trong điện toán đám mâyLưu trữ và xử lý dữ liệu trong điện toán đám mây
Lưu trữ và xử lý dữ liệu trong điện toán đám mâyPhamTuanKhiem
 
Tìm hiểu về hệ điều hành android
Tìm hiểu về hệ điều hành androidTìm hiểu về hệ điều hành android
Tìm hiểu về hệ điều hành androidTÓc Đỏ XuÂn
 
Tim hieugooglecode tortoisesvn
Tim hieugooglecode tortoisesvnTim hieugooglecode tortoisesvn
Tim hieugooglecode tortoisesvnKhong Van Nhat
 
Chuong 03 he_thong_file
Chuong 03 he_thong_fileChuong 03 he_thong_file
Chuong 03 he_thong_filenguyenghia831
 
Quản lý dự án phần mềm bằng SVN
Quản lý dự án phần mềm bằng SVN Quản lý dự án phần mềm bằng SVN
Quản lý dự án phần mềm bằng SVN Lương Bá Hợp
 
Chương II: Hệ điều hành
Chương II: Hệ điều hànhChương II: Hệ điều hành
Chương II: Hệ điều hànhSunkute
 
Slide Báo Cáo Cuối Kỳ
Slide Báo Cáo Cuối KỳSlide Báo Cáo Cuối Kỳ
Slide Báo Cáo Cuối KỳLy ND
 

Similar to Quản lý mã nguồn với GIT (20)

Git Basic
Git BasicGit Basic
Git Basic
 
VNPAY Git Seminar
VNPAY Git SeminarVNPAY Git Seminar
VNPAY Git Seminar
 
tài liệu Mã nguồn mở 03 he-thong-tep-linux-14
tài liệu Mã nguồn mở  03 he-thong-tep-linux-14tài liệu Mã nguồn mở  03 he-thong-tep-linux-14
tài liệu Mã nguồn mở 03 he-thong-tep-linux-14
 
Guilde GIT.pptx
Guilde GIT.pptxGuilde GIT.pptx
Guilde GIT.pptx
 
Git it
Git itGit it
Git it
 
2016
20162016
2016
 
Báo cáo athena
Báo cáo athenaBáo cáo athena
Báo cáo athena
 
Bang Cuu Chuong Git | NIIT
Bang Cuu Chuong Git | NIITBang Cuu Chuong Git | NIIT
Bang Cuu Chuong Git | NIIT
 
Dang baitapthuchanh monhdh_unix
Dang baitapthuchanh monhdh_unixDang baitapthuchanh monhdh_unix
Dang baitapthuchanh monhdh_unix
 
--De cuong on tap hdh
 --De cuong on tap hdh --De cuong on tap hdh
--De cuong on tap hdh
 
Owncloud - cloud solution for SME
Owncloud - cloud solution for SMEOwncloud - cloud solution for SME
Owncloud - cloud solution for SME
 
Lưu trữ và xử lý dữ liệu trong điện toán đám mây
Lưu trữ và xử lý dữ liệu trong điện toán đám mâyLưu trữ và xử lý dữ liệu trong điện toán đám mây
Lưu trữ và xử lý dữ liệu trong điện toán đám mây
 
Tìm hiểu về hệ điều hành android
Tìm hiểu về hệ điều hành androidTìm hiểu về hệ điều hành android
Tìm hiểu về hệ điều hành android
 
Tim hieugooglecode tortoisesvn
Tim hieugooglecode tortoisesvnTim hieugooglecode tortoisesvn
Tim hieugooglecode tortoisesvn
 
Chuong 03 he_thong_file
Chuong 03 he_thong_fileChuong 03 he_thong_file
Chuong 03 he_thong_file
 
Quản lý dự án phần mềm bằng SVN
Quản lý dự án phần mềm bằng SVN Quản lý dự án phần mềm bằng SVN
Quản lý dự án phần mềm bằng SVN
 
Linux+03
Linux+03Linux+03
Linux+03
 
Hệ thống nhúng cho ứng dụng giải trí thời gian thực trên Android
Hệ thống nhúng cho ứng dụng giải trí thời gian thực trên AndroidHệ thống nhúng cho ứng dụng giải trí thời gian thực trên Android
Hệ thống nhúng cho ứng dụng giải trí thời gian thực trên Android
 
Chương II: Hệ điều hành
Chương II: Hệ điều hànhChương II: Hệ điều hành
Chương II: Hệ điều hành
 
Slide Báo Cáo Cuối Kỳ
Slide Báo Cáo Cuối KỳSlide Báo Cáo Cuối Kỳ
Slide Báo Cáo Cuối Kỳ
 

More from ZendVN

Giải pháp toàn diện cho Multi Language
Giải pháp toàn diện cho Multi Language Giải pháp toàn diện cho Multi Language
Giải pháp toàn diện cho Multi Language ZendVN
 
Giới thiệu PHP 7
Giới thiệu PHP 7Giới thiệu PHP 7
Giới thiệu PHP 7ZendVN
 
Câu hỏi trắc nghiệm PHP
Câu hỏi trắc nghiệm PHPCâu hỏi trắc nghiệm PHP
Câu hỏi trắc nghiệm PHPZendVN
 
Tài liệu lập trình jQuery
Tài liệu lập trình jQueryTài liệu lập trình jQuery
Tài liệu lập trình jQueryZendVN
 
Tài liệu Lập trình Java Core
Tài liệu Lập trình Java CoreTài liệu Lập trình Java Core
Tài liệu Lập trình Java CoreZendVN
 
Tài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xTài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xZendVN
 
Xây dựng ứng dụng với Zend Framework 2.x
Xây dựng ứng dụng với Zend Framework 2.xXây dựng ứng dụng với Zend Framework 2.x
Xây dựng ứng dụng với Zend Framework 2.xZendVN
 
Hướng dẫn lập trình CMS Joomla 2.5
Hướng dẫn lập trình CMS Joomla 2.5 Hướng dẫn lập trình CMS Joomla 2.5
Hướng dẫn lập trình CMS Joomla 2.5 ZendVN
 
Tài liệu lập trình PHP từ căn bản đến nâng cao
Tài liệu lập trình PHP từ căn bản đến nâng caoTài liệu lập trình PHP từ căn bản đến nâng cao
Tài liệu lập trình PHP từ căn bản đến nâng caoZendVN
 

More from ZendVN (9)

Giải pháp toàn diện cho Multi Language
Giải pháp toàn diện cho Multi Language Giải pháp toàn diện cho Multi Language
Giải pháp toàn diện cho Multi Language
 
Giới thiệu PHP 7
Giới thiệu PHP 7Giới thiệu PHP 7
Giới thiệu PHP 7
 
Câu hỏi trắc nghiệm PHP
Câu hỏi trắc nghiệm PHPCâu hỏi trắc nghiệm PHP
Câu hỏi trắc nghiệm PHP
 
Tài liệu lập trình jQuery
Tài liệu lập trình jQueryTài liệu lập trình jQuery
Tài liệu lập trình jQuery
 
Tài liệu Lập trình Java Core
Tài liệu Lập trình Java CoreTài liệu Lập trình Java Core
Tài liệu Lập trình Java Core
 
Tài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xTài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.x
 
Xây dựng ứng dụng với Zend Framework 2.x
Xây dựng ứng dụng với Zend Framework 2.xXây dựng ứng dụng với Zend Framework 2.x
Xây dựng ứng dụng với Zend Framework 2.x
 
Hướng dẫn lập trình CMS Joomla 2.5
Hướng dẫn lập trình CMS Joomla 2.5 Hướng dẫn lập trình CMS Joomla 2.5
Hướng dẫn lập trình CMS Joomla 2.5
 
Tài liệu lập trình PHP từ căn bản đến nâng cao
Tài liệu lập trình PHP từ căn bản đến nâng caoTài liệu lập trình PHP từ căn bản đến nâng cao
Tài liệu lập trình PHP từ căn bản đến nâng cao
 

Recently uploaded

BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...Nguyen Thanh Tu Collection
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líDr K-OGN
 
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXH
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXHTư tưởng Hồ Chí Minh về độc lập dân tộc và CNXH
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXHThaoPhuong154017
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...ThunTrn734461
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdftohoanggiabao81
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Hệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tếHệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tếngTonH1
 
Ma trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tếMa trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tếngTonH1
 
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxChàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxendkay31
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Bai 1 cong bo mot cong trinh nghien cuu khoa hoc
Bai 1 cong bo mot cong trinh nghien cuu khoa hocBai 1 cong bo mot cong trinh nghien cuu khoa hoc
Bai 1 cong bo mot cong trinh nghien cuu khoa hocVnPhan58
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Nguyen Thanh Tu Collection
 
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...Nguyen Thanh Tu Collection
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...hoangtuansinh1
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...Nguyen Thanh Tu Collection
 
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoabài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa2353020138
 
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxnhungdt08102004
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhvanhathvc
 

Recently uploaded (20)

BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
 
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXH
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXHTư tưởng Hồ Chí Minh về độc lập dân tộc và CNXH
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXH
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Hệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tếHệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tế
 
Ma trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tếMa trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tế
 
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxChàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Bai 1 cong bo mot cong trinh nghien cuu khoa hoc
Bai 1 cong bo mot cong trinh nghien cuu khoa hocBai 1 cong bo mot cong trinh nghien cuu khoa hoc
Bai 1 cong bo mot cong trinh nghien cuu khoa hoc
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
 
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
 
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoabài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
 
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
 

Quản lý mã nguồn với GIT

  • 1. Quản lý mã nguồn với GIT – www.zendvn.com Trang 1 Quản lý mã nguồn với GIT
  • 2. Quản lý mã nguồn với GIT – www.zendvn.com Trang 2 Video 1 – Vấn đề làm việc thực tế Nội dung video: nêu lên vấn đề thực tế về việc làm việc với các tập tin thư mục 1. Vấn đề cá nhân:  Bạn đang làm việc với một tập tin nào đó. Khi muốn quay về trạng thái trước khi chỉnh sửa của tập tin thì bạn sẽ làm gì?  backup file trước khi chỉnh sửa.  Readme.txt 01.07.2017 02.07.2017 03.07.2017  Backup với cách Đặt tên File theo version và ghi chú cho version  01.07.2017 Readme-version1.txt : giới thiệu về tác giả  02.07.2017 Readme-version2.txt : giới thiệu về tác giả, website  03.07.2017 Readme-version3.txt : giới thiệu về tác giả, website, thông tin liên lạc của tác giả  Backup với cách Đặt tên theo thời gian  Readme-10am-010717.txt : giới thiệu về tác giả  Readme-9pm-020717.txt : giới thiệu về tác giả, website  Readme-11am-03072017.txt : giới thiệu về tác giả, website, thông tin liên lạc của tác giả  Banner-01.psd banner-02.psd banner-finish.psd banner-finish-02.psd :  Yêu cầu quay về file Readme ở thời điểm file chỉ gồm phần tác giả, website  dựa vào ghi chú ta quay về file Readme-version2.txt  Kết quả phát sinh: mất thời gian tạo file, dễ nhầm lẫn, số lượng File càng nhiều càng mất thời gian và không đảm bảo sự chính xác 2. Vấn đề làm việc nhóm: tập hợp nhiều cá nhân  Bạn và Gả bàn đối diện cùng làm việc với file Readme.txt để báo cáo với Sếp (2 người)  Ngày 1:  Bạn soạn File Readme.txt với 20 dòng văn bản.  Cùng ngày hôm đó: Gả bàn đối diện soạn File Readme.txt 30 dòng văn bản  Cùng ngày hôm đó: Bạn và hắn nhập File lại và gửi cho Sếp  File Readme-Finish.txt  Ngày 2:  Bạn soạn tiếp File Readme-Finish.txt 30 dòng văn bản  Cùng ngày hôm đó: Gả bàn đối diện soạn File Readme.txt 30 dòng văn bản  Cùng ngày hôm đó: Bạn và hắn nhập File lại và gửi cho Sếp  2 File không đồng nhất  tìm vấn đề  Kết quả phát sinh: 2 bạn mất thời gian tìm và đồng nhất File Readme.txt để gửi cho sếp, 10 bạn cùng làm chung 1 File thì sau, 10 bạn làm cùng 10 File thì sao ??
  • 3. Quản lý mã nguồn với GIT – www.zendvn.com Trang 3 Video 2 – Khóa học, cách học và tài liệu học Nội dung video: giới thiệu về khóa học, cách học và tài liệu học 1. Khóa học 2. Đối tượng học & Cách học 3. Tài liệu học tập tham khảo
  • 4. Quản lý mã nguồn với GIT – www.zendvn.com Trang 4 Video 3 – Hệ thống quản lý phiên bản Nội dung video: Tìm hiểu các hệ thống quản lý phiên bản 1. Hệ thống quản lý phiên bản là gì  Version Control System – VCS: lưu trữ các thay đổi của một hoặc nhiều tập tin theo các mốc thời gian  Đối tượng sử dụng: Bất kỳ ai có thao tác trên tập tin (demo dành mã nguồn)  Chức năng nổi bật  Xem lại các thay đổi đã được thực hiện theo thời gian  Xem ai là người thực hiện thay đổi  Khôi phục phiên bản cũ của các tập tin 2. Phân loại các hệ thống quản lý phiên bản: Hệ Thống Quản Lý Phiên Bản Cục Bộ Hệ Thống Quản Lý Phiên Bản Tập Trung Hệ Thống Quản Lý Phiên Bản Phân Tán - Version Control System - VCS - Ví dụ: RCS - Máy tính cá nhân Lưu trữ tất cả các sự thay đổi của các tập tin - Mỗi người chỉ biết phiên bản làm việc của mình - Centralized Version Control System – CVCS - Ví dụ: CVS, Subversion, Perforce - Máy chủ Lưu trữ tất cả sự thay đổi của các tập tin, máy khách có quyền thay đổi các tập tin trên máy chủ - Tất cả thành viên đều biết phiên bản làm việc của nhau - Distributed Version Control System (DVCS) - Ví dụ: Git, Mercurial, Bazaar hay Darcs - Máy chủ Lưu trữ tất cả sự thay đổi của các tập tin, máy khách có quyền thay đổi các tập tin trên máy chủ - Tất cả thành viên đều biết phiên bản làm việc của nhau - Máy khách sao chép phiên bản mới nhất của các tập tin và sao chép toàn bộ kho chứa
  • 5. Quản lý mã nguồn với GIT – www.zendvn.com Trang 5 Video 4 – GIT là gì Nội dung video: các thông tin tổng quan về GIT 1. Hệ thống quản lý phiên bản phân tán 2. So sánh GIT và các VCS khác GIT VCS - Tại mỗi phiên bản lưu trữ tất cả các files (thay đổi hoặc không thay đổi) (snapshot) - Phần lớn các thao tác trong Git chỉ cần yêu cầu các tập tin hay tài nguyên cục bộ (ngay tại máy tính cá nhân) - Tại mỗi phiên bản lưu trữ files thay đổi - Các thao tác đồi hỏi phải kết nối đến máy chủ chứa Repository 3. Một số chức năng của GIT  Theo dõi sự thay đổi của các tập tin  Theo dõi sự thay đổi của các người dùng trên các tập tin  Phục hồi trạng thái của các tập tin vào một thời điểm nào đó  Hỗ trợ làm việc offline  Hỗ trợ rất tốt trong môi trường làm việc nhóm  Yêu cầu của các doanh nghiệp hiện nay  Cộng đồng hỗ trợ và sử dụng rộng lớn
  • 6. Quản lý mã nguồn với GIT – www.zendvn.com Trang 6 Video 5 – Cài đặt môi trường học tập Nội dung video: cài đặt các phần mềm cần thiết để tìm hiểu GIT 1. Cài đặt GIT  Download & Cài đặt  Link: https://git-scm.com/  Kiểm tra cài đặt thành công  Git Bash git –-version  CMD git –-version 2. Cài đặt các phần mềm khác: Editor, IDE  Git  TortoiseGit  SourceTree  Git Bash  Git Gui  Editor: SublimeText, Notepad, Notepad++
  • 7. Quản lý mã nguồn với GIT – www.zendvn.com Trang 7 Video 6 – Cấu hình GIT Nội dung video: cấu hình GIT cho lần sử dụng đầu tiên 1. Các cấp độ cấu hình  Cấu hình chung cho toàn bộ người dùng C:ProgramDataGitconfig  Cấu hình cho một người dùng nào đó C:UsersHaiLan.gitconfig  Cấu hình cho một repository D:CourseGitdemogit-one 2. Cấu hình GIT cho lần dầu tiên sử dụng  Cấu hình  git config --global user.name hailan  git config --global user.email hailan@gmail.com  Xem thông tin cấu hình  git config --list  git config X (X là tên thuộc tính cần xem giá trị cấu hình)  Xem các thông số của câu lệnh X nào đó  git help X  git X --help  Tùy chỉnh giao diện GishBash cho việc soạn thảo  Background  Font: size, color
  • 8. Quản lý mã nguồn với GIT – www.zendvn.com Trang 8 Video 7 – Hệ thống kiến thức Nội dung video: hệ thống các kiến thức đã được học trong chương đầu tiên “GIT những vấn đề cần biết”  Hiểu được lý do sử dụng các VCS và vai trò của VCS  Cài đặt thành công môi trường cho việc học tập sau này  Tiếp xúc đầu tiên với GIT thông qua thực hiện thành công câu lệnh cấu hình
  • 9. Quản lý mã nguồn với GIT – www.zendvn.com Trang 9 Ph Video 8 – Repository là gì ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: tìm hiểu về repository 1) Repository là gì  Lưu trữ tất cả các trạng thái của các tập tin, các hành vi của người dùng trên các tập tin này  Thường bố trí 1 repository tương đương 1 project mà ta thực hiện  Để ghi lại việc thay đổi trạng thái của tập tin vào repository chúng ta thực hiện thao tác gọi là Commit  Khi thực hiện commit, trong repository sẽ tạo ra commit (hoặc 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. Mỗi commit phân biệt nhau = 1 id phân biệt (chuỗi ký tự được tự động sinh ra có chiều dài 40 ký tự) 2) Phân biệt Repository  Local Repository: repository lưu trữ trên máy tính cá nhân, một người sử dụng  Remote Repository: repository lưu trữ trên hệ thống máy chủ chuyên dụng, chia sẻ project cho nhiều người cùng thực hiện  công việc bình thường thì có thể sử dụng local repository và thực hiện trên toàn bộ máy sẵn có  công khai nội dung công việc mà bản thân đã làm trên local repository, thì sẽ upload lên remote repository rồi công khai. Thêm nữa, thông qua remote repository cũng có thể lấy về nội dung công việc của người khác. 3) Trạng thái của các tập tin  Commited: dữ liệu đã được lưu trữ an toàn trong CSDL  Modified: đã thay đổi tập tin nhưng chưa commit vào cơ sở dữ liệu  Staged: đánh dấu sẽ commit phiên bản hiện tại của một tập tin đã chỉnh sửa trong lần commit sắp tới  Sinh ra 3 vùng làm việc đối với một dự án sử dụng Git:  Git directory: nơi Git lưu trữ các "siêu dữ kiện" (metadata) và cơ sở dữ liệu cho dự án của bạn  Working directory: các tập tin nằm trong dự án của bạn  Staging area (index): các tập tin sẵn sàng được đưa lên Git directory
  • 10. Quản lý mã nguồn với GIT – www.zendvn.com Trang 10 4) Quy trình đề commit một tập tin  Working directory được add vào vùng Staged (index), vùng staged được đẩy vào repository
  • 11. Quản lý mã nguồn với GIT – www.zendvn.com Trang 11 Video 9 – Init Local Repository Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: Khởi tạo local repository và đưa file readme.txt vào repository 1. Tạo folder git-one 2. Git bash here ngay tại folder này 3. git init 4. git status kiểm tra trạng thái tập tin (ở working tree hay index) 5. Add readme.txt 6. git status 7. git add readme.txt thêm tập tin vào vùng index 8. git status 9. git commit –m “Init project” 10. git status
  • 12. Quản lý mã nguồn với GIT – www.zendvn.com Trang 12 Video 10 – Edit File Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: Cập nhật file readme.txt vào gửi vào repository Case 1: Edit readme.txt 1. git status 2. git add readme.txt 3. git status 4. git commit –m “Commit 2” 5. git status Case 2: Edit file readme.txt 1. git status 2. git commit –m “C2 – Case2 Edit readme” 3. git commit –a –m “C2 – Case2 Edit readme” 4. git status 5. git log
  • 13. Quản lý mã nguồn với GIT – www.zendvn.com Trang 13 Video 11 – Multi File Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: Add nhiều file vào vùng Staged cùng một lúc 1. Add author.txt 2. add folder documents 3. add file requirement.txt 4. git status 5. git add * 6. git status 7. git commit –m “C3 – Multi File” 8. git status 9. git log
  • 14. Quản lý mã nguồn với GIT – www.zendvn.com Trang 14 Video 12 – Vòng đời của các tập tin Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: Tìm hiểu kỹ hơn về vòng đời của các tập tin 1. Mỗi tập tin trong thư mục làm việc có thể ở một trong hai trạng thái : tracked hoặc untracked 2. Tập tin tracked là các tập tin đã có mặt trong ảnh (snapshot) trước; a) Unmodified b) Modified c) Staged 3. Tập tin untracked là các tập tin còn lại - bất kỳ tập tin nào trong thư mục làm việc của bạn mà không có ở ảnh (lần commit) trước hoặc không ở trong khu vực tổ chức (staging area) 4. Ví dụ với project hiện tại a) Tất cả các tập tin đang ở trạng thái unmodified và đang được theo dõi tracked b) Tạo mới một tập tin lifecycle.txt có nội dung lifecycle c) Tập tin này ở trạng thái untracked d) git add * e) Tập tin này đã được tracked f) git commit –m “Life cycle” g) Tập tin này ở trạng thái unmodified h) Edit tập tin này nó ở trạng thái modified i) Commit nó sang trạng thái stageddeo 12 – Vòng đời c
  • 15. Quản lý mã nguồn với GIT – www.zendvn.com Trang 15 Video 13 – Staging Area Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: 1. Giá sử project hiện tại đã clean 2. Edit author.txt 3. Git status 4. author.txt nằm trong trạng thái modifed và chưa sẵn sàng commit 5. git add * 6. git status 7. author.txt nằm trong trạng thái modifed và sẵn sàng commit 8. Edit author.txt 9. Git status 10. author.txt vừa nằm trong trạng thái modifed chưa sẵn sàng commit và trạng thái modifed đã sẵn sàng 11. git commit điều gì xảy ra
  • 16. Quản lý mã nguồn với GIT – www.zendvn.com Trang 16 Video 14 + Video 15 – Xóa File ra khỏi vùng Staging Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: : Tạo file report.txt, add file vào vùng staged, bây giờ làm sao xóa file này ra khỏi vùng stage 1. Tạo file report.txt 2. git status 3. git add * 4. git status 5. git reset HEAD report.txt Xóa file ra khỏi vùng staged 6. Hoặc git rm --cached <file> Xóa file ra khỏi vùng staged 7. git status
  • 17. Quản lý mã nguồn với GIT – www.zendvn.com Trang 17 Video 16 – Sử dụng .gitignore Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: Sử dụng .gitignore để không theo dõi các tập tin được chỉ định (Từ chối một số file được thêm vào vùng Staged) 1. Add me.txt, libs/string.txt, libs/image.txt nhưng không muốn commit 2. git status 3. Add file .gitignore bằng câu lệnh touch .gitignore 4. Cập nhật nội dung cho file .gitignore 5. Không commit các file *.xml 6. Công cụ online https://www.gitignore.io/ 7. Quy tắc cho các mẫu có thể sử dụng trong .gitignore như sau:  # ghi chú được bỏ qua  Không có nội dung được bỏ qua  abc/ thư mục abc  !abc.txt không phải tập tin abc.txt  Và áp dụng quy tắt biểu thức chính quy (regular expression) # không theo dõi tập tin có đuôi .a *.a # nhưng theo dõi tập lib.a, mặc dù bạn đang bỏ qua tất cả tập tin .a ở trên !lib.a # chỉ bỏ qua tập TODO ở thư mục gốc, chứ không phải ở các thư mục con subdir/TODO /TODO # bỏ qua tất cả tập tin trong thư mục build/ build/ # bỏ qua doc/notes.txt, không phải doc/server/arch.txt doc/*.txt # bỏ qua tất cả tập .txt trong thư mục doc/ doc/**/*.txt
  • 18. Quản lý mã nguồn với GIT – www.zendvn.com Trang 18 Video 17 – Xóa tập tin khỏi GIT Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: các trường hợp xóa tập tin 1. Tạo file abc.txt và xóa file này  đang ở vùng working tree a) Cách 1: Xóa như tập tin bình thường ở hệ điều hành b) Cách 2: Xóa câu lệnh rm abc.txt 2. Xóa tập tin trong GIT a) Xóa khỏi danh sách tracked (xóa khỏi vùng staged) git rm <filename> b) Sau đó commit git commit 3. Tập tin readme.txt đã được staged, edit nội dung của nó cho nó về trạng thái modified, chưa thêm vào stated, xóa thế nào a) git rm -f readme.txt 4. Tập tin account.txt đã được staged, ko edit nội dung gì cả, xóa thế nào a) git rm account.txt b) git commit 5. Tập tin readme.txt đã được staged, edit nội dung của nó cho nó về trạng thái modified, thêm vào stated, xóa thế nào
  • 19. Quản lý mã nguồn với GIT – www.zendvn.com Trang 19 Video 18 – Đổi tên tập tin Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: đổi tên tập tin 1. Tạo file task-01.txt 2. Đưa file này vào vùng staged  git status  git add *  git status 3. Đổi tên task-01.txt thành task-02.txt 4. git mv task-01.txt task-02.txt
  • 20. Quản lý mã nguồn với GIT – www.zendvn.com Trang 20 Video 19 – Phục hồi Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: quay về trạng thái trước của một tập tin 1. Vấn đề: bạn chỉnh sửa file readme.txt, sau đó phát hiện rằng mình không muốn commit file này và muốn quay về trạng thái trước khi chỉnh sửa của file 2. git checkout -- readme.txt
  • 21. Quản lý mã nguồn với GIT – www.zendvn.com Trang 21 Video 20 – Gộp commit Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: gộp commit đã thực hiện 1. Vấn đề: Bạn nhận task A yêu cầu phải tạo 2 file task-01.txt và task-02.txt, sau đó commit 2 file này lên. Bạn chỉ tạo 1 file task-01.txt và commit nó, bạn chợt nhớ ra là chưa tạo task-02.txt. Bây giờ nếu tạo task-02.txt và commit sẽ có đến 2 commit, trong khi yêu cầu chỉ có 1 commit 2. Add file task-01.txt  git status  git add *  git commit –m “task A” 3. Add file task-02.txt  git status  git add *  git commit –amend Working Tree commit Local Repo A gửi thư B A viết thư X,Y gửi B, A viết thư (X, Y) gửi B
  • 22. Quản lý mã nguồn với GIT – www.zendvn.com Trang 22 Video 21 – Xem lịch sử commit Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: xem các commit đã thực hiện 1. Sử dụng cơ bản a) git log hiển thị lịch sử commit b) gitk hiển thị lịch sử commit bằng GUI 2. Tham số a) git log -p -3 hiển thị 3 commit gần đây nhất b) git log --stat hiển thị lịch sử commit với các thông tin tóm tắt c) git log --pretty=oneline hiển thị lịch sử commit với mỗi commit là 1 dòng d) git log --pretty=format:"%h - %an, %ar : %s"  Xem tài liệu để hiểu hơn về các param
  • 23. Quản lý mã nguồn với GIT – www.zendvn.com Trang 23 Video 22 – Hệ thống kiến thức Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: hệ thống các kiến thức đã học # Câu lệnh Ý nghĩa 1 git init Khởi tạo một repository (local) 2 git status Kiểm tra trạng thái các files của repository 3 git add <fileName> Thêm fileName vào trạng thái Staged 4 git add * Thêm tất cả tập tin ở trạng thái Working vào trạng thái Staged 5 touch .gitignore Tạo file .gitignore 6 git commit --m “Message” Commit files nằm trong trạng thái Staged kèm theo thông điệp 7 git commit -a --m “Message” Commit files đã hoặc chưa nằm trong trạng thái Staged kèm theo thông điệp 8 git log Xem log các commit trong Repository (tham khảo thêm các param) 9 git reset HEAD <filename> Xóa fileName ra khỏi trạng thái Staged (file vẫn còn tồn tại) 10 git rm --f <filename> Xóa fileName ra khỏi trạng thái Staged và xóa khỏi ổ cứng (file không còn tồn tại) 11 git rm --cached <filename> Xóa fileName ra khỏi trạng thái Staged (file vẫn còn tồn tại) 12 git checkout Quay về trạng thái trước của một tập tin 13 git mv fileName1 fileName2 Đổi tên fileName1 thành fileName2 (chuyển nội dung fileName1 sang fileName2, sau đó xóa fileName1) 14 git commit --amend Nhập 1 commit về commit trước đó
  • 24. Quản lý mã nguồn với GIT – www.zendvn.com Trang 24 Video 23 – Tình huống thực hành ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: yêu cầu về tình huống thực hành 1. Khởi tạo một Local repo có tên mweb 2. Tích hợp bootstrap và hiển thị nội dung “Xin chào, sản phẩm đầu tiên của tôi đây” (edit) 3. Commit lần đầu tiên “Init Project” 4. Tạo folder chứa ghi chú notes và không muốn git quản lý folder này 5. Task “Edit theme 123”: Commit 3  “Xin chào, sản phẩm đầu tiên của tôi đây”  Hello, First Project  Style.css  change background
  • 25. Quản lý mã nguồn với GIT – www.zendvn.com Trang 25 Video 24 – Remote Repository ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: tìm hiểu các kiến thức xoay quanh Remote Repository 1. Phân biệt Repository a) Local Repository: repository lưu trữ trên máy tính cá nhân, một người sử dụng b) Remote Repository: repository lưu trữ trên hệ thống máy chủ chuyên dụng, chia sẻ project cho nhiều người cùng thực hiện 2. Thao tác thường gặp a) Clone: sao chép remote repo. Tải về toàn bộ nội dung của remote repo, và tạo thành local repository b) Push: đưa dữ liệu từ Local repo lên remote repo. c) Pull cập nhật local repository từ remote repository  Hình dung đơn giản Remote Repository  clone  Local Repository  push (upload) Remote Repository  pull (download) Remote Repository
  • 26. Quản lý mã nguồn với GIT – www.zendvn.com Trang 26 Video 25 – Đăng ký Remote Repositoy với Github ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: đăng ký một remote repository 1. Create Account 2. Create Repository
  • 27. Quản lý mã nguồn với GIT – www.zendvn.com Trang 27 Video 26 – Clone một Remote Repository ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: cách clone (sử dụng, sao chép, tiếp tục phát triển, ...) một Remote repository 1. Sử dụng: git clone <repository>  Clone <repository> từ Remote repo và đặt vào folder trùng tên với <repository>  git clone https://github.com/luutruonghailan/course-java.git 2. Sử dụng: git clone <repository> [<directory>]  Clone <repository> từ Remote repo và đặt vào folder directory  git clone https://github.com/luutruonghailan/course-java.git abc 3. Xem thông tin Remote repository hiện tại  git remote –v Xem thông tin Remote reposity hiện tại  git remote show <name> Xem thông tin <name> hiện tại
  • 28. Quản lý mã nguồn với GIT – www.zendvn.com Trang 28 Video 27 – Add Local Repository lên Remote Repositoy ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: Add một Local Repository lên Remote Repository tại <url> và đặt tên nó là <shortname> 1. Tại thư mục chứa Local Repository thực hiện  Cú pháp git remote add <name> <repository>  git remote add hailanjava https://github.com/luutruonghailan/test01.git 2. Đổi tên <name1> thành <name2>  git remote rename <name1> <name2> 3. Xóa <name> a) git remote remove <name> Video ? – Add Local Repository vào Remote Repositoy
  • 29. Quản lý mã nguồn với GIT – www.zendvn.com Trang 29 Video 28 & Video 29 – Push & Pull ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: các thao tác cơ bản trên Remote Repository 1. Kiểm tra sự thay đổi trên Remote Repository: git fetch 2. Kiểm tra sự thay đổi trên Remote Repository và merge vào phiên làm việc hiện tại: git pull  git pull <name> <branch> có thể được rút gọn chỉ còn git pull 3. Đẩy dữ liệu lên remote repository  git push <name> <branch>
  • 30. Quản lý mã nguồn với GIT – www.zendvn.com Trang 30 Video 30 – Sử dụng Alias ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: sử dụng alias để đơn giản hóa câu lệnh 1. Cú pháp  git config --global.config alias.st status
  • 31. Quản lý mã nguồn với GIT – www.zendvn.com Trang 31 Video 31 – Hệ thống kiến thức Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: hệ thống các kiến thức đã học # Câu lệnh Ý nghĩa 1 git clone <repository> [<directory>] Clone Remote reposity <reposity> và đặt vào folder [<directory>] 2 git remote –v Xem thông tin Remote reposity hiện tại 3 git remote show <name> Xem thông tin <name> hiện tại 4 git remote add <name> <repository> Add một Local Repository lên Remote Repository tại <repository> và đặt tên nó là <name> 5 git remote rename <name1> <name2> Đổi tên <name1> thành <name2> 6 git remote remove <name> Xóa remote <name> 7 git pull <name> <branch> Kiểm tra sự thay đổi trên Remote Repository và merge vào phiên làm việc hiện tại 8 git push <name> <branch> Đẩy dữ liệu lên remote repository 9 git config --global.config alias.st status Tạo alias
  • 32. Quản lý mã nguồn với GIT – www.zendvn.com Trang 32 Video 30 – Tình huống thực hành ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: các thao tác cơ bản trên Remote Repository 1. Chuẩn bị một project có tên mweb và hiển thị ra màn hình giá trị Hello mwed 2. Khởi tạo Local repo cho mweb  Tạo local repository cho project này: git init  Add các file vào vùng staged: git add *  Commit các file này vào local repository: git commit -m "init project" 3. Đưa Local repo mweb lên Github (remote-mweb)  Tạo repob remote-mweb trên Github Thủ công  Add Local Repository lên Remote Repository git remote add origin https://github.com/luutruonghailan/remote-mweb.git  Kiểm tra thông tin của remote git remote -v  Đưa các data từ local lên remote git push origin master 4. Clone Github về với folder mabc  Clone remote git clone https://github.com/luutruonghailan/remote-mweb.git mabc  Di chuyển vào project cd mabc 5. Cập nhật nội dung cho local repo mabc  Edit file index.html, thay Hello, mwed! Thành Hello, mweb!  Add các file vào vùng staged: git add *  Commit các file này vào local repository: git commit -m "Fix index.html"  Kiểm tra trong local repo mweb thì tập tin index.html đã được chỉnh sửa chưa  chưa  update lại từ remote-mweb  vẫn chưa  lý do  do chưa đưa local repo mabc lên trên remote-mweb o git pull origin master 6. Push local repo mabc lên remote-mweb  Kiểm tra có sự thay đổi gì từ remote- hay không git pull origin master  Công bố sự thay đổi git push origin master  Kiểm tra trong local repo mweb thì tập tin index.html đã được chỉnh sửa chưa  chưa  update lại từ remote-mweb  đã có o git pull origin master
  • 33. Quản lý mã nguồn với GIT – www.zendvn.com Trang 33 Video 33 – Tìm hiểu Branch ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: tìm hiểu các kiến thức về branch 1. Tại sao lại sử dụng Branch  Website abc.com là một website tin tức đang vận hành. Khách hàng yêu cầu bổ sung: o Chức năng tin tức dạng video cho abc.com o Chức năng subscribe cho abc.com  Lúc này chúng ta thấy abc.com vừa thực hiện phát triển các chức năng cũ (fix, update) và thực hiện phát triển thêm 2 chức năng mới  1 nhóm task update, 1 nhóm task video, 1 nhóm task subscire  nhiều phiên bản  mà cùng làm trên cùng 1 source code  rất dễ phát sinh vấn đề  branch ra đời  Mối nhóm làm trên một branch khác nhau, các branch hoàn toàn độc lập nhau, sau khi đã hoàn thiện task của mình rồi thì sẽ nhập branch vào branch chính (branch master) 2. Phân loại Branch  Long-Running Branches (Intergration branch) branch tích hợp (chức năng): chức năng mới  Topic Branches: bug, issues Branch chủ đề sẽ tạo ra bằng cách phân branch từ branch tích hợp đã ổn định, khi đã hoàn thành xong công việc sẽ sử dụng đưa vào branch tích hợp.
  • 34. Quản lý mã nguồn với GIT – www.zendvn.com Trang 34 Video 34 – Tạo và chuyển nhánh ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: tìm hiểu thao tác tạo và chuyển nhánh làm việc 1. Xem danh sách nhánh  git branch  nhánh nào có dấu * là nhánh chúng ta đang làm việc 2. Tạo nhánh task-login  git branch task-login  git branch 3. Chuyển nhánh làm việc  git checkout task-login  Trước khi chuyển nhánh phải đảm bảo nhánh làm việc phải “nothing to commit, working tree clean” 4. Demo làm việc trên nhánh  git branch  git checkout task-login  tạo file login.html và commit trên nhánh task-login  Chuyển nhánh master và xem file login.html có tồn tại hay không?  git branch -v xem commit mới nhất ở mỗi nhánh 5. Mẹo  git checkout -b <branchname> tạo branchname và chuyển đến branchname Commit sdksldhls -------- Master ---- task-logout -------- task-login ---- login.html ---- bug-01
  • 35. Quản lý mã nguồn với GIT – www.zendvn.com Trang 35 Video 35 – Merge nhánh ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: tìm hiểu cách merge các nhánh làm việc lại với nhau 1. Di chuyển đến nhánh master  git merge task-login 2. Xem nhánh đã merge hoặc chưa merge vào nhánh hiện tại  git checkout –b fixbug tạo nhánh fixbug và di chuyển đến nhánh này  git branch --merged xem các nhánh đã merge vào nhánh hiện tại  git branch --no-merged xem các nhánh chưa merge vào nhánh hiện tại  Edit file login.html  commit  git checkout master di chuyển về nhánh master  git branch --merged ra kết quả fixbug  git branch --no-merged ra kết quả task-login
  • 36. Quản lý mã nguồn với GIT – www.zendvn.com Trang 36 Video 36 – Đổi tên và Xóa nhánh ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: tìm hiểu cách merge các nhánh làm việc lại với nhau 1. Đổi tên nhánh  git branch -m <oldname> <newname> đổi tên nhánh 2. Xóa nhánh  git branch -d <branchname> xóa nhánh <branchname> và nhánh này đã được merge  git branch -D <branchname> xóa nhánh <branchname> và nhánh này chưa được merge
  • 37. Quản lý mã nguồn với GIT – www.zendvn.com Trang 37 Video 37 38 39 40 41 – Sử dụng tag Nội dung video: tìm hiểu các kiến thức về việc sử dụng tag 1. Tại sao lại sử dụng tag  Đặt tên cho 1 commit đặt biệt nào đó (thời điểm phát hành) để dễ dàng truy xuất đến nó 2. Phân loại Tag  Annotated Tag: đặt tag cho commit, thông tin: tên, đính kèm tên và email của người tag, thời gian đặt tag, miêu tả của tag, ... (sử dụng nhiều)  Lightweight Tag: đặt tag cho commit, thông tin: tên (Local repo) 3. Tạo tag cho commit cuối cùng  git tag <tagname> Tạo mới một Lightweight Tag có tên là tagname  git tag -a <tagname> -m “Mesage” Tạo mới một Annotated Tag có tên là tagname cùng với thông điệp 4. Xem danh sách các tag & Thông tin tag & Xóa tag  git tag Xem tất cả các tag hiện có  git tag –n Xem tất cả các tag hiện có và phần miêu tả của task  git show tagname Xem thông tin tagname (demo với 2 loại loại)  git tag –d tagname Xóa tag có tên tagname 5. Tạo Tag cho một commit bất kỳ  git log –pretty=oneline Xem ID của các commit trước đó, chọn ID của commit cần gắn tag, giả sử ta có X  git tag -a <tagname> <X> -m <message> Thêm annotated tag vào commit có ID là X  TIP: Google git log pretty colors (https://coderwall.com/p/euwpig/a-better-git-log) 6. Nhập tag vào branch  git checkout –b <branchname> <tagname> Tạo một nhánh mới branchname từ tag đã tồn tại <tagname> o git checkout -b finish v03 7. Đưa tag lên Remote Repo  git push <name> <tagname> Thêm <tagname> vào remote <name>  git push <name> --tags Thêm tất cả tag vào remote <name>  git push <name> -d <tagname> Xóa tagname tại Remote repository có tên name
  • 38. Quản lý mã nguồn với GIT – www.zendvn.com Trang 38 Video 42 43 – Remote Branches Nội dung video: tìm hiểu các thao tác trên Remote branch 1. Tìm hiểm Remote Branch  HÌnh 1: Một bản sao Git cung cấp cho bạn nhánh master riêng và nhánh origin/master trỏ tới nhánh master của origin.  HÌnh 2: Làm việc nội bộ và ai đó đẩy lên máy chủ khiến cho lịch sử thay đổi khác biệt nhau.
  • 39. Quản lý mã nguồn với GIT – www.zendvn.com Trang 39  Hình 3: Lệnh git fetch cập nhật các tham chiếu từ xa. 2. Xem danh sách các nhánh ở Local Repo và Remote Repo  git branch -a 3. Đẩy nhánh từ Local Repo lên Remote Repo  git remote push <remote_name> <branch> 4. Xem danh sách các nhánh trên Remote Repo  git remote show <remote_name>  git ls-remote <remote_name> 5. Chuyển đổi làm việc sang nhánh remote  git checkout <remote_name>/<branch_name> 6. Clone một Branch chỉ định từ Remote repo  git clone -b <branch> <remote_url> 7. Xóa một Branch từ Remote repo  git push origin :<branch_name>
  • 40. Quản lý mã nguồn với GIT – www.zendvn.com Trang 40 Video 44 – Sử dụng Git cheat sheet Nội dung video: tìm hiểu cách sử dụng Git cheat sheet  Link: https://github.com/luutruonghailan/cheat-git.git
  • 41. Quản lý mã nguồn với GIT – www.zendvn.com Trang 41 Video 45 46 47 48 – Sử dụng Rebasing Nội dung video: tìm hiểu các thao tác trên Remote branch 1. Phân nhánh & Tích hợp nhánh  Xem lại mục “3.2 Phân Nhánh Trong Git - Cơ Bản Về Phân Nhánh và Tích Hợp” và hiểu rõ các khái nhiệm nhánh, phân nhán, fast forward,  Fast-forward (chuyển tiếp nhanh): lịch sử của branch bugfix sẽ bao gồm tất cả lịch sử của branch master  Non fast-forward:
  • 42. Quản lý mã nguồn với GIT – www.zendvn.com Trang 42 2. Rebase  Trong Git có 2 cách chính để tích hợp nhánh: merge và rebase  Phân nhánh lần đầu tiên  Merge  Rebase
  • 43. Quản lý mã nguồn với GIT – www.zendvn.com Trang 43 3. Tích hợp nhánh sử dụng Rebase  Chuẩn bị một Loca repo mô phỏng hình vẽ trên  Sử dụng merge  Sử dụng rebase 4. Câu hỏi: So sánh 2 phương pháp gộp nhánh: merge vs rebase
  • 44. Quản lý mã nguồn với GIT – www.zendvn.com Trang 44 Video 49 – Hệ thống kiến thức Nội dung video: hệ thống các kiến thức đã học, xem git cheat sheet
  • 45. Quản lý mã nguồn với GIT – www.zendvn.com Trang 45 Video 50 51 52 – Tình huống thực hành ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: thực hành ôn tập lại các kiến thức đã học 1. Xây dựng project được GIT quản lý với lịch sử commit và phân nhánh như hình vẽ (Local Repo)  Tạo tag v.1.0 sau khi commit A  Hoàn thiện yêu cầu phát hiện quên đặt tag cho commit C  Đặt tên nhánh sai checout và tìm cách sửa lại cho đúng 2. Tạo một Remote Repo trên Github có tên là exe-p4 3. Push nhánh cart và master lên Remote Repo 4. Push tất cả các tag lên Remote Repo 5. Nhập nhánh master và fix-bug và tạo ra một commit mới
  • 46. Quản lý mã nguồn với GIT – www.zendvn.com Trang 46 6. Rebase nhánh 7. Push nhánh cart lên remote 8. Nhập nhánh cart và master sau đó đánh dấu tag fisinh và push lên Remote
  • 47. Quản lý mã nguồn với GIT – www.zendvn.com Trang 47 Video 53 54 55 56 – Comparisons ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: các trường hợp so sánh tập tin với nhau 1. Cài đặt và cấu hình phần mềm hỗ trợ:  DiffMerge https://sourcegear.com/diffmerge/webhelp/sec__git__windows__github.html  p4merge https://gist.github.com/dgoguerra/8258007 2. Các trường hợp so sánh  1 tập tin có thể tồn tại ở 4 vùng sau: Working Directory, Staging Area, Local Repo(.git folder) và Remote Repo  Staging vs Working (L-R) git diff git difftool  Local Repo vsWorking (L-R) git diff HEAD git difftool HEAD  Local Repo vs Staging Area (L-R) git diff --staged HEAD git difftool --staged HEAD git diff –cached  Local Repo vs Remote Repo (L-R) git diff master origin/master ... Working Directory Staging Area Local Repo (.git) Remote Repo File Readme.txt init readme local repo working tree init readme local repo staging area init readme local repo init readme  Comit vs Commit git diff comitID commitID git difftool  Tag vs Tag git diff tagname vs tagname Commit 1 Commit 2 Tag 1 Tag 2 File Readme.txt Commit 1 Commit 2 Tag 1 Tag 2
  • 48. Quản lý mã nguồn với GIT – www.zendvn.com Trang 48 Video 57 – Sử dụng Stash ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: các trường hợp so sánh tập tin với nhau 1. Tình huống:  Bạn đang làm việc trên nhánh phụ, có 1 số tính năng nhưng chưa hoàn thiện để commit, đi ra ngoài  đặt code ở đâu để an toàn  sử dụng không giam tạm stash (phạm vi nội bộ - Local Repo)  Stash: lưu lại các thay đổi chưa commit (khi bạn muốn đổi sang 1 branch khác mà lại đang làm dở ở branch hiện tại)  Tài liệu https://git-scm.com/book/en/v2/Git-Tools-Stashing-and-Cleaning 2. Thực hành  git stash lưu toàn bộ nội dung công việc đang làm dở o Sử dụng git stash bao nhiêu lần tuỳ thích, mỗi lần Git sẽ lưu toàn bộ lần thay đổi đó như 1 phần tử trong Stack.  Xem lại danh sách các lần lưu thay đổi o git stash list o git stash list -p o git stash show stash@{1}  Áp dụng thay đổi từ stash: o git stash apply stash@{1} o git stash pop [stash@{1}]  Xóa các thay đổi không cần thiết o git stash drop stash@{1} o git stash clear
  • 49. Quản lý mã nguồn với GIT – www.zendvn.com Trang 49 Video 58 59 60 61 62 63 64 65 66 – Conflict và Xử lý conflict ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: tìm hiểu Conflict và Xử lý conflict 1. Conflict:  Xung đột, đụng độ, mâu thuẫn, đụng code ... có 2 sự thay đổi trong một dòng trên cùng một tập tin và GIT không biết lựa chọn sử dụng dòng lệnh nào  Khi làm việc nhóm: 2 người cùng chỉnh sửa một file, một dòng code, khi đồng bộ sẽ xảy ra conflict  Chuyển branch, thao tác trên cùng một file sẽ xảy ra conflict. 2. Xử lý conflict (merge)  Branch o Master Commit 1: init project Commit 2: master - fix readme.txt Commit 3: video - fix readme.txt Commit 4: Finish merge o Video Commit 1: init project Commit 2: video - fix readme.txt  Remote 3. Xử lý conflict (rebase)  git rebase --continue  git rebase --abort  git rebase --skip 4. Xử lý conflict – Sử dụng GUI  Cấu hình mergetool git config --global merge.tool p4merge git config --global mergetool.p4merge.path "C:/Program Files/Perforce/p4merge.exe" git config --global mergetool.p4merge.cmd "'C:/Program Files/Perforce/p4merge.exe' $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE $PWD/$MERGED" git config --global mergetool.p4merge.cmd "p4merge $BASE $LOCAL $REMOTE $MERGED"  Thực hiện mergetool
  • 50. Quản lý mã nguồn với GIT – www.zendvn.com Trang 50 5. Xử lý conflict – Sử dụng GUI  Cấu hình mergetool git config --global merge.tool p4merge git config --global mergetool.p4merge.path "C:/Program Files/Perforce/p4merge.exe" git config --global mergetool.p4merge.cmd "'C:/Program Files/Perforce/p4merge.exe' $PWD/$BASE $PWD/$LOCAL $PWD/$REMOTE $PWD/$MERGED"  Thực hiện mergetool
  • 51. Quản lý mã nguồn với GIT – www.zendvn.com Trang 51 Video 66 – Vận dụng Long-Running Branches và Topic Branches ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: vận dụng Long-Running Branches và Topic Branches 1. Tham khảo:  https://backlogtool.com/git-guide/vn/stepup/stepup1_5.html  http://nvie.com/posts/a-successful-git-branching-model/ 2. Nội dung:  Hình 1: Làm việc với một chức năng mới “Chức năng Video”  Hình 2: Tạo branch Hotfix để tiến hàng sửa lỗi
  • 52. Quản lý mã nguồn với GIT – www.zendvn.com Trang 52  Hình 3: Tích hợp nhánh Hotfix vào nhánh Master  Hình 4: Nhánh video cũng cần nhánh Hotfix để phát triển tiếp  Hình 5: Rebase nhánh
  • 53. Quản lý mã nguồn với GIT – www.zendvn.com Trang 53 3. Mô hình ứng dụng phân nhánh  Master: quản lý trạng thái có thể release, đánh tag  Develop: phát triển thông thường hướng đến trước khi release  Feature: phát triển chức năng mới hay sửa lỗi  Release: release-xxx  Hotfix: hotfix-xxx chỉnh sửa gấp đối với sản phẩm đã release
  • 54. Quản lý mã nguồn với GIT – www.zendvn.com Trang 54 Video 67 – Hiểu rõ hơn về CLONE vs PULL vs FETCH ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: hiểu rõ hơn về CLONE vs PULL vs FETCH 1. CLONE:  Sao chép toàn bộ Remote Repo (Sử dụng khi bạn cần tạo mới một Git mới trên máy tính với toàn bộ dữ liệu và thiết lập của một remote repository) 2. PULL  Lấy toàn bộ dữ liệu từ Remote Repo và gộp vào branch hiện tại. 3. FETCH  Lấy toàn bộ dữ liệu từ Remote Repo nhưng sẽ cho phép bạn gộp thủ công vào một branch nào đó tại Local Repo
  • 55. Quản lý mã nguồn với GIT – www.zendvn.com Trang 55 Video 68 – Hiểu rõ hơn REBASING vs MERGING ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: hiểu rõ hơn REBASING vs MERGING MERGE  Lịch sử commit không bị thay đổi vẫn còn lại nhưng sẽ trở nên phức tạp hơn.  Không bảo lưu tổng số commit REBASE  Lịch sử sẽ trở nên đơn giản  Lịch sử commit sẽ bị thay đổi (X khác X’, ...)  Lịch sử commit sẽ là lịch sử commit mới nhất  Bảo lưu tổng số commit  Trường hợp đưa code mới nhất của branch tích hợp vào branch chủ đề thì sử dụng rebase.  Trường hợp đưa branch chủ đề vào branch tích hợp, thì trước hết hãy rebase rồi merge.  Trường hợp không nắm rõ lịch sử commit trên một branch, nên sử dụng merge để không làm thay đổi lịch sử commit
  • 56. Quản lý mã nguồn với GIT – www.zendvn.com Trang 56 Video 69 – Hệ thống kiến thức ầnPhần 1 – Git những vấn đề 1 – Git những vấn đề cần biết Nội dung video: hệ thống lại các kiến thức đã học