Tôi là một Noob trong Git, và cố gắng tìm hiểu sự khác biệt giữa git pull
vs git rebase
. Ai đó có thể cung cấp một ví dụ khi sử dụng tùy chọn nào vì tôi cảm thấy rằng cả hai đều phục vụ cùng một mục đích.
Tôi là một Noob trong Git, và cố gắng tìm hiểu sự khác biệt giữa git pull
vs git rebase
. Ai đó có thể cung cấp một ví dụ khi sử dụng tùy chọn nào vì tôi cảm thấy rằng cả hai đều phục vụ cùng một mục đích.
Câu trả lời:
git pull
và git rebase
không thể thay thế cho nhau, nhưng chúng được kết nối chặt chẽ với nhau.
git pull
tìm nạp những thay đổi mới nhất của nhánh hiện tại từ điều khiển từ xa và áp dụng những thay đổi đó vào bản sao cục bộ của nhánh. Nói chung điều này được thực hiện bằng cách hợp nhất, tức là các thay đổi cục bộ được hợp nhất vào các thay đổi từ xa. Vì vậy, git pull
tương tự với git fetch & git merge
.
Rebasing là một giải pháp thay thế cho việc hợp nhất. Thay vì tạo một cam kết mới kết hợp hai nhánh, nó di chuyển các cam kết của một trong các nhánh lên trên nhánh kia.
Bạn có thể kéo bằng cách sử dụng rebase thay vì merge ( git pull --rebase
). Các thay đổi cục bộ bạn đã thực hiện sẽ được hoàn nguyên trên các thay đổi từ xa, thay vì được hợp nhất với các thay đổi từ xa.
Atlassian có một số tài liệu tuyệt vời về hợp nhất và phục hồi .
git-pull - Tìm nạp từ và tích hợp với một kho lưu trữ khác hoặc một chi nhánh cục bộ GIT PULL
Về cơ bản, bạn đang kéo chi nhánh từ xa đến cục bộ của mình, ví dụ:
git pull origin master
Sẽ kéo nhánh chính vào kho lưu trữ cục bộ của bạn
git-rebase - Forward-port local cam kết với đầu ngược dòng được cập nhật GIT REBASE
Đây là cách đặt các thay đổi cục bộ của bạn lên trên các thay đổi được thực hiện từ xa bởi những người dùng khác. Ví dụ:
SOME-FEATURE
Bây giờ bạn muốn xem những thay đổi của anh ấy và của bạn trên chi nhánh địa phương của bạn. Vì vậy, sau đó bạn thanh toán master
nhánh:
git checkout master
thì bạn có thể kéo:
git pull origin master
và sau đó bạn đi đến chi nhánh của mình:
git checkout SOME-FEATURE
và bạn có thể thực hiện rebase master
để nhận những thay đổi mới nhất từ nó và đặt cam kết chi nhánh của bạn lên hàng đầu:
git rebase master
Tôi hy vọng bây giờ nó rõ ràng hơn một chút cho bạn.
git fetch
sau đó git rebase origin/master
.
Tóm lại:
-> Git Merge: Nó sẽ đơn giản hợp nhất các thay đổi của bạn và từ xa, và điều đó sẽ tạo ra một bản ghi lịch sử cam kết khác
-> Git Rebase: Nó sẽ đặt các thay đổi của bạn lên trên tất cả các thay đổi từ xa mới và viết lại lịch sử cam kết, vì vậy lịch sử cam kết của bạn sẽ gọn gàng hơn nhiều so với hợp nhất git. Rebase là một hoạt động phá hoại. Điều đó có nghĩa là, nếu bạn không áp dụng nó một cách chính xác, bạn có thể mất công việc đã cam kết và / hoặc phá vỡ tính nhất quán của kho lưu trữ của nhà phát triển khác.