2012-03-02 21 views
7

Đây là câu hỏi theo dõi tới this.Chuyển đổi nhánh Git không thay đổi tệp thư mục mã

Tôi nhân bản thư mục dự án chính từ xa bằng cách sử dụng lệnh git clone [email protected]:TEST. từ thư mục gốc của Git, tôi đã thực hiện lệnh cd Test để chuyển vào thư mục đó. Sau đó tôi đã tạo chi nhánh bằng cách sử dụng git checkout -b myBranch. Bây giờ trên git bash nó cho thấy rằng tôi đang ở chi nhánh mới. Tôi đã tạo một tệp test.txt trong thư mục Test và sau đó chuyển nhánh của tôi thành master. Tôi vẫn thấy tệp văn bản. Không phải Git không được hiển thị test.txt vì nó không phải là một phần của master. Tôi có cần thực hiện các thay đổi của mình trong chi nhánh không nếu điều này xảy ra.

Tôi nghĩ ban đầu điều này có thể đã xảy ra vì nó không phải là một phần của dự án .net của tôi (mà tôi có trong chủ và chi nhánh). Nhưng điều tương tự cũng xảy ra khi tôi cố gắng thêm một tập tin vào mybranch. Khi tôi chuyển chủ nhân của mình, tôi vẫn thấy biểu tượng đã thay đổi cho các thư mục trong hệ thống fie.

Tôi đang thiếu gì? Cảm ơn tất cả sự giúp đỡ của bạn vì tôi đã dành rất nhiều thời gian để tìm ra Git ngay bây giờ. Mỗi khi tôi nghĩ rằng tôi đã có nó, luôn luôn có một cái gì đó.

+1

Haha +1 cho 'Mỗi lần tôi nghĩ mình đã có nó, luôn có điều gì đó.' Đó là GIT cho bạn! –

Trả lời

14

Không phải nó không thuộc chi nhánh master của bạn, nhưng cũng không phải là một phần của myBranch. Đó là không được theo dõi, bởi vì bạn chưa bao giờ cam kết tệp. Chạy git status bạn sẽ thấy nó được liệt kê là không được theo dõi. Vì nó không bao giờ được tổ chức hay cam kết, Git không (và không thể) quản lý sự tồn tại của nó, nên nó vẫn ở đó bất kể.

Hơn nữa, các tệp được sửa đổi vẫn còn giữa các nhánh nếu có thể. Khác Git sẽ cung cấp cho bạn một lỗi khi chuyển đổi chi nhánh về một cây làm việc bẩn. Điều này, một lần nữa, bởi vì Git không có bản sao nội bộ của những thay đổi đó, chúng chỉ tồn tại trong hệ thống tập tin của bạn, và không tồn tại trong Git cho đến khi chúng được cam kết.

+2

+1 Git không biết về tệp ngay khi bạn 'git add' chúng (nó đặt chúng trong chỉ mục *), nhưng chúng không phải là một phần của * branch * cho đến khi chúng được đặt trong' commit' – Gareth

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