2010-08-22 39 views
72

sự khác biệt giữa là gì:git add. vs git commit -a

  • git add .
  • git commit -a

Tôi có nên làm cả hai, hoặc là không cần thiết?

+2

cũng xem (mặc dù không trùng lặp chính xác): http://stackoverflow.com/questions/572549/difference-of-git-add-a-and-git-add –

Trả lời

99

git commit -a có nghĩa là gần như [*] giống như git add -u && git commit.

Không giống như git add . vì điều này sẽ thêm các tệp không được theo dõi không bị bỏ qua, git add -u chỉ các thay đổi của giai đoạn (bao gồm xóa) đối với các tệp đã được theo dõi.

[*] Có sự khác biệt nhỏ nếu bạn không ở thư mục gốc của kho lưu trữ của mình. git add -u các giai đoạn cập nhật các tệp trong thư mục hiện tại và bên dưới, tương đương với git add -u . trong khi các giai đoạn git commit -a và cam kết thay đổi cho tất cả tệp được theo dõi.

+2

hành vi trong [*] sẽ thay đổi trong git 2.0, để nhất quán. – user1284631

+2

Hướng nào? tức là cam kết -a trở thành như add -u, hoặc sẽ thêm -u trở thành như cam kết -a? –

+3

@MilesRout: 'git add -u' sẽ trở thành' git commit -a'; bạn sẽ cần phải nói rõ ràng 'git add -u .' nếu đó là ý của bạn. –

13

git commit -a tự động gọi git add trên tất cả các tệp mà ứng dụng biết. Bạn có thể sử dụng git add để chọn tệp nào cần cam kết. Tham khảo tài liệu để biết thêm thông tin: here

+8

* tất cả các tệp mà nó biết về * rất không rõ ràng với tôi, đặc biệt là vì những người được cho là KHÔNG được thêm –

+0

@Nikana Reklawyks Bạn có định nghĩa "thêm" sai. Thêm không có nghĩa là giống như trong svn. Tất cả những gì nó làm là cập nhật chỉ mục. [Xin lỗi vì phản ứng chậm, tôi không nhớ nhận được thông báo cho nhận xét đó] – alternative

+1

@alternative, Vẫn câu trả lời này có thể làm tốt hơn nếu bạn thêm làm rõ "tất cả các tệp mà nó biết" ..... – Pacerier