Git cam kết - một "tệp chưa được kiểm tra"?


92

Khi tôi thực hiện một git commit -a, tôi thấy như sau:

  # Please enter the commit message for your changes. Lines starting
  # with '#' will be ignored, and an empty message aborts the commit.
  # On branch better_tag_show
  # Changes to be committed:
  #   (use "git reset HEAD <file>..." to unstage)
  #
  # modified:   ../assets/stylesheets/application.css
  # modified:   ../views/pages/home.html.erb
  # modified:   ../views/tags/show.html.erb
  # modified:   ../../db/seeds.rb
  #
  # Untracked files:
  #   (use "git add <file>..." to include in what will be committed)
  #
  # ../assets/stylesheets/
  # ../views/pages/

Những tệp không được theo dõi đó có nghĩa là gì? Tất cả những thay đổi đã thực sự được theo dõi. Tôi không hiểu tại sao git lại cảnh báo tôi về các tệp chưa được theo dõi ở đây.

CHỈNH SỬA :

Ok, tôi thấy rất nhiều câu trả lời nhầm lẫn. Đây là những gì xảy ra sau khi tôi git commit -ađiều này.

# On branch master
nothing to commit (working directory clean)

Như bạn có thể thấy, KHÔNG CÓ GÌ ngoài bốn tệp đó đã áp dụng các thay đổi.

Câu hỏi của tôi nên được diễn đạt lại như sau: Tại sao git lại cảnh báo tôi về các tệp chưa được theo dõi khi tất cả các thay đổi trong cam kết này đã được theo dõi?

Nói cách khác, cảnh báo không được theo dõi trong thông báo git commit là không cần thiết ?


1
(use "git add <file>..." to include in what will be committed)
zengr

1
zengr đó là không cần thiết vì git commit -a sẽ cam kết tất cả các thay đổi đối với các tệp đã được theo dõi.
biến mất

3
cần thiết khi các tập tin chưa bao giờ được chỉnh sửa addcho đến nay. Từ tài liệu cho -a: Cho lệnh tự động sắp xếp các tệp đã được sửa đổi và xóa, nhưng các tệp mới mà bạn chưa cho git biết sẽ không bị ảnh hưởng .
Noufal Ibrahim

Tại sao bạn nói git là 'cảnh báo' bạn? Như tôi thấy, thông báo tệp 'chưa được kiểm tra' là thông tin. Nó là để bạn xem những tệp đó có cần được quản lý hay không và hành động cho phù hợp.
sateesh

@sateesh Chà, bạn muốn gọi nó là gì thì tôi vẫn không nghĩ điều này thực sự hữu ích chút nào. Làm thế nào là thông tin này? Tôi phải làm gì bây giờ? Bạn đã đọc bài đăng của tôi trên phần "CHỈNH SỬA" mà tôi đã viết không có sửa đổi nào trên bất kỳ tệp nào khác ngoại trừ những tệp được liệt kê ở trên? Nếu bạn thấy thông tin này, tương đương với việc tôi nói với bạn rằng bất kỳ thư mục ngẫu nhiên nào trên cây repo của bạn sẽ không được theo dõi khi không có gì phải lo lắng.
biến mất

Câu trả lời:


105

Đối với những người khác gặp vấn đề tương tự, hãy thử chạy

git add . sẽ thêm tất cả các tệp của thư mục hiện tại để theo dõi (bao gồm cả chưa được theo dõi) và sau đó sử dụng

git commit -a để cam kết tất cả các tệp được theo dõi.

Theo đề xuất của @Pacerier, một lớp lót thực hiện điều tương tự là

git add -A


4
git commit -asẽ cam kết tất cả các tệp được theo dõi, không theo dõi các tệp chưa được theo dõi. git add .sẽ theo dõi các tệp chưa được theo dõi trong thư mục hiện tại. git add -asẽ theo dõi tất cả các tệp chưa được theo dõi.
tại đây

@matteo git add -Akhông phải đâu git commit -A. Theo như tôi có thể nói, không có công tắc nào bạn có thể chuyển sang git commitbao gồm các tệp chưa được kiểm soát.
Len

1
-a dường như không còn được dùng cho chỉ A bây giờ. Cảm ơn bạn, tất cả như nhau. :)
tcratius 14/09/18

Để biết thêm thông tin chi tiết về các lệnh đó, bạn có thể kiểm tra: stackoverflow.com/questions/572549/…
Onat Korucu

30

git commit -am "msg"không giống như git add filegit commit -m "msg"

Nếu bạn có một số tệp chưa bao giờ được thêm vào theo dõi git, bạn vẫn cần làm git add file

Lệnh “git commit -a” là một phím tắt cho một quy trình hai bước. Sau khi bạn sửa đổi một tệp mà repo đã biết, bạn vẫn phải nói với repo, “Này! Tôi muốn thêm điều này vào các tệp được dàn dựng và cuối cùng cam kết nó với bạn ”. Điều đó được thực hiện bằng cách đưa ra lệnh "git add". “Git commit -a” đang dàn dựng tệp và cam kết nó trong một bước.

Nguồn: "git commit -a" và "git add"


nhưng, như bạn đã nói git commit -a = git add. + git commit tại sao nó không tự động thêm tệp vào khu vực theo dõi ?? ....
Johnny

1
@Johnny: git commit -akhông bằng git add .+ git commit. Các git addbước bổ sung thêm chỉ các tập tin được liệt kê như là sửa đổi trong bạn git status, không phải tất cả mọi thứ trong thư mục hiện hành.
Soren Bjornstad

Vâng, tôi đã phát hiện ra điều đó ngày hôm nay!
KansaiRobot

9

Bạn nên gõ vào dòng lệnh

git add --all

Điều này sẽ cam kết tất cả các tệp không được theo dõi

Biên tập:

Sau khi dàn dựng các tệp của bạn, chúng đã sẵn sàng để cam kết, vì vậy lệnh tiếp theo của bạn sẽ

git commit -am "Your commit message"

5
Đây là giai đoạn tất cả các tệp, không cam kết chúng. Bạn vẫn phải làm điều đó một cách riêng biệt.
Saeb Amini

8
  1. Trước tiên, bạn cần thêm tất cả các tệp chưa được theo dõi. Sử dụng dòng lệnh này:

    git add *

  2. Sau đó, cam kết bằng cách sử dụng dòng lệnh này:

    git commit -a


7

Nếu bạn đang gặp vấn đề với các tệp chưa được theo dõi, tập lệnh 3 dòng này sẽ giúp bạn.

git rm -r --cached .
git add -A
git commit -am 'fix'

Sau đó chỉ git push


Điều này phù hợp với tôi vì tôi cần bỏ theo dõi các tệp đã theo dõi mà hiện tôi đang bỏ qua.
spyder man

2

Như tên cho thấy 'tệp không được theo dõi' là các tệp không được theo dõi bằng git. Họ không ở trong khu vực tổ chức của bạn và không phải là một phần của bất kỳ cam kết nào trước đó. Nếu bạn muốn chúng được tạo phiên bản (hoặc được quản lý bởi git), bạn có thể làm như vậy bằng cách nói 'git' bằng cách sử dụng 'git add'. Kiểm tra chương này Ghi lại các thay đổi đối với Kho lưu trữ trong sách Progit sử dụng hình ảnh đẹp mắt để cung cấp giải thích tốt về việc ghi lại các thay đổi đối với git repo và cũng giải thích các thuật ngữ 'được theo dõi' và 'không được theo dõi'


0

Đảm bảo rằng bạn đang ở đúng thư mục (thư mục chính của kho lưu trữ) trong git cục bộ của bạn để nó có thể tìm thấy cấu hình thư mục .git trước khi bạn cam kết hoặc thêm tệp.


Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, hãy để lại bình luận bên dưới bài đăng của họ. - Từ xét
sampathsris

-1
git add --all

Điều này sẽ giải quyết tệp không được theo dõi. Thêm tất cả tệp vào bên trong thư mục nhờ @travis delly


Câu trả lời này đã được đề xuất.
Theo Svensson

bạn có thể vui lòng xóa downvote. Sau đó, tôi sẽ xóa câu trả lời của mình
lava
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.