2012-03-13 26 views
8

Tôi đang sử dụng git svn để làm việc với một khách hàng có kho lưu trữ svn (công cụ của chúng tôi nằm trong github).git svn rebase luôn xung đột với các cam kết của riêng tôi

Vì vậy, tôi làm theo hướng dẫn và làm một rebase git svn và sau đó git svn dcommit

Đó làm việc lần đầu tiên, nhưng kể từ đó rebasing luôn xung đột trên hầu hết các cam kết. Có vẻ như nó không nhận ra cam kết nào là của tôi, và phàn nàn rằng mọi thứ đang xung đột. Mỗi khi tôi phải git rebase - hãy lướt qua con đường của tôi cho đến khi nó vượt qua và áp dụng thành công các cam kết mới nhất của tôi. Nó không bao giờ tìm ra nơi tôi đã là lần cuối cùng tôi đã làm một rebase (mà tôi tin là những gì được cho là sẽ xảy ra).

Trước hết ... tại sao? Sau đó, tôi có thể nhận được xung quanh bằng cách nào đó?

First, rewinding head to replay your work on top of it... 
Applying: Deleting their old build management stuff as its pretty crappy. Will re-build at some point. 
Using index info to reconstruct a base tree... 
Falling back to patching base and 3-way merge... 
No changes -- Patch already applied. 
Applying: Added some error checking around Android specific calls 
Using index info to reconstruct a base tree... 
<stdin>:16: space before tab in indent. 
      Android.hideKeyboard(); 
<stdin>:31: space before tab in indent. 
        Android.launchNewAccount(); 
warning: 2 lines add whitespace errors. 
Falling back to patching base and 3-way merge... 
CONFLICT (modify/delete): src/LoginForm.js deleted in HEAD and modified in Added some error checking around Android specific calls. Version Added some error checking around Android specific calls of src/LoginForm.js left in tree. 
Auto-merging src/ChildPanel.js 
CONFLICT (content): Merge conflict in src/ChildPanel.js 
Failed to merge in the changes. 
Patch failed at 0002 Added some error checking around Android specific calls 

When you have resolved this problem run "git rebase --continue". 
If you would prefer to skip this patch, instead run "git rebase --skip". 
To check out the original branch and stop rebasing run "git rebase --abort". 

Trả lời

7

Tôi không biết làm thế nào bạn có được chính mình trong tình huống này, nhưng tôi có thể cho bạn biết làm thế nào để có được cho mình.

Trước tiên, tạo chi nhánh mới dựa trên SVN ngược dòng: git checkout -b mynewbranch refs/remotes/oldbranch (sử dụng ID tham chiếu git-svn tại đây).

Sau đó, hãy khám phá: git checkout mynewbranch.

Cuối cùng, anh đào-chọn các cam kết từ chi nhánh mới của bạn mà không được cam kết SVN (cái gì đó như git cherry-pick refs/remotes/oldbranch..oldbranch.

Nguyên nhân rất có thể trong những vấn đề bạn đang thấy là bạn viết lại lịch sử sau khi đẩy một thay đổi đối với SVN, khi bạn sử dụng git-svn để thực hiện một cam kết, nó sẽ đặt git-svn-idvào nhật ký cam kết, thay đổi mã băm sửa đổi. xung đột với những người không phải là địa phương SVN.

+1

Haha. Yêu dòng mở đầu của bạn. Tôi sẽ gửi lời cảm ơn này! –

+1

Tôi giả định bởi git-svn ref ID bạn có nghĩa là tên chi nhánh 'remotes/git-svn'? –

+1

Er ... git co không phải là một mệnh lệnh. git checkout Tôi giả sử? (Chỉ cần chắc chắn rằng tôi không sử dụng git svn tại thời điểm đó) –

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