2011-11-16 27 views
238

Tôi có các nhánh xung đột, nhánh2 phân nhánh từ nhánh1.Làm thế nào để thay đổi "của họ" ở giữa xung đột Git?

Hãy nói rằng khi rebasing branch2 trên hiện branch1, trong khi giải quyết xung đột, tôi quyết định đi một số (không phải tất cả) các tập tin "của họ" (ví dụ: branch1) như nó vốn có. Tôi làm như thế nào?

tôi đã cố gắng:

git checkout branch1:foo/bar.java 
fatal: reference is not a tree: TS-modules-tmp:foo/bar.java 

git checkout refs/heads/branch1:foo/bar.java 
fatal: reference is not a tree: refs/heads/TS-modules-tmp:foo/bar.java 
+29

Lưu ý: nếu bạn đang rebasing branch2 lên branch1, replaying xảy ra tương ứng với branch1, vì vậy "theirs" thực sự là branch2 và "ours" là branch1. http://git.661346.n2.nabble.com/Counter-intuitive-results-for-git-show-and-git-checkout-during-rebase-with-conflict-td2370354.html –

+2

Xem thêm https: // github.com/git/git/commit/f30301657b68561392d910f6196380dd3976549e – VonC

Trả lời

317

Bạn muốn sử dụng:

git checkout --ours foo/bar.java 
git add foo/bar.java 

Nếu bạn rebase một chi nhánh feature_x trên master, trong khi rebasing ours là master và theirs đến feature_x.

Như đã chỉ ra trong git-rebase docs:

Lưu ý rằng một rebase hợp nhất hoạt động bằng cách phát lại từng cam kết từ chi nhánh làm việc trên đỉnh của chi nhánh. Bởi vì điều này, khi xảy ra xung đột hợp nhất , bên được báo cáo là của chúng tôi là cho đến nay loạt được rebased, bắt đầu bằng < ngược dòng > và chúng là chi nhánh hoạt động . Nói cách khác, các bên được đổi chỗ.

Để biết thêm chi tiết read this thread.

2

Nếu bạn muốn kéo một tập tin đặc biệt từ chi nhánh khác chỉ làm

git checkout branch1 -- filenamefoo.txt 

này sẽ kéo một phiên bản của tập tin từ một chi nhánh thành cây hiện

+20

Điều này có thể là một ý tưởng tồi ở giữa một lần rebase vì nó sẽ kéo tệp từ phần đầu của nhánh đó không ở điểm đầu bị tách rời mà bạn sẽ gặp phải trạng thái rebase – Clintm

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