2012-05-25 42 views
6

thể trùng lặp:
git add -A, git commit in one command?Git - Tự động theo dõi tất cả các file trong một thư mục

Nếu tôi hiểu đúng, khi các tập tin mới được thêm vào một thư mục khi sử dụng git, tôi phải gọi nhiều lệnh để đảm bảo rằng các tệp được cam kết:

git add <directory name> 
git commit -m 'commit comment' 

Điều này không đúng vì tôi biết tôi (và nhiều người khác) sẽ quên gọi git add <directory name> và sau đó kết thúc bằng một dự án thiếu tất cả các tệp mới đã được tạo. Có vẻ như tôi có thể cam kết toàn bộ thư mục, bao gồm bất kỳ và tất cả các tệp mới, trong một lệnh mà không cần phải chỉ định trong lệnh trước để thêm tất cả các tệp mới vào cam kết. Làm thế nào để tôi làm điều này?

+0

Câu trả lời này cho một câu hỏi tương tự cũng có thể hữu ích: http://stackoverflow.com/a/2759521/247763 – derekerdmann

+0

"Tôi biết tôi sẽ quên gọi 'git add ...'" - không còn nữa. – GoZoner

Trả lời

3

được G2 tại https://github.com/orefalo/g2

G2 sẽ giúp bạn tìm hiểu các dòng lệnh git bằng cách cung cấp dễ dàng để sử dụng các macro.

lệnh là g freeze -m "commit msg".

Nó hoạt động với các bổ sung, xóa và thay đổi. bạn đang đóng băng một nhà nước .. mà lẽ ra phải là con đường đến từ ngày đầu tiên.

+1

Hoặc bạn có thể bỏ qua G2 và chỉ cần bí danh nó: 'git config alias.freeze"! Git add -A && git commit "' – ellotheth

+0

thực sự, bí danh giống như freeze = "! F() {([-z $ @] && git add -A || git add -A "$ @") && git st;}; f ". G2 có nhiều hơn nữa để cung cấp ... –

+0

G2 có nhiều hơn nữa để cung cấp .. xem cách đóng băng được thực hiện https://github.com/orefalo/g2/blob/master/cmds/g2-freeze.sh –

6

git commit -a sẽ cam kết tất cả các file được biết đến với git:

-a, --all 
     Tell the command to automatically stage files that have been modified and 
     deleted, but new files you have not told git about are not affected. 

Nếu bạn muốn chắc chắn rằng bạn đang cam kết tất cả mọi thứ bạn muốn, bạn có thể sử dụng git-status trước một git-commit, để xem các tệp được dàn dựng để cam kết.

git sử dụng quy trình hai giai đoạn để nhận các thay đổi từ working directory vào repository. Phương pháp tiếp cận toàn cảnh như git commit -asẽ hoạt động, nhưng điều này sẽ dẫn đến các cam kết lộn xộn, không nguyên tử. Tôi sẽ bênh vực cho các cam kết nhỏ hơn, tập trung hơn là sử dụng phương pháp tiếp cận toàn diện như bạn đang tìm kiếm.

này âm thanh không đúng vì tôi biết tôi (và nhiều người khác) sẽ quên gọi git add ...

git-status là bạn của bạn :)

Lưu ý: git-add không không thêm tệp vào kho . git commit cam kết mọi thứ từ số staging area các repository, không từ working area. Điều này có vẻ kỳ lạ lúc đầu, nhưng mang đến sự linh hoạt hơn nhiều. Xem another answer để biết thêm thông tin.

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