Computer >> Máy Tính >  >> Lập trình >> Lập trình

Hoàn tác Git Pull:Hướng dẫn

Lệnh git pull cho phép bạn truy xuất các thay đổi được thực hiện đối với một dự án từ một kho lưu trữ từ xa và tải những thay đổi đó xuống máy cục bộ của bạn. Thao tác này có thể được hoàn tác bằng lệnh git reset. Lệnh đặt lại sẽ hoàn nguyên kho lưu trữ về điểm trước đó trong lịch sử của nó.

Hướng dẫn này thảo luận về cách sử dụng lệnh git reset để hoàn tác thao tác kéo git. Nó đi qua một ví dụ để giúp bạn tìm hiểu cách sử dụng lệnh này.

Git Pull:A Breakdown

Lệnh git pull cập nhật kho lưu trữ cục bộ của bạn với bản sao lưu từ xa của nó.

Khi bạn chạy lệnh git pull, Git sẽ kiểm tra xem có bất kỳ thay đổi nào đã được thực hiện đối với kho lưu trữ từ xa hay không bằng cách chạy lệnh git fetch. Sau đó, nếu các thay đổi đã được thực hiện, lệnh tìm nạp sẽ truy xuất siêu dữ liệu cho những thay đổi đó.

Tiếp theo, lệnh git pull chạy git merge. Quá trình này kết hợp bất kỳ thay đổi nào được phát hiện bởi lệnh git fetch vào máy cục bộ của bạn. Điều này có nghĩa là khi bạn chạy git pull, phiên bản cục bộ của kho lưu trữ sẽ được thay đổi để phù hợp với kho lưu trữ từ xa.

Hoàn tác kéo Git

Không có lệnh nào để hoàn tác lệnh git pull một cách rõ ràng. Giải pháp thay thế là sử dụng git reset, thao tác này sẽ hoàn nguyên kho lưu trữ về cam kết trước đó.

Chúng tôi đang thực hiện một dự án có tên là ck-git. Một cộng tác viên vừa đẩy một cam kết cho phiên bản từ xa của dự án được lưu trữ trên GitHub. Chúng tôi muốn truy xuất những thay đổi này.

Để truy xuất những thay đổi này, chúng tôi sẽ sử dụng lệnh git pull:

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

git pull

Lệnh này trả về một thông báo cho chúng tôi biết rằng nó đã kéo siêu dữ liệu và tải xuống các thay đổi từ kho lưu trữ từ xa vào máy cục bộ của chúng tôi:

remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/career-karma-tutorials/ck-git
   77e7fc0..a8336fa  master 	-> origin/master
Updating 77e7fc0..a8336fa
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)

Tệp duy nhất đã thay đổi trên nhánh chính là README.md. Tệp này có một dòng văn bản bổ sung không tồn tại trong cam kết trước đó.

Bây giờ, giả sử chúng tôi muốn hoàn tác thao tác này. Chúng tôi chưa sẵn sàng chấp nhận thay đổi này vào kho lưu trữ cục bộ của chúng tôi. Để hoàn tác thao tác, chúng ta cần chạy git reset.

Trước khi chạy lệnh git reset, bạn nên biết rằng lệnh này sẽ xóa mọi thay đổi chưa cam kết mà bạn đã thực hiện đối với kho lưu trữ. Đảm bảo rằng bạn đã thực hiện bất kỳ thay đổi nào bạn muốn lưu trước khi chạy lệnh đặt lại.

Hãy chạy lệnh git reset để quay lại trạng thái trước đó của kho lưu trữ ở lần cam kết cuối cùng trong Git:

git reset 77e7fc0 --hard

Lệnh này hoàn nguyên kho lưu trữ của chúng tôi về trạng thái của nó trong lần cam kết cuối cùng:

Unstaged changes after reset:
M    README.md

Cờ –hard cho Git biết rằng chúng ta muốn thay đổi thư mục làm việc của mình với nội dung của mã tại một cam kết cụ thể.

Ngoài ra, chúng tôi có thể đã sử dụng câu lệnh HEAD để chỉ định cam kết nào mà chúng tôi muốn hoàn nguyên về:

git reset HEAD~1 --hard

Tuyên bố này di chuyển kho lưu trữ của chúng tôi trở lại một cam kết. Chúng ta có thể thay đổi số 1 để quay lại các cam kết tiếp theo.

Tệp README.md của chúng tôi hiện ở trạng thái như trong lần cam kết cuối cùng. Nếu bạn thực hiện bất kỳ thay đổi nào đối với tệp trước khi chạy lệnh git pull mà không được cam kết, những thay đổi đó sẽ không thể truy cập được. Điều này là do git chỉ lưu các thay đổi đã được cam kết.

Kết luận

Bạn có thể sử dụng lệnh git reset để hoàn tác thao tác kéo git. Lệnh git reset sẽ đặt lại kho lưu trữ của bạn về một điểm cụ thể trong lịch sử của nó. Nếu bạn thực hiện các thay đổi đối với tệp trước khi chạy git pull mà bạn không cam kết, những thay đổi đó sẽ không còn nữa.

Trước khi chạy lệnh git reset, hãy đảm bảo rằng bạn đã thực hiện bất kỳ thay đổi nào. Lệnh git reset sẽ khiến bạn mất bất kỳ thay đổi nào chưa được cam kết.

Bây giờ bạn đã có kiến ​​thức cần thiết để hoàn tác lệnh git pull như một người chuyên nghiệp!