2016-01-09 21 views
17

Tôi đang cố gắng để rebase công việc của một đồng nghiệp.Git rebase failing

Trước tiên, tôi nhận được rất nhiều xung đột trong đó các đường nối đầu tiên chứa mã mới là < < < < < đầu.

Sau đó, sau một thời gian tôi nhận được lỗi sau:

fatal: update_ref failed for ref 'refs/heads/dev_504': 
cannot lock ref  'refs/heads/dev_504': ref refs/heads/dev_504 is at 
XXXXXXX 
but expected  XXXXXXXX 
Could not move back to refs/heads/dev_504 

Sau đó, nếu tôi cố gắng tiếp tục anyway tôi nhận được lỗi sau:

fatal: cannot resume: .git/rebase-apply/final-commit does not exist. 

Làm thế nào tôi có thể sửa lỗi này để rebase thắng không đưa ra lỗi?

+5

hãy xem http://stackoverflow.com/questions/3685001/git-how-to-fix-corrupted-interactive-rebase. có thể giúp –

+5

Bạn đã thử bắt đầu lại sau khi 'git rebase --abort'? – dahlbyk

+1

lệnh đầu tiên bạn sử dụng là gì? –

Trả lời

-2

Đảm bảo thay đổi và thay đổi của đồng nghiệp của bạn được cam kết.

Nếu bạn muốn thay đổi đồng nghiệp để tồn tại trên của bạn, bạn chỉ có thể làm,

git rebase < your branch > < another_branch >

khác

git rebase < another_branch > < your_branch >

-2

Khi bạn đang cập nhật chi nhánh địa phương của bạn với các chi nhánh khác, bạn phải giải quyết xung đột bằng cách chọn giữa các sửa đổi của bạn và của họ. Sau khi giải quyết xung đột, bạn có thể tiếp tục rebasing của bạn bằng cách viết lệnh này git:

git rebase --continue

Trong trường hợp khi bạn muốn hủy bỏ hành động của bạn của rebasing bạn có thể viết lệnh git này:

`git rebase --abort` 
5
  • Bạn có thể chạy git rebase --abort để hoàn tác hoàn tác quá trình rebase. Git sẽ đưa bạn về trạng thái nhánh của bạn như trước khi git rebase được gọi.

  • Bạn có thể chạy git rebase --skip để bỏ qua hoàn toàn cam kết. Điều đó có nghĩa là không có thay đổi nào được đưa ra bởi cam kết có vấn đề sẽ được bao gồm. Rất hiếm khi bạn chọn tùy chọn này.

  • Bạn có thể khắc phục xung đột.

  • Nếu không, bạn nên tạo lại chi nhánh hoặc bạn có thể xóa thư mục .git/rebase-merge, chứa trạng thái rebase.

2

Dường như nhánh mà bạn muốn rebase cũng được rebased giữa thời gian bạn rẽ nhánh, có thể làm sạch lịch sử hoặc rebasing trên một nhánh khác.Nếu vậy, bạn cần phải:

  • hủy bỏ, lộn xộn hiện nay: git rebase --abort
  • là hiện tại: git fetch
  • nay là một phần thú vị:

    git rebase --onto BUDDY_BRANCH YOUR_BRANCH~ YOUR_BRANCH

ví dụ bạn phân nhánh của địa phương chủ của bạn (thanh toán xuất xứ/master), một mới chi nhánh test_branch (mà bây giờ bạn muốn cập nhật với nguồn gốc hiện tại/master)

git rebase --onto master test_branch~ test_branch 

Điều này không là trong thuật ngữ đơn giản , nó có chi nhánh ban đầu của bạn cha mẹ cam kết, tìm thấy nó là đối tác trong tổng thể hiện tại và rebases dựa trên đó.