2014-06-24 18 views
41

Xin lỗi nếu điều này có vẻ dư thừa vì tôi biết có rất nhiều câu hỏi liên quan đến Hợp nhất và Rebase, nhưng dường như không có bất kỳ câu hỏi nào trong 'Chi nhánh mặc định' tốt.Dự án Cập nhật Android Studio: Hợp nhất vs Rebase so với Chi nhánh Mặc định

Bạn có một trường hợp đồng thời có nhiều người cùng làm việc trên một ứng dụng nào đó (ví dụ: ứng dụng Android trong Android Studio). Lựa chọn tốt nhất để cập nhật dự án/pull nếu ai đó đẩy đến nhánh master và bạn muốn kéo vào master mới sao cho nó không ghi đè lên công việc bạn vẫn đang làm việc và chưa cam kết và đẩy tới master? Android Studio liệt kê 'Hợp nhất' 'Rebase' và 'Branch Default' khi nhấp vào 'Update Project'. Từ những gì nó có vẻ như, tôi sẽ muốn làm 'Rebase' (theo sau là 'Merge'?), Nhưng tôi không hoàn toàn chắc chắn.

+0

Tất cả các thay đổi của bạn không được cam kết, hoặc bạn có một số thay đổi mà bạn đã cam kết trước đây nhưng không đẩy? –

+0

Mọi thay đổi đang được người dùng thực hiện đều không được cam kết; bất kỳ cam kết nào sẽ được đẩy nhanh theo sau. –

Trả lời

30

Cất giữ

Mấu chốt ở đây là bạn có làm việc không bị giam mà bạn muốn lưu. Trước khi cố gắng hợp nhất mọi thứ vào, bạn nên stash your changes để lưu các thay đổi không được cam kết và làm sạch thư mục làm việc của mình.

Chạy git stash để chặn thay đổi của bạn. Sau đó, bạn có thể kéo các thay đổi mà không gặp bất kỳ sự cố nào.

Sau khi bạn đã kéo thành công, bạn có thể thực hiện git stash apply để áp dụng lại các thay đổi bạn đã thực hiện trước khi kéo.

Sáp nhập và rebasing

Cất giữ những thay đổi của bạn chỉ hoạt động nếu bạn chỉ có bị giam thay đổi. Nếu tại một số thời điểm bạn cam kết nhưng không đẩy bạn sẽ cần phải hoặc là rebase hoặc merge.

This StackOverflow post có một số thông tin tuyệt vời về sự khác biệt.

Nói chung, việc hợp nhất dễ dàng hơn, nhưng một số người cho rằng nó "gây ô nhiễm" lịch sử git với các cam kết hợp nhất.

Việc rebasing yêu cầu công việc bổ sung, nhưng vì bạn không có hợp nhất, về cơ bản nó sẽ làm cho hợp nhất không nhìn thấy được.

Một lần nữa, trong trường hợp của bạn, bạn không cần phải hợp nhất hoặc rebase. Đơn giản chỉ cần stash, kéo, sau đó áp dụng stash và tất cả nên được tốt.

+0

Tôi muốn làm điều này càng đơn giản càng tốt (nghĩa là chỉ cần mở Android Studio IDE) Có giải pháp nào không liên quan đến việc sử dụng Git Bash và chỉ sử dụng Android Studio không? –

+0

Nevermind, đọc lại và có vẻ như dựa trên câu trả lời của bạn, tôi muốn chọn 'Hợp nhất' khi kéo nếu tôi muốn sử dụng AS –

+0

Tôi đã viết một dòng mới: // test, cam kết và đẩy nó, xác nhận nó đã được đẩy để làm chủ, đã xóa // dòng kiểm tra cục bộ và thử 'Cập nhật dự án' với mặc định Hợp nhất và Chi nhánh và dòng không trả về. Không chắc chắn lý do tại sao nó không kéo // dòng thử nghiệm từ chính.: X –

5

Tôi không thể tìm thấy câu trả lời cho câu hỏi này (ví dụ: luồng công việc) trong bất kỳ tài liệu nào của Google ... đây là trải nghiệm thực tế của tôi khi sử dụng Android Studio và Git hoàn toàn từ giao diện người dùng.

(Tôi nôn khi nghĩ đến chuyển đổi giữa các dòng lệnh và IDE - nó có nghĩa là IDE thiếu!)

  1. Stash thay đổi của bạn với: Right Click Project -> Git -> Repository -> Stash Changes . Đặt tên cho nó.
  2. cập nhật Kéo rằng đồng nghiệp của bạn đã làm với: Right Click Project -> Git -> Repository -> Kéo
  3. Merge lại thay đổi mã của bạn với: Right Click Project -> Git -> Repository -> UnStash Changes -> Apply Stash
  4. Sau đó, bạn sẽ thấy giao diện người dùng "Tệp được hợp nhất với xung đột". Đây là nơi bạn chọn một tệp và hợp nhất có chọn lọc.

CẢNH BÁO

Sổ tay hợp nhất "Merge sửa đổi" giao diện người dùng là khủng khiếp. Một khi bạn thử nó, bạn sẽ thấy những gì tôi có ý nghĩa. Chúc may mắn cố gắng để có được "Đồng bộ Scrolling" để thực sự làm việc. Tôi chân thành hy vọng UI này được giải quyết trong vòng vài tuần đầu tiên của 2015.

+1

"Giao diện người dùng hợp nhất" Hợp nhất sửa đổi "UI là TERRIBLE." Amen – Amalgovinus

9

enter image description here

Theo IDEA IntelliJ documnetatition:

Cập nhật Loại

  • Merge: chọn tùy chọn này để áp dụng chiến lược hợp nhất. Kết quả giống hệt với kết quả chạy git fetch ; git merge hoặc git pull --no-rebase.
  • Rebase: chọn tùy chọn này để áp dụng chiến lược rebase. Kết quả giống hệt với kết quả chạy git fetch ; git rebase hoặc git pull --rebase.
  • Chi nhánh Mặc định: chọn tùy chọn này để có lệnh mặc định cho nhánh được áp dụng. Lệnh mặc định được chỉ định trong phần branch.<name> của tệp cấu hình .git/config.

sạch cây làm việc trước khi cập nhật

Trong khu vực này, chỉ rõ phương pháp để lưu thay đổi của bạn trong khi làm sạch cây làm việc của bạn trước khi cập nhật. Các thay đổi sẽ được khôi phục sau khi cập nhật hoàn tất. Các tùy chọn có sẵn là:

  • Sử dụng Stash: chọn tùy chọn này để có những thay đổi được lưu trong một stash Git , vì vậy bạn có thể áp dụng các bản vá lỗi với giấu thay đổi thậm chí bên ngoài IntelliJ IDEA, bởi vì chúng được tạo ra bởi Git chinh no. Sử dụng
  • Giá để: chọn tùy chọn này để thay đổi được lưu trên giá. Kệ là một hoạt động nội bộ IntelliJ IDEA, các bản vá lỗi được tạo ra từ các thay đổi được hoãn thường được áp dụng (không được đục) bên trong IntelliJ IDEA. Áp dụng các thay đổi được hoãn bên ngoài IntelliJ IDEA cũng có thể là nhưng yêu cầu các bước bổ sung.
Các vấn đề liên quan