Git thêm tất cả các tập tin sửa đổi, xóa và không bị theo dõi?


256

Có cách nào để thêm tất cả các tệp bất kể bạn làm gì với chúng cho dù nó bị xóa, không bị theo dõi, v.v.? như cho một cam kết. Tôi chỉ không muốn có git addhoặc git rmtất cả các tệp của mình mỗi lần tôi cam kết, đặc biệt là khi tôi đang làm việc trên một sản phẩm lớn.


Câu trả lời:


307

Thử:

git add -A

Cảnh báo: Bắt đầu với git 2.0 (giữa năm 2013), điều này sẽ luôn tạo các tệp trên toàn bộ cây làm việc .
Nếu bạn muốn tạo các tệp theo đường dẫn hiện tại của cây làm việc của mình, bạn cần sử dụng:

git add -A .

Xem thêm: Sự khác biệt của git add -Agit add .


điều này không làm việc cho tôi ... làm thế nào tôi có thể hiển thị đầu vào đầu vào của mình trong cuộc thảo luận này? sao chép-dán đầu ra thiết bị đầu cuối của tôi như là một câu trả lời cho cuộc thảo luận này?
Rakib

đây là vấn đề tôi đang gặp phải - stackoverflow.com/q/7726131/636762 - vui lòng giúp tôi về vấn đề này
Rakib

Điều này cũng không thể hoạt động nếu phiên bản git của bạn đã cũ. Tôi đang chạy tập lệnh trên máy chủ đang chạy git 1.5.2.5. git add -A không hoạt động. Từ kịch bản, không có thông báo lỗi được báo cáo. Chỉ từ dòng lệnh tôi mới thấy rằng -A không phải là một lựa chọn hợp pháp để thêm.
Eponymous

nhưng tại sao tôi phải thêm tập tin mỗi lần tôi muốn thực hiện một cam kết!? Mỗi khi tôi thay đổi một tập tin thành tôi cần thêm nó ..
Frade

3
Đây chỉ là cách Git hoạt động. Bạn phải thêm các thay đổi vào khu vực tổ chức của bạn trước khi bạn cam kết. Ví dụ: bạn chỉ có thể thêm một số tệp vào một cam kết và cung cấp nhận xét cho nó, thay vì tất cả các tệp mọi lúc. Đây là một lời giải thích hữu ích về những gì nó đang làm và tại sao: git yet.com/beginner/2009/01/18/the-staging-area.html
Kilanash

75

Thử

git add -u

Các " u" tùy chọn là viết tắt của bản cập nhật. Điều này sẽ cập nhật repo và thực sự xóa các tập tin từ repo mà bạn đã xóa trong bản sao cục bộ của bạn.

git add -u [filename]

để xóa một tập tin. Sau khi đẩy, tập tin sẽ không còn trong repo.

Ngoài ra,

git add -A .

tương đương với

git add .

git add -u .

Lưu ý thêm '.' trên git add -Agit add -u


Cảnh báo: Bắt đầu với git 2.0 (giữa năm 2013), điều này sẽ luôn tạo các tệp trên toàn bộ cây làm việc .
Nếu bạn muốn tạo các tệp theo đường dẫn hiện tại của cây làm việc của mình, bạn cần sử dụng:

git add -A .

Xem thêm: Sự khác biệt của git add -Agit add .


42

Câu trả lời sau chỉ áp dụng cho phiên bản Git 1.x, nhưng đối với phiên bản Git 2.x.

Bạn muốn git add -A:

git add -A giai đoạn Tất cả;

git add . giai đoạn mới và sửa đổi, không bị xóa;

git add -u giai đoạn sửa đổi và xóa, không có mới.


Lưu ý ở trên chỉ áp dụng cho Git 1.x. Đối với phiên bản git 2.x, git add -Atương đương với git add .. Xem ở đây để thảo luận thêm.
jdhao

27

git add --all hoặc git add -A hoặc git add -A . tất cả các giai đoạn

git add . Các giai đoạn mới và được sửa đổi nhưng không bị xóa

git add -u Các giai đoạn được sửa đổi và xóa nhưng không có mới

git commit -aCó nghĩa là git add -ugit commit -m "message"

Sau khi viết lệnh này, hãy làm theo các bước sau: -

  1. nhấn i
  2. viết tin nhắn của bạn
  3. nhấn esc
  4. nhấn :wq
  5. nhấn enter

git add <list of files> thêm tập tin cụ thể

git add *.txt thêm tất cả các tập tin txt trong thư mục hiện tại

git add docs/*/txt thêm tất cả các tệp txt trong thư mục docs

git add docs/ thêm tất cả các tập tin trong thư mục docs

git add "*.txt"hoặc git add '*.txt'thêm tất cả các tệp trong toàn bộ dự án


12

Tôi không chắc chắn nếu nó sẽ thêm các tập tin bị xóa, nhưng git add .từ gốc sẽ thêm tất cả các tập tin chưa được theo dõi.


xem câu trả lời của tôi về cách thêm các tệp đã bị xóa
Matt Kneiser

5

Đây là lựa chọn thay thế của tôi (trong bất kỳ bash nào):

$ git status -s|awk '{ print $2 }'|xargs git add

Để thiết lập lại

$ git status -s|awk '{ print $2 }'|xargs git reset HEAD

5

Tôi là tác giả của dự án G2, một môi trường thân thiện dành cho người yêu thích dòng lệnh git.
Vui lòng nhận dự án từ github - G2 https://github.com/orefalo/g2

Nó có một loạt các lệnh tiện dụng, một trong số đó chính xác là những gì bạn đang tìm kiếm: freeze

Đông cứng - băng tất cả các tệp trong kho lưu trữ (bổ sung, xóa, sửa đổi) cho khu vực tổ chức, do đó dàn dựng nội dung đó để đưa vào cam kết tiếp theo. Đồng thời chấp nhận một đường dẫn cụ thể làm tham số


5

Đối với phiên bản mới hơn của Git.

Tôi đã thử git add -Avà điều này nhắc nhở,

cảnh báo: Hành vi của 'git add --all (hoặc -A)' không có đối số đường dẫn từ thư mục con của cây sẽ thay đổi trong Git 2.0 và không nên sử dụng nữa. Để thêm nội dung cho toàn bộ cây, hãy chạy:

git add --all: / (hoặc git add -A: /)

Để hạn chế lệnh vào thư mục hiện tại, hãy chạy:

git thêm --all. (hoặc git thêm -A.)

Với phiên bản Git hiện tại, lệnh được giới hạn trong thư mục hiện tại.


Sau đó, tôi đã cố gắng dưới đây mà làm việc .

git add --all :/

3

Từ tài liệu Git bắt đầu từ phiên bản 2.0:

Để thêm nội dung cho toàn bộ cây, hãy chạy:

git add --all :/

hoặc là

git add -A :/

Để hạn chế lệnh vào thư mục hiện tại, hãy chạy:

git add --all .

hoặc là

git add -A .

2

Tôi sử dụng dòng sau để thêm vào để sắp xếp tất cả các tệp đã sửa đổi và mới được tạo, ngoại trừ các tệp được liệt kê trong .gitignore:

git add $(git ls-files -mo --exclude-standard)

(cú pháp $ () dành cho bash shell). Tôi đoán rằng tùy chọn dòng lệnh -mod cũng nên thêm các tệp đã bị xóa ... Hoặc, nếu bạn có tên tệp có khoảng trống được nhúng, thì một lớp lót sau đây sẽ thực hiện thủ thuật:

git ls-files -z --deleted --modified --others --exclude-standard | xargs -0 git add
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.