*
là một quả cầu bash. Nó sẽ mở rộng ra tất cả các tệp trong thư mục bạn đang truy cập, ngoại trừ tệp dotfile (tệp bắt đầu bằng dấu chấm (.
)).
.
có nghĩa là thư mục hiện tại.
Kết quả có thể khá khác nhau tùy thuộc vào nội dung thư mục của bạn và nếu bạn có .gitignore
tập tin.
Hãy xem xét bạn có các tệp và thư mục sau trong thư mục của mình:
.dotfile-điều-phải-được-cam-kết
.git/
.gitignore
some-file-that-is-in-gitignore
một số tập tin khác
Khi bạn chạy git thêm *
, toàn cầu được mở rộng trước khi lệnh git chạy. Vì vậy, những gì lệnh git nhận được như sau:
git add some-file-that-is-in-gitignore some-other-file
Điều này gây ra bốn vấn đề ở đây.
- Git sẽ phàn nàn rằng
some-file-that-is-in-gitignore
không thể thêm vào và sẽ yêu cầu bạn thêm lực (-f
) nếu bạn thực sự muốn thêm nó.
- cả hai
.dotfile-điều-phải-được-cam-kết
và .gitignore
không được thêm vào như *
không mở rộng thành dotfiles.
- Nếu bạn đã xóa các tệp trong thư mục bạn đang ở,
*
không bao giờ có thể mở rộng sang những tệp đó, vì vậy các tệp đã xóa sẽ không được sắp xếp.
- Nếu bạn đã đổi tên các tệp trong thư mục bạn đang ở,
*
không bao giờ có thể mở rộng sang tên cũ nhưng nó sẽ mở rộng sang tên mới. Vì vậy, những gì git sẽ thấy là bạn đã thêm một tệp mới và vì tên cũ không được phân tầng nên bạn sẽ có cùng một tệp tồn tại hai lần, với tên cũ và tên mới.
Tuy nhiên, chạy git thêm .
yêu cầu git thêm thư mục hiện tại mà bạn đang ở mà không chỉ định tệp nào sẽ thêm. Trong trường hợp này, git sẽ kiểm tra .gitignore
tệp và thêm đệ quy tất cả các tệp không được đề cập trong .gitignore
.
Tóm tắt:
- Bạn nên sử dụng
git thêm .
không phải git thêm *
.
Thậm chí còn tốt hơn:
- Sử dụng
git thêm đầy đủ/tệp/đường dẫn
để bạn không vô tình thêm nội dung chưa sẵn sàng để thêm vào.
Và thậm chí tốt hơn nhiều:
- Sử dụng
git thêm -p
để xem lại các thay đổi của bạn và chọn các bản vá bạn muốn thêm vào.