2013-03-08 45 views
8

Tôi có điều này trong tác phẩm của tôi sau khi một số rắc rối với VS2012 git-plugin:GIT tập tin bị hỏng (<<<<<<<< HEAD)

using Microsoft.VisualStudio.TestTools.UnitTesting; 
<<<<<<< HEAD 
using NHibernate; 
======= 
>>>>>>> dd2c3d7dfe81074e7c5a73f8e4ca2584481a74f1 

namespace Controll.Hosting.Tests 
{ 
[TestClass] 
public class TestBase 
{ 
<<<<<<< HEAD 
    protected ISessionFactory SessionFactory; 

    [TestInitialize] 
    public void InitializeTestBase() 
    { 
      SessionFactory = NHibernateHelper.GetSessionFactoryForMockedData(); 
======= 
    [ClassInitialize] 
    public void InitializeTest() 
    { 
     Console.WriteLine("Settings NHibernateHelper.IsInTesting -> True"); 
     NHibernateHelper.IsInTesting = true; 
>>>>>>> dd2c3d7dfe81074e7c5a73f8e4ca2584481a74f1 
     } 
    } 
} 

Làm thế nào tôi có thể thiết lập lại tập tin của tôi?

+6

Đó là các xung đột hợp nhất. Các tệp không bị hỏng. – vedarthk

+0

Tôi hiểu, tôi có thể ép git ghi đè mọi thứ bằng những thay đổi mới không? – ErikTJ

+0

Bạn phải quyết định và giữ dữ liệu mình muốn. GIT sẽ chỉ chỉ ra các xung đột. Sửa đổi mã đó theo câu trả lời được đưa ra dưới đây và lưu tệp. – vedarthk

Trả lời

19

Những gì bạn đã không phải là sự cố nhưng xung đột. Điều này xảy ra khi các tệp được sửa đổi bởi hai người khác nhau ở cùng một nơi (cả hai bạn thêm/xóa/sửa đổi mọi thứ bên trong cùng một dòng).

Bạn chỉ cần cập nhật tệp của mình theo cách thủ công, bằng cách quyết định giữ mọi thứ giữa <<<<<<< HEAD======= hoặc giữa =======>>>>>>> hoặc kết hợp cả hai. Khi bạn giải quyết tất cả các xung đột của mình, bạn chỉ cần cam kết thay đổi của mình.

Để loại bỏ những thay đổi cục bộ trên một tập tin, bạn có thể làm

git checkout yourfile 

hoặc, đối với tất cả các file sử dụng

git checkout -- . 

Bạn cũng có thể quyết định, đối với mỗi tập tin, nếu bạn muốn giữ của bạn phiên bản hoặc phiên bản kho lưu trữ với

git checkout --ours yourfile # Your version 
git checkout --theirs yourfile # Repository version 
+0

Ok, cảm ơn. Tôi sẽ chấp nhận điều này, nhưng tôi có thể chọn giữ tất cả các thay đổi cục bộ của mình (im chuyển về một repo thực sự cũ và nhiều tệp bị ảnh hưởng) không? – ErikTJ

+1

@ErikTJ Bạn không nên quyết định làm điều gì đó trên * tất cả * tệp. Điều tốt nhất, ngay cả khi nó là một chút khó chịu, là nhìn vào mỗi tập tin và quyết định theo những gì git chỉ ra là xung đột. – alestanis

+0

@alestanis Đẹp của bệnh nhân của bạn để giải thích ABC này của git .. – adardesign

5

Q của bạn được trả lời tốt nhất bởi alestanis, rồi. Để dễ dàng tra cứu:

Giải thích về các điểm đánh dấu xung đột đó >>>>> ... <<<<< có thể được tìm thấy tại this question.

Có thêm thông tin về hợp nhất tại this Q.

git help merge là khá rõ ràng hữu ích cũng như:

LÀM THẾ NÀO ĐỂ GIẢI QUYẾT XUNG ĐỘT

Sau khi nhìn thấy một cuộc xung đột, bạn có thể làm hai việc:

· Quyết định không sáp nhập. Bạn chỉ cần xóa sạch tệp chỉ mục thành HEAD cam kết đảo ngược 2. và để làm sạch hoạt động thay đổi cây được thực hiện bởi 2. và 3 .; git merge --abort có thể được sử dụng cho việc này.

· Giải quyết xung đột. Git sẽ đánh dấu các xung đột trong cây đang hoạt động. Chỉnh sửa các tệp thành hình dạng và git add chúng vào chỉ mục . Sử dụng git commit để đóng dấu thỏa thuận.

Bạn có thể làm việc thông qua xung đột với một số công cụ:

· Sử dụng bộ công cụ. git mergetool để khởi chạy một công cụ đồ họa mà sẽ làm việc với bạn thông qua quá trình hợp nhất.

· Xem xét các điểm khác biệt.git diff sẽ hiển thị chênh lệch ba chiều, các thay đổi nổi bật từ cả hai phiên bản HEAD và MERGE_HEAD.

· Nhìn vào sự khác biệt từ mỗi nhánh. git log --merge -p <path> sẽ hiển thị các khác biệt trước cho phiên bản HEAD và sau đó là phiên bản MERGE_HEAD .

· Xem tài liệu gốc. git show :1:filename hiển thị tổ tiên chung, git show :2:filename hiển thị phiên bản CHÍNH và git show :3:filename hiển thị phiên bản MERGE_HEAD.

0

Sử dụng SourceTree cho git để quản lý các bản dựng của tôi có cài đặt Kdiff đã giúp tôi giải quyết 99% các vấn đề này thực sự hiệu quả.

Tôi chỉ còn lại với việc cố gắng xóa những tệp này khỏi tệp SOU của tôi trong .Net, thường thay thế tệp SOU bằng phiên bản cũ hơn để giải quyết vấn đề này.

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