2011-09-27 40 views
19

Khi bạn sửa đổi một tệp trong thư mục làm việc, git sẽ cho bạn biết sử dụng "git add" vào vùng hiển thị.Khái niệm về git tracking và git staging

Khi bạn thêm một tệp mới vào thư mục làm việc của mình, git sẽ yêu cầu bạn sử dụng "git add" để bắt đầu theo dõi.

Tôi là một chút nhầm lẫn về 2 khái niệm này bởi vì tôi cho rằng theo dõi một tập tin cho những thay đổi khác với dàn nó cho cam

Trả lời

12

Git có một khái niệm gọi là 'chỉ số'. Để tạo một cam kết mới, bạn điền vào chỉ mục với nội dung bạn muốn có trong lần commit tiếp theo. Điều đó có nghĩa là bạn phải cho Git biết rõ ràng những thay đổi nào bạn muốn xuất hiện trong cam kết tiếp theo bằng cách sử dụng git add. (git add -p để thêm duy nhất hunks)

Nó không tạo sự khác biệt cho Git cho dù bạn chỉ cập nhật tệp (»thay đổi giai đoạn«) hoặc nếu bạn thêm toàn bộ nội dung của tệp mới (»bắt đầu theo dõi tệp «) - cả hai lần, tất cả những gì mà chỉ số của Git thấy là việc bổ sung các thay đổi mới

+0

giải thích Terrific. – cheznead

8

Khi bạn thêm một tập tin để bắt đầu theo dõi, nó cũng giai đoạn nội dung của nó.

Nếu bạn muốn thêm một tập tin để theo dõi mà không cần dàn dựng nó, bạn có thể sử dụng

git add -N 
1

Cả hai bước bạn xác định thực chất giống nhau, chúng đơn giản có những giải thích khác nhau do tuyến đường đến của chúng.

git add chỉ cần nói với git rằng tệp được cung cấp là tệp bạn muốn có, ở dạng chính xác hiện tại (nội dung của nó), trong kho lưu trữ kiểm soát nguồn của nó. Tại thời điểm đó, git sẽ chụp nhanh tệp tin (và nó lưu giữ một ghi chú trong chỉ mục của nó) để nó sẵn sàng khi bạn có tất cả các thay đổi đối với các tệp của bạn đã sẵn sàng và được thêm vào (tức là được ghép với nhau trong vùng dàn dựng), cho git commit của bạn (với thông báo thích hợp ;-).

Khi git đã được thông báo về tệp đó (ví dụ: tùy chọn -N của @ avh), nó sẽ thông báo (theo dõi) thay đổi tệp dưới vỏ bọc các lệnh khác nhau (chẳng hạn như git status). Vì vậy, sau này, bạn phải nói rõ ràng git khi bạn không còn muốn tệp được theo dõi (git rm <file>) và bạn có thể tiếp tục chỉnh sửa tệp (cục bộ) sau khi bạn đã add chỉnh sửa phiên bản sẽ có trong cam kết. Hầu như rõ ràng (hoặc có thể không), bạn có thể git add một tệp nhiều lần trước khi bạn cam kết phiên bản cuối cùng.

21

Git về cơ bản có 4 trạng thái chính cho các tập tin trong repo địa phương của bạn:

  • untracked: Các tập tin là mới, Git không biết gì về nó. Nếu bạn git add <file>, nó trở thành:
  • dàn dựng: Bây giờ Git biết các tập tin (theo dõi), mà còn làm cho nó một phần của cam kết hàng loạt tiếp theo (gọi là index). Nếu bạn git commit, nó sẽ trở thành:
  • không thay đổi: Tệp không thay đổi kể từ lần commit cuối cùng. Nếu bạn sửa đổi nó, nó sẽ trở thành:
  • chưa được tổ chức: Đã sửa đổi nhưng không phải là một phần của cam kết tiếp theo.Bạn có thể giai đoạn nó một lần nữa với git add

Như bạn có thể thấy, một ca khúc git add sẽ file untracked, và giai đoạn bất kỳ tập tin.

Ngoài ra: Bạn có thể untrack một file uncommited với git rm --cached filename và unstage một tập tin dàn dựng với git reset HEAD <file>

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