Có ai có thể giải thích điều này bằng cách giữ ngay cả các kho lưu trữ từ xa trong đầu không?Sự khác biệt giữa git pull --rebase, git rebase và git merge
Trả lời
git pull --rebase
là cách để đi khi bạn muốn đưa chi nhánh phát triển của bạn cập nhật - những nhánh này thường không được xuất bản cho những người khác (ngoại trừ có thể xem nó) để ghi lại lịch sử không phải là vấn đề và bạn thực sự không muốn hợp nhất vv trong một chi nhánh như vậy.
git merge
thực hiện hợp nhất; xem manpage để biết chi tiết - comand có rất nhiều tùy chọn sẽ là quá nhiều để giải thích ở đây.
git rebase
thực hiện rebase, tức là ghi lại lịch sử. Nó sẽ đưa các cam kết của bạn đến điểm mà chúng phân tách từ nhánh khác, loại bỏ chúng tạm thời, áp dụng các cam kết còn thiếu từ nhánh kia và sau đó áp dụng lại các cam kết của bạn. git rebase
cũng có một chế độ tương tác, nơi bạn có thể loại bỏ/sửa đổi/kết hợp (bí) một số cam kết nhất định.
Hãy xem http://learn.github.com/p/rebasing.html để biết một số đồ thị đẹp về cách hoạt động của các lần rebases.
Lưu ý: git 2.8 (tháng 3 năm 2016) sẽ cho phép lệnh 'git pull --rebase = interactive'. Xem http://stackoverflow.com/a/29717607/6309. – VonC
git rebase
cho phép bạn tách chi nhánh khỏi điểm mà nó đã phân kỳ và cắm lại trên đầu nhánh khác. git merge
thay vào đó chỉ cần hợp nhất các thay đổi từ một nhánh khác trong nhánh hiện tại, mà không cần cắm lại lịch sử.
Nếu không có xung đột, kết quả là giống hệt nhau giữa hợp nhất và rebase, nhưng lịch sử là khác nhau:
(merge branch on master):
master --A--B--C--E
/
branch --D
(rebase branch onto master):
master --A--B--C--D'
Trong trường hợp đầu tiên hợp nhất tạo ra các chi nhánh branch
được sáp nhập vào master
, dẫn đến việc tạo ra cam kết hợp nhất, E
. Trong trường hợp thứ hai, D
chỉ đơn giản là cắm lại vào master
, tạo anther commit, D'
.
git pull --rebase
sẽ tìm nạp các thay đổi từ điều khiển từ xa và rebase (cắm lại) thay đổi của bạn trên đầu trang. Nó theo nghĩa đen sẽ ghi lại những thay đổi bạn đã thực hiện mà không phải trên điều khiển từ xa và phát lại chúng bắt đầu từ thay đổi cuối cùng mà nó vừa tải xuống.
- 1. Sự khác biệt giữa git pull và git pull --rebase
- 2. git pull VS git tìm nạp git rebase
- 3. git rebase upstream/master vs git pull --rebase ngược dòng master
- 4. `git svn rebase` vs` git rebase trunk`
- 5. Hoàn tác một git pull --rebase
- 6. git merge vs rebase sử dụng git svn
- 7. Sự khác biệt giữa "git reset" so với "git rebase" là gì?
- 8. Sự khác biệt giữa git pull. master vs git merge master
- 9. git stash pop vs git rebase
- 10. git rebase sau khi kéo
- 11. Git rebase subtree
- 12. Xung đột với `git rebase`
- 13. git pull --rebase upstream & git push origin không từ chối chuyển tiếp nhanh?
- 14. Tương đương với Mercurial của "git pull --rebase"
- 15. Git: 'rebase' không phải là lệnh git. Xem 'git --help'
- 16. Sự khác biệt giữa git push và git pull là gì?
- 17. lỗi git trong khi rebase
- 18. git: Sự khác biệt giữa "BRANCHNAME" và "refs/head/BRANCHNAME"
- 19. Sự khác nhau giữa git pull origin master & git pull origin/master
- 20. Không thể tiếp tục git rebase
- 21. Sự khác biệt giữa git-log và git-whatchanged?
- 22. Sự khác biệt giữa git remote add và git clone
- 23. Rebase commit merge
- 24. Yêu cầu git svn rebase trước git svn dcommit?
- 25. Tôi không thể git rebase --interactive nữa
- 26. git merge với --no-ff và --squash
- 27. Git rebase và di chuyển thư mục trong submodule
- 28. "git pull" hoặc "git merge" giữa các nhánh chính và chi nhánh phát triển
- 29. Git rebase cam kết lựa chọn
- 30. Làm thế nào để đẩy/kéo Git rebase
Không có 'git commit --rebase'; ý bạn là 'git pull --rebase'? Hoặc, 'git svn dcommit --no-rebase'? (bỏ lỡ thẻ git-svn lúc đầu) – torek
cảm ơn bạn đã chỉ ra lỗi .. Tôi đã cập nhật câu hỏi! –