2013-08-13 34 views
9

Tôi đang cố gắng để sắp xếp lại 2 cam kết, và tôi tiếp tục nhận được một lỗi mà không cần bất kỳ loại giải thích, vì vậy tôi không có ý tưởng những gì tôi đang làm sai.Lỗi khi sắp xếp lại các cam kết với git rebase -i

Đây là repo:

$ git lol 
* c0000ca (HEAD, master) added a title 
* 132247f Turned colors to html 
* 0ddaef3 Added last sentences 
* 95f8007 initial commit 

Tôi muốn trao đổi 132247f và 0ddaef3.

$ git rebase -i 95f8007 

này sẽ đưa tôi vào nano:

pick 0ddaef3 Added last sentences 
pick 132247f Turned colors to html 
pick c0000ca added a title 

# Rebase 95f8007..c0000ca onto 95f8007 
# 
# Commands: 
# p, pick = use commit 
# r, reword = use commit, but edit the commit message 
# e, edit = use commit, but stop for amending 
# s, squash = use commit, but meld into previous commit 
# f, fixup = like "squash", but discard this commit's log message 
# x, exec = run command (the rest of the line) using shell 
# 
# These lines can be re-ordered; they are executed from top to bottom. 
# 
# If you remove a line here THAT COMMIT WILL BE LOST. 
# However, if you remove everything, the rebase will be aborted. 
# 
# Note that empty commits are commented out 

tôi trao đổi cả hai dòng, lưu và thoát. Đây là thông báo lỗi tôi nhận được:

error: could not apply 132247f... Turned colors to html 


When you have resolved this problem, run "git rebase --continue". 
If you prefer to skip this patch, run "git rebase --skip" instead. 
To check out the original branch and stop rebasing, run "git rebase --abort". 
Could not apply 132247f... Turned colors to html 

Như một thông báo lỗi, nó không hữu ích .... Bất kỳ ai biết điều gì đang diễn ra?

Các tập tin duy nhất trong repo có vẻ là mâu thuẫn:

$ cat poem.md 
<<<<<<< HEAD 
Roses are red. 
Violets are blue. 

======= 
Roses are #ff0000. 
Violets are #0000ff. 
All of my bases, 
are belong to you. 
>>>>>>> 132247f... Turned colors to html 

Nếu tôi giải quyết xung đột, thêm các tập tin và chạy git rebase --continue, tôi nhận được lỗi khác này:

$ git rebase --continue 
[detached HEAD 9aba127] Turned colors to html 
1 file changed, 4 insertions(+), 2 deletions(-) 
error: could not apply 0ddaef3... Added last sentences 

When you have resolved this problem, run "git rebase --continue". 
If you prefer to skip this patch, run "git rebase --skip" instead. 
To check out the original branch and stop rebasing, run "git rebase --abort". 
Could not apply 0ddaef3... Added last sentences 

này được lái xe cho tôi điên, bất kỳ sự giúp đỡ được đánh giá cao.

+0

Có bạn đã thực hiện chắc chắn để thêm các tập tin trở lại vào chỉ số? Nếu bạn không 'rebase' sẽ vẫn xem xét tệp trong xung đột – JaredPar

+0

Bạn phải git thêm tệp trước git -rebase -i? – cfischer

+0

Không bạn không cần phải thêm các tập tin trước khi rebasing và 'git rebase --continue' nên chăm sóc của tất cả mọi thứ sau khi bạn đã giải quyết cuộc xung đột. – quantka

Trả lời

13

Dường như những gì đang xảy ra là bạn giải quyết thành công các cuộc xung đột nhập đầu tiên khi áp dụng "màu sắc Turned to html" sau đó nhấn một cuộc xung đột nhập khi áp dụng các "câu cuối cùng thêm" cam kết tiếp theo.

Chỉ cần thực hiện git status để xem xung đột hợp nhất là gì, giải quyết chúng sau đó tiếp tục với git rebase --continue.

+0

Có lẽ nó phụ thuộc vào phiên bản git nhưng đôi khi git phát ra một thông điệp đáng sợ nhìn mà làm cho nó âm thanh như bạn không thể tiếp tục mà không hành động lấy đầu tiên, nhưng nó không cho bạn biết bản chất của những gì bạn phải làm. Tôi chỉ có một tình huống mà đó là niềm tin của tôi rằng hai cam kết trên chi nhánh của tôi đã được trên chủ trong các hình thức của một cam kết duy nhất về chủ. Vì vậy, tôi bắt tay vào rebase -i master và di chuyển hai cam kết đến đầu của todo và fixup'd thứ hai. Tôi nhận được thông báo "không thể áp dụng" đáng sợ mà không có đề xuất sửa chữa, không có trạng thái. Tôi đã rebase - tiếp tục anyway và nó làm việc. –

+0

Và bằng cách "làm việc" tôi có nghĩa là rebase của tôi loại bỏ cả hai cam kết. –