Git tiếp tục quên thư mục hiện tại


2

Tôi đã có một kho lưu trữ git, gọi nó myscripts/. Trong myscripts/ là thư mục con perl/, python/ruby/. Vì một số lý do, khi tôi chỉnh sửa mã trong một trong các thư mục con, Git quên rằng thư mục con là một phần của kho lưu trữ.

$ cd myscripts/
$ cd perl/
$ vi hello.pl
...
$ git commit -a
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   ./
$ git add .
$ git commit -a

Tôi phải làm điều này nhiều lần và tôi không biết tại sao.


Tôi nghĩ rằng đây là cách git được cho là để làm việc. Không giống như SVN, bạn phải chỉ định những gì cần cam kết trong mỗi thay đổi.
billc.cn

@ billc.cn - không, điều đó không chính xác. Nếu một tập tin / thư mục đã được thêm vào, tất cả các thay đổi sẽ được theo dõi
Sathyajith Bhat

@Sathya, @ billc.con là chính xác, trong hoạt động bình thường, bạn phải chạy git add để xác định những gì cần bao gồm trong cam kết. Bạn có thể tạo một cam kết bao gồm tất cả các thay đổi đối với các tệp được theo dõi bằng lệnh git commit -a, đang được sử dụng trong câu hỏi này.
heavyd

@ematvyd ah bạn nói đúng, tôi đã nhầm
Sathyajith Bhat

1
Là hello.pl một tập tin mới? Nếu tôi không nhầm - chỉ thêm các tệp hiện có được cam kết. Đầu ra của trạng thái git sau khi chỉnh sửa tập tin là gì?
johnny

Câu trả lời:


1

Khi bạn chạy git commit, Git tạo một cam kết mới với nội dung của mục lục . Chỉ mục chứa ĐẦU hiện tại, cộng với mọi thay đổi bạn đã thực hiện bằng cách sử dụng git add hoặc là git rm.

Tuy nhiên, git commit không chấp nhận -a công tắc điện. Các trang nam nói về công tắc này:

Nói lệnh để tự động giai đoạn các tệp đã được sửa đổi và xóa, nhưng các tệp mới mà bạn chưa nói với git về không bị ảnh hưởng.

Điều này có nghĩa là khi bạn chạy git commit -a, Git sẽ chỉ cam kết thay đổi đối với các tệp tồn tại trong CHÍNH hiện tại.

Do đó, bạn phải chạy git add ít nhất một lần trên mỗi tệp hoặc thư mục bạn muốn theo dõi:

$ cd myscripts/
$ cd perl/
$ vi hello.pl
...
$ git add .               # Add each file in this directory to the index
$ git commit              # Commit this version of hello.pl
$ vi hello.pl             # Edit hello.pl some more
... edit some more ...
$ git commit -a           # Commits the changes to hello.pl
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.