daigai

Well-Known Member
Git là gì?

Git là một trong những Hệ thống Quản lý Phiên bản Phân tán, vốn được phát triển nhằm quản lý mã nguồn (source code) hữu hiệu của Linux.
Trên Git, có thể lưu trạng thái của file khi có nhu cầu dưới dạng lịch sử cập nhật. Vì thế, có thể đưa file đã chỉnh sửa một lần về trạng thái cũ hay có thể hiển thị sự khác biệt ở nơi chỉnh sửa.
Thêm nữa, khi định ghi đè (overwrite) lên file mới nhất đã chỉnh sửa của người khác bằng file đã chỉnh sửa dựa trên file cũ, thì khi đăng (upload) lên server sẽ hiện ra cảnh cáo. Vì thế, sẽ không xảy ra thất bại về việc đã ghi đè lên nội dung chỉnh sửa của người khác mà không hề hay biết.
Khi quản lý file bằng Git, lịch sử cập nhật sẽ được lưu trong Git. Vì không cần copy trước file dùng để sao lưu (Backup) sẵn có nên rất thuận tiện.

Repository là gì? Repo là gì?
Repository (hay viết tắt là repo) là nơi sẽ ghi lại trạng thái của thư mục và file. Trạng thái được lưu lại đang được chứa như là lịch sử thay đổi của nội dung. Bằng việc đặt thư mục muốn quản lý lịch sử thay đổi dưới sự quản lý của repository, có thể ghi chép lại lịch sử thay đổi của thư mục và file trong thư mục đó.

Remote repository và local repository
Đầu tiên, repository của Git được phân thành 2 loại là remote repository và local repository.
  • Remote repository: Là repository để chia sẻ giữa nhiều người và bố trí trên server chuyên dụng (VD như github, gitlab...).
  • Local repository: Là repository bố trí trên máy của bản thân mình, dành cho một người dùng sử dụng.
Do repository phân thành 2 loại là local và remote nên với những 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 tính của bạn. Khi muốn xuất bản 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 xuất bản. 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.

Commit là gì?

Để ghi lại việc thêm/ thay đổi file hay thư mục vào repository thì mỗi programmer sẽ thực hiện thao tác gọi là Commit.

Khi thực hiện commit, trong repository sẽ tạo ra commit (hay 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.

Commit này đang được chứa tại repository trong trạng thái đã nối tiếp với nhau theo thứ tự thời gian như trong hình dưới đây. Bằng việc lần theo commit này từ trạng thái mới nhất thì có thể hiểu được lịch sử thay đổi trong quá khứ hay nội dung thay đổi đó.

Stored in the repository linked chronologically to each other


Các commit này, được đặt tên bởi 40 ký tự alphabet không trùng nhau đã được tính toán từ thông tin commit. Bằng việc chỉ định tên này, có thể chỉ định commit từ trong repository.

Lưu ý

Những thay đổi mang ý nghĩa khác nhau chẳng hạn như thêm chức năng hay sửa lỗi thì hãy cố gắng chia ra rồi commit. Để sau này khi xem lịch sử và tìm kiếm một nội dung thay đổi định sẵn sẽ dễ dàng hơn.

Index trên Repository là gì?
Trên Git, những thư mục được đặt trong sự quản lý của Git mà mọi người đang thực hiện công việc trong thực tế được gọi là working tree.
Và trên Git, giữa repository và working tree tồn tại một nơi gọi là index. Index là nơi để chuẩn bị cho việc commit lên repository.

Trên Git, khi đã thực hiện commit thì trạng thái sẽ không được ghi trực tiếp trong repository từ working tree, mà sẽ ghi trạng thái đã được thiết lập của index được xây dựng ở giữa đó. Vì thế, để ghi lại trạng thái của file bằng commit thì trước hết cần đăng ký file trong index.


Push lên remote repository
Để chia sẻ lịch sử thay đổi của local repository mà bản thân đang có bằng remote repository, cần upload lịch sử thay đổi trong local repository.

Vì thế, sẽ thực hiện thao tác gọi là Push trên Git. Khi thực hiện Push, lịch sử thay đổi của bản thân sẽ được upload lên remote repository và lịch sử thay đổi của remote repository sẽ có trạng thái giống với local repository.


Pull từ remote repository
Để cập nhật local repository từ remote repository thì thực hiện thao tác gọi là Pull.
Khi thực hiện Pull, sẽ tải lịch sử thay đổi mới nhất từ remote repository về, rồi đưa nội dung đó vào local repository của bản thân.


Branch là gì? Merge là gì?

Trong việc phát triển phần mềm, thì ứng với một phần mềm có nhiều thành viên đồng thời tiến hành thêm chức năng hay là tiến hành chỉnh sửa lỗi cùng một lúc. Và ở tình trạng tồn tại của nhiều phiên bản đã phát hành thì cũng phải lưu giữ từng phiên bản.

Chính vì vậy để hỗ trợ quản lý phiên bản hay thêm nhiều chức năng được tiến hành song song, một chức năng được trang bị thêm được gọi là branch ở Git.

Branch là cách dùng để phân nhánh và ghi lại luồng của lịch sử. Branch đã phân nhánh sẽ không ảnh hưởng đến branch khác nên có thể tiến hành nhiều thay đổi đồng thời trong cùng 1 repository.

Hơn nữa, branch đã phân nhánh có thể chỉnh sửa tổng hợp lại thành 1 branch bằng việc hợp lại (merge) với branch khác.


Branch master là gì?

Khi tiến hành commit lần đầu trong repository thì Git sẽ tạo ra một branch có tên là master. Vì thế những lần commit sau sẽ được thêm vào branch master cho đến khi chuyển đổi branch.

Giải quyết xung đột khi Merge

Trường hợp trong khoảng thời gian từ sau khi pull lần cuối cho đến khi push lần tiếp theo, mà có người khác lỡ push rồi cập nhật remote repository, thì push của chính mình sẽ bị từ chối.

Trong trường hợp này, hãy thực hiện merge rồi tiếp nhận sự thay đổi của phần lịch sử khác, để push lên sẽ không bị từ chối.
Khi thực hiện merge, Git sẽ tích hợp tự động những chỗ thay đổi. Tuy nhiên, cũng có trường hợp không thể tích hợp tự động được, nên cần chỉnh sửa bằng tay.


 
Sửa lần cuối:

thiflaf

New Member

có quả game về git, window/mac/linux đều tải được ạ
em mới thử chơi mấy bài đầu, phải làm việc khác nên chưa chơi hết được :((
 

daigai

Well-Known Member

có quả game về git, window/mac/linux đều tải được ạ
em mới thử chơi mấy bài đầu, phải làm việc khác nên chưa chơi hết được :((
Thank bác, game này hữu ích thiệt :)))
 
Top