2016-06-24 25 views
7

Tôi không hiểu sự khác biệt giữa git pull --rebasegit rebase, mà không có bất kỳ tùy chọn nào khác.git pull --rebase vs git rebase: mối nguy hiểm là gì?

Tôi không hiểu nếu chúng an toàn, thực hành tốt hoặc rất nguy hiểm.

Tôi có thể xóa lịch sử cam kết bằng cách thực hiện một số git pull --rebase bằng địa phương không?

+0

http://stackoverflow.com/questions/18930527/difference-between-git-pull-and-git-pull-rebase – ashishmohite

+0

'git rebase' không chạy' tìm nạp' trước. – choroba

Trả lời

7

Tôi không khuyên bạn nên rebasing mà chỉ cho các chi nhánh tư nhân. Bởi riêng Tôi có nghĩa là các chi nhánh mà bạn khá chắc chắn chỉ có bạn đã kéo.

Việc rebase thay đổi điểm bắt đầu của nhánh thành một số cam kết mới hơn, do đó sáp nhập tất cả các cam kết đến điểm đó. Điều này có thể dẫn đến xung đột hợp nhất với những người có trong kho lưu trữ cơ sở chi nhánh cũ của họ. Tôi sẽ khuyên bạn nên đồng nhất hợp nhất luôn và để lại rebasing chỉ cho các tình huống nhất định (ví dụ, các chi nhánh).

Về câu hỏi của bạn:

  • git rebase rebases chi nhánh mà bạn muốn.
  • git pull --rebase thực hiện tìm nạp + rebase trong các nhánh bạn kéo. Thông thường một kéo sẽ lấy + hợp nhất.
+0

Vì vậy, làm một git kéo --rebase là an toàn? – sab

+0

An toàn theo nghĩa nào? Một rebase thay đổi điểm khởi đầu, sự khác biệt giữa cái này hay cái kia là git pull --rebase thực hiện một rebase lớn. Tôi sẽ không khuyên bạn nên rebasing trong chia sẻ chi nhánh, vì vậy tôi sẽ không khuyên bạn nên git kéo --rebase. Làm một cái git đơn giản để thay thế. – Luis

7

git pull --rebase là viết tắt của git fetch và sau đó một đồng bằng git rebase, vì vậy sự khác biệt duy nhất là việc áp dụng chỉ sau này sẽ không lấy bất kỳ cam kết mới từ bạn từ xa trước khi rebasing mã của bạn trên đầu trang của, vì nó sẽ chỉ đưa vào tài khoản những gì kho lưu trữ của bạn đã biết.