2016-02-24 16 views
5

Trong trường hợp nào có thể lệnh git pull origin master dẫn đến trạng thái sao chép hoạt động khác với git checkout master ->git pull ->git checkout feat-a ->git merge master?Điều gì có thể khiến `git pull` không nhìn thấy những thay đổi từ xa?

Câu chuyện dài.

Tôi có một chi nhánh tính năng, cho phép gọi nó là feat-a. Tôi là nhà phát triển duy nhất làm việc trên chi nhánh này. Chi nhánh được tạo từ chi nhánh master. Cả hai nhánh đều có nguồn gốc từ xa, origin/feat-aorigin/master. Không có gì đặc biệt, sắp xếp kho git điển hình của bạn.

Hôm nay tôi muốn cập nhật chi nhánh tính năng của mình từ xa master. Từ giao tiếp trước đó với các nhà phát triển khác, tôi biết sẽ có những thay đổi xung đột khi tôi hợp nhất từ ​​xa master vào nhánh tính năng của mình.

Tôi đang sử dụng SourceTree. Vì vậy, với chi nhánh feat-a đã được kiểm tra, tôi đã mở menu ngữ cảnh trên nhánh gốc/chủ và đã chọn Pull origin/master into current branch. Tôi đã rất sốc khi thấy Git báo cáo rằng chi nhánh của tôi đã được cập nhật. Tôi biết nó không đúng, phải có những thay đổi trên chi nhánh từ xa master. Tôi lặp lại lệnh một vài lần. Luôn nhận được cùng một thông báo cập nhật.

Để chắc chắn 100%, tôi đã làm điều đó "con đường dài". Tôi đã kiểm tra chi nhánh master, nhấp vào nút Pull. Chi nhánh đã được cập nhật với các cam kết mới nhất. Sau đó, tôi đã kiểm tra chi nhánh feat-a và sau đó kéo menu ngữ cảnh trên nhánh chính và chọn Merge master into current branch. Thì đấy! Đây là cuộc xung đột hợp nhất mà tôi mong đợi!

Điều này khiến tôi bối rối. Tôi đã giả định rằng thực hiện pull từ origin/master vào nhánh hiện tại của tôi giống như kiểm tra master, kéo, kiểm tra chi nhánh khác và sau đó hợp nhất master vào nhánh hiện tại (ngoại trừ việc kéo từ xa master vào nhánh khác không cập nhật địa phương master, nhưng điều đó không ảnh hưởng đến vấn đề này).

Về cơ bản, vì lý do nào đó, pull lệnh từ origin/master thành feat-a đang cố gắng thuyết phục tôi rằng không có thay đổi nào trên origin/master và chỉ có cách chuyển đổi nhánh và hợp nhất thủ công.

Tôi không chắc liệu SourceTree có đang làm điều gì đó đặc biệt có thể ảnh hưởng đến vấn đề này hay không.

+0

Tôi cũng gặp vấn đề này ngày hôm qua trong khi kéo mã từ nhánh master của Github vào nhánh 'heroku' trong máy cục bộ nhưng nó cho biết nhánh của bạn đã được cập nhật và sau đó làm theo các bước bạn đã đề cập ở trên. Tôi nghĩ rằng nó phải là một lỗi. – sahil

+0

Xác minh tính năng theo dõi của bạn là những gì bạn nghĩ. 'git branch -avv' sẽ hiển thị cho bạn những nhánh xa được theo dõi cho mỗi nhánh nội bộ. Bạn có thể thấy rằng bằng cách nào đó 'chủ nhân' đang theo dõi một cái gì đó khác với 'origin/master'. –

Trả lời

1

Bạn nói bạn sử dụng Sourcetree, vì vậy tôi đoán bạn đã không thực sự gõ git pull origin master trên dòng lệnh. Đoán của tôi là nó hoặc là một cái gì đó khó hiểu trong tin nhắn GUI, hoặc một lỗi trong Sourcetree.

Tôi muốn hỏi người phát triển Sourcetree hơn.

+0

Có, đây có thể là trường hợp. Tôi đã gặp phải sự cố hôm nay sau khi tôi cập nhật SourceTree. Tôi đã không có vấn đề như vậy trước đó, do đó, điều này thực sự có thể là một số lỗi mới trong SourceTree. Tôi sẽ cố gắng tái sản xuất nó ngày hôm nay. – JustAMartin

+0

Bạn đã đúng. Tôi - và một số đồng nghiệp của tôi - đã trở thành nạn nhân của lỗi này: https://jira.atlassian.com/browse/SRCTREEWIN-4329 Tôi đoán đó là giá để tin tưởng các công cụ GUI quá nhiều. – JustAMartin

Các vấn đề liên quan