248

Tôi nhận được sau đây khi chạy git status

Your branch is ahead of 'origin/master' by 3 commits.

Tôi đã đọc trên một số bài đăng khác cách khắc phục sự cố này git pull --rebasenhưng chính xác thì rebase là gì, tôi sẽ mất dữ liệu hay đây là cách đơn giản để đồng bộ hóa với chủ?

|
  • 16

    Tôi không nghĩ đây là một bản sao ... Câu hỏi này là hỏi nó có nghĩa gì, trong khi câu hỏi còn lại là hỏi cách loại bỏ các thay đổi.

    – Phạm Ðức Tuấn 20:44:19 05/02/2014
  • 10

    Làm thế nào điều này được đánh dấu là một bản sao của rất nhiều người? Câu hỏi rõ ràng cho thấy người đó không muốn mất đi những thay đổi của họ. Họ đã thực hiện các thay đổi và bị nhầm lẫn bởi tin nhắn. Câu hỏi được gọi là trùng lặp sẽ khiến người đó mất đi những thay đổi của họ.

    – Dương Thái Huy 23:13:43 01/04/2014
  • 3

    Tôi phải nói rằng câu hỏi liên quan đến ở trên không thực sự là một bản sao của câu hỏi này ...

    – Hoàng Việt Khuê 20:53:48 02/03/2015
  • 13

    @DerekGreer: làm thế nào điều này được đánh dấu là một bản sao? Bởi vì hầu hết những người đánh dấu các câu hỏi là trùng lặp không thực sự đọc và hiểu câu hỏi. Nếu có những điểm tương đồng bề ngoài, họ sẽ đi đến kết luận rằng hai người giống hệt nhau và sẽ tùy thuộc vào OP hoặc những người khác sẵn sàng dành thời gian để lặp lại cẩn thận những gì đáng lẽ phải rõ ràng ngay từ đầu, nếu thợ săn dupe đã thực sự quan tâm để chú ý.

    – Trịnh Thùy Dương 19:08:47 16/06/2016
  • 3

    ^ ^ Thực tế là giết chết SO, IMO.

    – Trịnh Minh Khánh 05:34:55 06/01/2017
554

Bạn nhận được thông báo đó vì bạn đã thực hiện các thay đổi trong chủ địa phương và bạn đã không đẩy chúng ra từ xa. Bạn có một số cách để "giải quyết" nó và nó thường phụ thuộc vào cách thức công việc của bạn trông như thế nào:

  • Trong một quy trình tốt, bản sao chính của bạn phải là bản sao tốt trong khi bản sao chính của bạn chỉ là bản sao của bản gốc từ xa. Sử dụng quy trình công việc này, bạn sẽ không bao giờ nhận được thông báo này nữa.
  • Nếu bạn làm việc theo cách khác và các thay đổi cục bộ của bạn sẽ được đẩy thì chỉ cần git push origingiả sử nguồn gốc là từ xa của bạn
  • Nếu thay đổi cục bộ của bạn là xấu thì chỉ cần xóa chúng hoặc đặt lại chủ cục bộ của bạn về trạng thái từ xa git reset --hard origin/master
|
30

Không có gì để sửa. Bạn chỉ cần thực hiện 3 lần xác nhận và chưa chuyển chúng đến chi nhánh từ xa. Có một số tùy chọn, tùy thuộc vào những gì bạn muốn làm:

  • git push: di chuyển các thay đổi của bạn sang điều khiển từ xa (điều này có thể bị từ chối nếu đã có các thay đổi khác trên điều khiển từ xa)
  • không làm gì và tiếp tục mã hóa, đồng bộ hóa vào một ngày khác
  • git pull: nhận các thay đổi (nếu có) từ xa và hợp nhất chúng vào các thay đổi của bạn
  • git pull --rebase: như trên, nhưng cố gắng làm lại các cam kết của bạn trên đầu các thay đổi từ xa

Bạn đang ở trong một tình huống cổ điển (mặc dù thông thường bạn sẽ không cam kết nhiều về chủ trong hầu hết các quy trình công việc). Đây là những gì tôi thường làm: Xem lại những thay đổi của tôi. Có thể làm một git rebase --interactivesố mỹ phẩm trên chúng, bỏ những thứ hút, sắp xếp lại chúng để làm cho chúng hợp lý hơn. Bây giờ di chuyển chúng đến điều khiển từ xa với git push. Nếu điều này bị từ chối vì chi nhánh địa phương của tôi không cập nhật: git pull --rebaseđể làm lại công việc của tôi trên đầu những thay đổi gần đây nhất và git pushmột lần nữa.

|
  • 1

    Tôi đã sử dụng git pull --rebase, nhưng bây giờ nó nói rằng tôi đi trước một cam kết

    – Hoàng Phú Quang 21:12:47 29/04/2013
  • 1

    @MartyMcFly Đã có người khác thực hiện thay đổi của bạn chưa?

    – Tạ Lâm Ðồng 21:13:57 29/04/2013
  • 1

    Vì vậy, tôi đã thực hiện các thay đổi, được đẩy lên thành chủ, và sau đó nhóm trưởng của chúng tôi sáp nhập thành chủ. Vì vậy, những thay đổi ở đó tôi chỉ cần được đồng bộ hóa với chủ hiện tại.

    – Trịnh Như Hoa 21:18:59 29/04/2013
  • 1

    @MartyMcFly Thật khó để thấy những gì đang diễn ra ở đây. Bạn nói bạn đã đẩy? Vậy tại sao bạn vẫn cam kết không thành thạo? Bạn có ý nghĩa your team lead merged to mastergì? Không phải bạn nói bạn đã đẩy lên thành thạo rồi sao? Cam kết bổ sung chứa gì? Hãy thử git diff origin/masterxem chi nhánh địa phương của bạn khác với điều khiển từ xa như thế nào.

    – Huỳnh Tú Quỳnh 21:21:31 29/04/2013
  • 1

    cảm ơn vì sự giúp đỡ, xin lỗi nếu tôi làm một công việc tồi tệ để giải thích tình hình. Nhưng những gì tôi đang tìm kiếm là git reset - nguồn gốc / chủ. Nhưng câu trả lời của bạn rất hữu ích +1.

    – Bùi Mai Nhi 21:25:20 29/04/2013
20

Sử dụng 4 lệnh đơn giản này

Bước 1 :git checkout <branch_name>

Điều này là rõ ràng để đi vào chi nhánh đó.

Bước 2 :git pull -s recursive -X theirs

Thực hiện các thay đổi chi nhánh từ xa và thay thế bằng các thay đổi của chúng nếu xung đột phát sinh. Ở đây nếu bạn làm, git statusbạn sẽ nhận được một cái gì đó như thế này, chi nhánh của bạn đi trước 'origin / master' bằng 3 lần xác nhận.

Bước 3 :git reset --hard origin/<branch_name>

Bước 4 :git fetch

Khó thiết lập lại chi nhánh của bạn.

Thưởng thức.

|
11

Đã giải quyết vấn đề này sau khi tôi hợp nhất một yêu cầu kéo trên Bitbucket.

Phải làm

git fetch

và đó là nó.

|
10

Thông báo này gitcó nghĩa là bạn đã thực hiện ba lần xác nhận trong repo cục bộ của mình và chưa xuất bản chúng lên masterkho lưu trữ. Lệnh để chạy cho đó là git push {local branch name} {remote branch name}.

Lệnh git pull(và git pull --rebase) dành cho tình huống khác khi có cam kết trên repo từ xa mà bạn không có trong repo cục bộ của mình. Các --rebasetùy chọn có nghĩa là gitsẽ di chuyển địa phương cam kết sang một bên, đồng bộ hóa với repo từ xa, và sau đó cố gắng áp dụng ba của bạn cam kết từ trạng thái mới. Nó có thể thất bại nếu có xung đột, nhưng sau đó bạn sẽ được nhắc giải quyết chúng. Bạn cũng có thể hủy bỏ rebasenếu bạn không biết cách giải quyết xung đột bằng cách sử dụng git rebase --abortvà bạn sẽ quay lại trạng thái trước khi chạy git pull --rebase.

|
6

Thông thường nếu tôi phải kiểm tra các cam kết khác với chủ tôi thực hiện:

git rebase -i origin/master

Bằng cách này, tôi có thể thấy các cam kết và quyết định bỏ nó hoặc chọn ...

|
3

Nếu git của bạn nói rằng bạn cam kết trước thì chỉ cần Đầu tiên,

nguồn gốc git đẩy

Để chắc chắn rằng bạn đã đẩy tất cả công việc mới nhất của bạn vào repo

Sau đó,

thiết lập lại git - nguồn gốc / chủ

Để thiết lập lại và phù hợp với repo

|
1

Điều này đã xảy ra với tôi một lần sau khi tôi hợp nhất một yêu cầu kéo trên Bitbucket.

Tôi chỉ phải làm:

git fetch

Vấn đề của tôi đã được giải quyết. Tôi hi vọng cái này giúp được!!!

|

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.