2011-08-12 40 views
12

Đồng nghiệp của tôi đã hợp nhất một số thay đổi cho hotfix sản xuất vào chi nhánh chính tại địa phương của anh ta và sau đó đã đẩy một bậc thầy vào kho lưu trữ GitHub của chúng tôi. Bây giờ tôi đang cố gắng cập nhật chi nhánh địa phương của tôi với những thay đổi của mình. Khi làm một "git pull origin" từ git console thì có vẻ như nó sẽ ổn khi hiển thị tất cả các file. Nhưng, gần cuối nó chỉ dừng lại với thông điệp "Aborting".Git Pull Aborting

Tôi không biết phải làm gì tiếp theo. Cứu giúp?

CẬP NHẬT: Vì vậy, vấn đề được giải quyết. Gốc thực sự của vấn đề là đồng nghiệp của tôi đã xóa một số mục từ tệp .gitignore trong nhánh của anh ấy, cho phép một số tệp mới có thể truy cập vào bản kiểm tra của anh ta. Kể từ khi địa phương của tôi .gitignore vẫn còn bỏ qua những tập tin, repo địa phương của tôi đã không nghĩ rằng tôi đã có các tập tin làm việc địa phương để thêm vào chỉ mục. Tôi đã kết thúc xóa tất cả các tệp và sau đó kéo hoạt động và đưa tất cả các tệp đó vào.

Tôi chắc chắn sẽ chỉnh sửa cẩn thận tệp .gitignore và kiểm tra tệp. Tôi hiện có một số đánh giá mới về ảnh hưởng của nó trên các nhà phát triển khác.

+0

Thực ra, có một sự tò mò khác có thể có hoặc không liên quan. Khi đồng nghiệp của tôi đã thúc đẩy, mọi thứ 'có vẻ' giống như họ đã làm việc. Nhưng, khi chúng tôi đến GitHub, không có bất kỳ cam kết mới nào. Giờ đây, chế độ xem chi nhánh địa phương của anh ấy trong GitExtensions có vẻ chính xác và chúng tôi cũng có thể thấy những thay đổi của anh ấy trong GitHub. Vì vậy, khi bạn hợp nhất địa phương sau đó đẩy, bạn không mong đợi để xem một cam kết mới trên GitHub? Và nếu không, làm thế nào tôi có thể nói rằng chủ nhân đã được thay đổi bằng cách nhìn vào GitHub? – sisdog

+0

@Tim, nó cho thấy bạn đã chỉnh sửa bài đăng của tôi. Bạn đã thay đổi một cái gì đó? Tôi không biết mọi người có thể thay đổi bài viết của tôi và ... tại sao bạn thay đổi nó? – sisdog

+0

nhấp vào "5 phút trước" trong "đã chỉnh sửa 5 phút trước" và bạn sẽ thấy sự khác biệt. Anh ta chỉ thực hiện một sự thay đổi dấu chấm câu nhỏ. –

Trả lời

8

Ông có thể đặt cam kết ở đâu đó trong cây cam kết hiện tại, thay vì trên đầu trang của nó.

Hãy thử điều này:

git fetch origin 
git rebase origin/master 

Và nếu điều đó không làm việc, chỉ cần tạo một chi nhánh địa phương của origin, anh đào-chọn địa phương cam kết của bạn vào nó, thiết lập lại tổng thể trước khi bất cứ điều gì cam kết ông sáp nhập, và sau đó hợp nhất chi nhánh địa phương của bạn vào tổng thể.

Tôi đoán là cú đẩy của anh ta liên quan đến --force tại một số thời điểm để tránh thông báo not a fast-forward commit. Bạn không muốn làm điều đó, trong tương lai.

+0

Cảm ơn @Stefan nhưng tôi vẫn gặp sự cố. Ít nhất là bằng cách chạy rebase tôi nhận được một chút thông tin. Cuối cùng nó nói: Hủy bỏ - đếm không tách rời HEAD. Điều đó có cung cấp thêm bất kỳ đầu mối nào không? – sisdog

+0

Bạn có bất kỳ tệp cục bộ nào sẽ được thay đổi bằng cách rebase không? Hãy thử kiểm tra một bản sao của nguồn gốc cho một chi nhánh mới, và xem những gì mà nói. 'git checkout -b testbranch origin/master' –

+0

Vâng, tôi đã gặp lỗi tương tự nhưng lần này tôi đã cuộn lên trong cửa sổ và tìm hiểu thêm. Vì vậy, ngay lập tức sau khi chạy lệnh tôi nhận được thông báo này: "lỗi: Các tệp cây làm việc không được theo dõi sau sẽ bị ghi đè bằng cách thanh toán:". Vì vậy, đó là vấn đề thực sự. Nhưng, giải pháp là gì? Tôi nghĩ rằng đồng nghiệp của tôi đã thay đổi tệp .gitignore đã thêm một loạt tệp mới vào kiểm soát phiên bản. Nó cho tôi thấy tất cả những tập tin đó. Vì vậy, tôi nên có lẽ chỉ cần nhận được tập tin .gitignore mới nhất đầu tiên sau đó cam kết tất cả các tập tin mới? – sisdog

5

Gốc của sự cố là đồng nghiệp của tôi đã xóa một số mục nhập khỏi tệp .gitignore trong nhánh của anh ấy, cho phép một số tệp mới vào séc của anh ấy. Kể từ khi địa phương của tôi .gitignore vẫn còn bỏ qua những tập tin, nó không nghĩ rằng tôi đã có các tập tin làm việc địa phương để thêm vào chỉ mục. Tôi đã xóa tất cả các tập tin và sau đó kéo làm việc và đưa tất cả chúng vào.