1. Git & GitHub là gì?
Git
Git là một hệ thống kiểm soát phiên bản phân tán, cho phép bạn theo dõi lịch sử thay đổi của mã nguồn của mình. Git hoạt động bằng cách lưu trữ các thay đổi của mã nguồn dưới dạng các commit. Mỗi commit chứa một snapshot của mã nguồn tại một thời điểm cụ thể.Git có một số ưu điểm so với các hệ thống kiểm soát phiên bản khác, bao gồm:
- Tính phân tán: Git cho phép bạn làm việc với mã nguồn của mình từ bất kỳ máy tính nào có kết nối internet.
- Độ tin cậy: Git sử dụng một hệ thống tính toán hash để xác minh tính toàn vẹn của mã nguồn.
- Khả năng mở rộng: Git có thể được sử dụng để quản lý các dự án có quy mô lớn.
GitHub
GitHub là một dịch vụ cung cấp kho lưu trữ mã nguồn Git. GitHub cung cấp cả phiên bản miễn phí và trả phí.GitHub là một công cụ phổ biến để cộng tác phát triển phần mềm. GitHub cho phép các lập trình viên làm việc cùng nhau trên cùng một dự án từ xa. GitHub cũng cung cấp một số tính năng giúp cộng tác trở nên dễ dàng hơn, chẳng hạn như:
- Hệ thống theo dõi vấn đề: GitHub cho phép bạn tạo các vấn đề để theo dõi các vấn đề trong dự án của mình.
- Hệ thống pull request: Pull request cho phép bạn đề xuất các thay đổi cho mã nguồn của dự án.
- Hệ thống theo dõi hoạt động: GitHub cho phép bạn theo dõi hoạt động của các thành viên trong nhóm.
Tại sao phải sử dụng Git và GitHub?
Git và Github là 2 công cụ giúp các cá nhân có thể làm việc cùng nhau trên một dự án mượt mà và trơn tru hơn. Thêm vào đó nó còn giúp những lập trình viên có thể dễ dàng quản lý dự án của mình
2. Các khái niệm cơ bản trước khi bắt đầu
Cách lưu trữ dữ liệu được Linus Tovalds hiểu khác với thông thường. Ông cho rằng dữ liệu nên được lưu trữ theo dạng snapshot nên từ đó ông tạo ra Git-thứ mô tả chính xác cách ông định nghĩa về các lưu trữ dữ liệu hiệu quả. Từ đó kéo theo những khái niệm mới sau:
Branch: Là hệ thống nhánh làm việc có dữ liệu tách biệt với nhánh chính. Dành cho doanh nghiệp tách rời thành nhiều module cho dễ quản lý
Commit: Là nơi lưu trữ các snapshot của dự án tại một thời điểm cụ thể. Mỗi commit được xem như một "bức ảnh" của dự án tại thời điểm đó. Tích hợp nhiều commit sẽ tạo thành một loạt các snapshot, tạo nên "Stream of snapshots."
Working Copy: Là nơi lưu và cho phép bạn thực hiện dự án của mình. Rõ ràng hơn thì nó là các dự án code bạn trực tiếp làm việc trên máy tính của mình
Stagging Area: Là nơi tất cả hoặc một phần của dự án được đưa vào trước khi quyết định thực hiện commit. Điều này giúp bạn kiểm soát được phần nào được đưa vào Commit
Local Repository:(thư mục .git) Là nơi lưu dữ liệu dưới dạng các snapshot trên máy tính của bạn
Remote Repository: Là nơi lưu dự án của bạn trên Cloud như github, gitlab,... nhằm mục đích lưu trữ cũng thực hiện chức năng cộng tác với những người làm chung trong dự án
Hiểu được những khái niệm từ đó ta sẽ có được Workflow cơ bản như sau:
1: Bạn chỉnh sửa file trên Working Copy
2: Bạn lựa chọn file nào sẽ được Commit và thêm nó (add) vào Staging Area
3: Thực hiện Commit những file từ Staging Area để lưu dữ liệu dưới dạng snapshots vào Local Repository (.git)
4: Đẩy (push) những Commit đó lên Remote Repository
3. Cấu hình Git cho lần đầu tải
Với những người lần đầu tải Git thì lên trang web này để tải
Sau đó vào CLI của git nhập các lệnh sau:
- $ git config --global user.name "<username trên github>"
- $ git config --global user.email <địa chỉ email đăng ký github>
- $ git config --list: kiểm tra xem đã cấu hình thành công chưa
4. Thực hiện các lệnh
git init :tạo thư mục (Local Repository) .git trên máy tính nhằm lưu trữ commit
git add <tên file muốn commit> hoặc git add . :Thêm 1 file hoặc thêm tất cả vào Staging Area
git add <tên file muốn commit> hoặc git add . :Thêm 1 file hoặc thêm tất cả vào Staging Area
git commit -m "nội dung commit":Commit những tệp ở trong Staging Area
git remote add origin <link repository trên Remote> //Nói với git là Origin đại diện cho link đó
git push -u origin <tên nhánh trùng với nhánh Local> //đẩy code lên Remote
git clone <link Repository>: tạo một bản copy vào trong máy
git status: kiểm tra trạng thái code
git log: kiểm tra commit nào được thêm sửa xóa,....
git branch: Xem tất cả các nhánh. Nhánh có dấu * là nhánh đang làm việc
git checkout <tên nhánh>: chuyển sang làm việc trên nhánh mới
git checkout -b <tên nhánh>: tạo nhánh mới và chuyển sang làm việc trên nhánh mới
git push -u origin <tên nhánh giống với nhánh local >: tạo nhánh mới trên Remote và đẩy code lên đồng thời -u sẽ tạo mối quan hệ upstream. mỗi lần muốn push lên không cần phải "git push origin <tên nhánh>" mà chỉ cần git push là xong
git merge <tên nhánh>: câu lệnh này sẽ gộp từ <tên nhánh> vào nhánh đang đứng
Nhưng thông thường merge sẽ không được thực hiện trực tiếp trên Local. Trong những dự án lớn người quản lý sẽ xem xét việc thay đổi trên Remote bằng cách so sánh giữa các branchs với nhau sau đó sẽ Merge trên Remote. Những người làm việc trên Local chỉ cần Pull code về là được
5. Xử lý conflict
Conflict là hiện tượng dữ liệu khác nhau trên cùng 1 dòng giữa Local và Remote. Việc này xảy ra có thể do: không pull về trước khi code hoặc sửa đổi nội dung cũ. Điều này dẫn tới không thể đẩy (push) code lên Remote được mà phải sửa conflict trước, sau đó commit và push lại
Ví dụ về conflict như sau:
Trên Remote có file index.html có nội dung:
<h1>Im Vu. This is my blog</h1>
Trên Local cũng file đó, dòng đó có nội dung:
<h1>Im Vu. This is my shit</h1>
khi thực hiện push lên sẽ xuất hiện lỗi nên ta sửa như sau:
git pull
Ở chỗ xảy ra conflict có nội dung như sau:
<<<<<<<HEAD
<h1>Im Vu. This is my shit</h1>
=======
<h1>Im Vu. This is my blog</h1>
>>>>>>>0234h293485b234bjdf834b
Thì chỉ cần xóa đi 1 trong 2 là được và xóa cả những dấu nhắc. Lấy ví dụ như sau:
<h1>Im Vu. This is my shit</h1>
Hoặc
<h1>Im Vu. This is my blog</h1>
Sau khi sửa xong chỉ cần commit và push lại là okela

Comments
Post a Comment