2012-06-10 46 views
13

git animals có loạt bài này của lệnh:Sự khác biệt giữa git add * và git add., Nếu có?

git init 
git add * 
git commit -a -m ‘initial commit and release!’ 

git add * làm so với git add . (mà tôi thường làm) là họ giống nhau không?

+0

* thường có nghĩa là "Kết hợp mọi thứ" và. có nghĩa là "thư mục hiện tại", theo mặc định được thực hiện đệ quy. – TylerH4

+0

@ TylerH4: Nhưng nếu việc mở rộng '*' bao gồm các thư mục chúng sẽ được git đệ quy bởi git trong mọi trường hợp. –

Trả lời

17

git add * sẽ thêm tất cả các đường dẫn đó là kết quả của các vỏ mở rộng * trong khi git add . sẽ cho git để thêm thư mục hiện hành.

git add * sẽ không thêm đường dẫn bắt đầu bằng . khi mở rộng vỏ là * coi đây là đường dẫn "ẩn".

git add * cũng sẽ thất bại nếu bất kỳ đường dẫn mở rộng nào hiện đang bị bỏ qua bởi git vì git coi đó là lỗi nếu bạn chỉ định rõ đường dẫn bị bỏ qua mà không vượt qua cờ -f (buộc) để cho biết bạn thực sự muốn thêm đường dẫn bị bỏ qua .

Nếu bạn nhận được git để mở rộng glob (git add '*'), nó sẽ thêm các tệp "ẩn" và bỏ qua các tệp bị bỏ qua. Nó sẽ hoạt động giống như git add . trong trường hợp này.

+0

Không * shell * ở đây có nghĩa là ứng dụng dòng lệnh hoặc hệ điều hành? –

2

Theo mặc định, hãy chuyển thư mục đến git add sẽ đệ quy thêm thư mục con và tệp của nó một cách đệ quy.

Ký tự đại diện * sẽ được vỏ của bạn mở rộng dưới dạng tên tệp bên dưới thư mục hiện tại.

Và bạn biết đấy, trong Unix . chỉ đề cập đến thư mục hiện tại, vì vậy hai lệnh này tương đương nhau. Mặc dù * được xử lý bởi vỏ và . được xử lý bởi git, chúng cũng thực hiện tương tự.

+3

Vì '*' được xử lý bởi trình bao, nó không tính đến '.gitignore', trong khi' .' thì có. – wisbucky

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