Menu

  • Trang chủ
  • Trending
  • Gợi ý bạn đọc

Chuyên mục

  • Tin tức
  • Hackintosh
  • Lập trình
  • Software
  • Thủ thuật
  • Chia sẻ
  • GenZA Can Cook
  • GenZA Beauty
  • Cảm nhận cuộc sống

Liên hệ hợp tác

admin@genzakit.com
Genzakit
Không có kết quả phù hợp
Xem tất cả kết quả
  • Đăng nhập
Genzakit
Không có kết quả phù hợp
Xem tất cả kết quả

Phân biệt một số câu lệnh cơ bản trong git

393
CHIA SẺ
2.6k
LƯỢT XEM
Chia sẻ lên FacebookChia sẻ lên TwitterLưu lại trên Pinterest

Khi mới tìm hiểu về git, bạn có nhận thấy một số câu lệnh trong git có chức năng kha khá giống nhau và bạn đã bao giờ thắc mắc về sự khác biệt giữa chúng là gì chưa? Từ kiến thức của bản thân cũng như nhặt nhạnh một số tài liệu trên mạng, hôm nay mình sẽ viết một bài viết để giúp các bạn phân biệt một số lệnh cơ bản trong git.

Git pull vs git fetch

Trước khi chúng ta nói về sự khác biệt giữa hai lệnh này, chúng ta hãy nhấn mạnh sự tương đồng của chúng đó là: cả hai đều được sử dụng để tải xuống dữ liệu mới từ một kho lưu trữ từ xa (remote repository). Việc tải xuống các dữ liệu mới về máy của bạn là vô cùng cần thiết, bởi vì khi thực hiện clone một dự án từ remote repository, thì các dữ liệu đó chỉ là một “snapshot” tại thời điểm bạn clone dự án mà thôi. Do vậy, khi có các thay đổi trên remote repository thì chúng cần được tải về trong local repository của bạn. Lúc này chúng ta có thể sử dụng** git fetch** hoặc git pull để thực hiện việc này. Vậy sự khác biệt của hai câu lệnh này là gì ?
Git fetch: Khi chạy câu lệnh git fetch <remote_origin>, Git sẽ tải về dữ liệu của tất cả các branch của repository trên remote server nằm tại địa chỉ quy định bởi <remote_origin> và cập nhật dữ liệu này với dữ liệu của cách branch phía dưới máy local. Tuy nhiên git fetch không cập nhật dữ liệu của working directory .Điều này có nghĩa là nếu như có bất cứ thay đổi (commit) nào trên remote server thì chúng cũng không ảnh hưởng tới các tập tin, thư mục của bạn
Git pull: Khi chạy câu lệnh git pull <remote_origin> <branch_name>, Git sẽ thực hiện việc fetch dữ liệu của remote repository tại nhánh <branch_name> từ server nằm tại địa chỉ quy định bởi <remote_origin> và áp dụng (merge) các thay đổi này vào thư mục và tập tin ở working directory.
Git pull luôn cố gắng tự động trộn các thay đổi (auto merge) vì thế việc này có thể dẫn đến conflict.

Git reset vs git revert

Trong quá trình phát triền phần mềm, thì chúng ta thường không thể tránh khỏi việc sử dụng phải rollback một số commit bị lỗi. Trong trường hợp này, chúng ta sẽ có 2 phương pháp chính để giải quyết, đó là : git reset và git revert
Git reset: Git reset được dùng để quay về một điểm commit nào đó, đồng thời xóa lịch sử của các commit trước nó.
Cùng xét ví dụ dưới đây để hiểu rõ hơn về git reset:

Giả sử, lịch sử commit của bạn có các điểm commit như trên (A, B, C ,D) tương ứng với các commit_id phía trên . A , B là các commi đang hoạt động bình thường, và C, D là các commit gặp vấn đề. Lúc này bạn có thể quay trở về commit B bằng câu lệnh

git reset --hard a0fvf8

Sau khi chạy xong câu lệnh trên , ta có kết quả :

Bạn có thể thấy , con trỏ HEAD đang trỏ đến vị trí của commit B, đồng thời lịch sử commit C và D cũng biến mất, giống như bạn chưa từng thực hiện commit bị lỗi nào vậy. Lịch sử commit cũng trông gọn gàng hơn.
Tuy nhiên, các thay đổi này mới chỉ diễn ra trên local repository, để cập nhật thay đổi này lên remote repository bạn cần phải thực hiện lệnh:

git push -f

Git revert: Đó là với** git reset**, vậy còn git revert thì sao ? git revert không làm mất các commit , thay vào đó sẽ tạo thêm commit mới, có nội dung giống hệt với commit bạn muốn quay trở về.

Vẫn với trường hợp như với git reset, điều chúng ta cần thực hiện là revert về commit D, rồi tiếp tục revert về commit C.

git revert 5lk4er
git revert 76sdeb

Kết quả sau khi lần lượt chạy 2 lệnh trên:

Ở đây, chúng ta có thể thấy rằng đã có thêm 2 commit mới D’ và C’ được tạo ra.
Như vậy, git reset thì xóa lịch sử commit giúp lịch sử trông gọn gàng hơn, còn git revert sẽ tạo ra thêm commit mới đồng thời giữ lại lịch sử commit trước đó.

Git reset, git reset –soft, git reset –hard

Như đã phân biệt giữa git reset và git revert ở trên thì chúng ta đã biết tác dụng git reset. Tuy nhiên, tùy thuộc vào hoàn cảnh cũng như mục đích mà chúng ta lại cần reset với các chế độ khác nhau ( ví dụ như có giữ lại các thay đổi trước đó hay không), do vậy git cung cấp cho ta 3 lựa chọn đi kèm là : –soft, –hard, –mixed

  • Git reset <commit_id>: Di chuyển con trỏ HEAD về vị trí commmit reset và vẫn** giữ nguyên tất cả các thay đổi của file**, nhưng loại bỏ các thay đổi khỏi stage.
  • Git reset –soft <commit_id> : Lệnh này chỉ di chuyển HEAD về vị trí commit. Trạng thái của stage và tất cả sự thay đổi của file sẽ được giữ nguyên.
  • Git reset –hard <commit_id> : Di chuyển con trỏ HEAD về vị trí commmit reset và loại bỏ tất cả sự thay đổi của file.
Từ khoá: git
Next Post

Những thủ thuật jQuery bạn nên biết

Theo dõi
Đăng nhập
Thông báo của
guest
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Có thể bạn quan tâm

Hướng dẫn cài đặt file APKM trên Android

by Anthony Tran
14 Tháng Chín, 2020
0
2.6k

Hiện nay, các ứng dụng cài đặt bên ngoài cửa hàng Play Store thường được đóng gói dưới...

Kiểm tra phần cứng của máy cho việc cài hackintosh

by Anthony Tran
15 Tháng Mười, 2019
180
3.8k

Cần phải biết chi tiết phần cứng của máy trước khi cài hackintosh. Bạn cần thu thập đủ...

Phương pháp gừng mật ong giảm cân

Phương pháp gừng mật ong giảm cân

by Huệ Minh
12 Tháng Hai, 2022
0
2.6k

Gừng và mật ong là hai nguyên liệu được biết đến với nhiều lợi ích cho sức khỏe...

Cách làm soup vịt quay tận dụng phần thịt dư sau bữa ăn

Cách làm soup vịt quay tận dụng phần thịt dư sau bữa ăn

by Huệ Minh
30 Tháng Chín, 2021
0
2.6k

Genzakit đã giới thiệu món salad da vịt giòn giòn cho bữa sáng, tiếp theo chúng ta tham...

  • Giới thiệu
  • Liên hệ
  • Chính sách bảo mật

© 2023 Genzakit

Không có kết quả phù hợp
Xem tất cả kết quả
  • Trending
  • Gợi ý bạn đọc
  • Tin tức
  • Hackintosh
  • Lập trình
  • Software
  • Thủ thuật
  • Chia sẻ
  • GenZA Can Cook
  • GenZA Beauty
  • Vui mỗi ngày
  • Cảm nhận cuộc sống

© 2022 Genzakit - Ngôi nhà giới trẻ

Chào mừng trở lại!

Đăng nhập bằng Facebook
Sign In with Google
OR

Đăng nhập

Quên mật khẩu?

Retrieve your password

Please enter your username or email address to reset your password.

Đăng nhập
wpDiscuz