Vì vậy, bạn đã cam kết các thay đổi cục bộ của mình cho kho lưu trữ cục bộ của bạn. Sau đó, để nhận các thay đổi từ xa đối với kho lưu trữ cục bộ của bạn mà không cần thực hiện thay đổi đối với các tệp cục bộ, bạn có thể sử dụng git fetch
. Trên thực tế git pull
là một hoạt động hai bước: không phá hủy git fetch
theo sau là a git merge
. Xem Sự khác biệt giữa 'git pull' và 'git fetch' là gì?để thảo luận thêm.
Ví dụ chi tiết:
Giả sử kho lưu trữ của bạn giống như thế này (bạn đã thực hiện các thay đổi test2
:
* ed0bcb2 - (HEAD, master) test2
* 4942854 - (origin/master, origin/HEAD) first
Và origin
kho lưu trữ như thế này (ai đó đã cam kết test1
):
* 5437ca5 - (HEAD, master) test1
* 4942854 - first
Tại thời điểm này, git sẽ phàn nàn và yêu cầu bạn kéo trước nếu bạn cố gắng đẩy test2
vào kho lưu trữ từ xa. Nếu bạn muốn xem test1 là gì mà không cần sửa đổi kho lưu trữ cục bộ của mình, hãy chạy điều này:
$ git fetch
Kho lưu trữ cục bộ kết quả của bạn sẽ như thế này:
* ed0bcb2 - (HEAD, master) test2
| * 5437ca5 - (origin/master, origin/HEAD) test1
|/
* 4942854 - first
Bây giờ bạn có các thay đổi từ xa trong một nhánh khác và bạn giữ nguyên các tệp cục bộ của mình.
Vậy tiếp theo là gì? Bạn có thể thực hiện một git merge
, sẽ có hiệu ứng tương tự như git pull
(khi kết hợp với trước đó git fetch
), hoặc, như tôi muốn, làm một git rebase origin/master
để áp dụng thay đổi của bạn origin/master
, điều này mang lại cho bạn một lịch sử rõ ràng hơn.
git commit
những thay đổi cục bộgit pull
?