Làm cách nào tôi có thể tạo giai đoạn và cam kết tất cả các tệp, bao gồm các tệp mới được thêm bằng một lệnh duy nhất?
Làm cách nào tôi có thể tạo giai đoạn và cam kết tất cả các tệp, bao gồm các tệp mới được thêm bằng một lệnh duy nhất?
Câu trả lời:
Làm
git add -A && git commit -m "Your Message"
được tính là một "lệnh đơn"?
Chỉnh sửa dựa trên câu trả lời của @ thefinnomenon bên dưới :
Để có nó như một git alias
, sử dụng:
git config --global alias.coa '!git add -A && git commit -m'
và cam kết tất cả các tệp, bao gồm các tệp mới, với một thông báo với:
git coa "A bunch of horrible changes"
Giải thích (từ git add
tài liệu ):
-A, --all, --no-bỏ qua-loại bỏ
Cập nhật chỉ mục không chỉ nơi cây làm việc có tệp phù hợp mà cả nơi chỉ mục đã có mục. Điều này thêm, sửa đổi và loại bỏ các mục chỉ mục để phù hợp với cây làm việc.
Nếu không
<pathspec>
được đưa ra khi tùy chọn -A được sử dụng, tất cả các tệp trong toàn bộ cây làm việc sẽ được cập nhật (các phiên bản cũ của Git được sử dụng để giới hạn cập nhật vào thư mục hiện tại và các thư mục con của nó).
git add -A ; git commit -m "Your Message"
Lệnh này sẽ thêm và cam kết tất cả các tệp đã sửa đổi, nhưng không phải các tệp mới được tạo .
git commit -am "<commit message>"
Từ người đàn ông git-commit:
-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.
Tôi sử dụng chức năng này:
gcaa() { git add --all && git commit -m "$*" }
Trong tập tin cấu hình zsh của tôi, vì vậy tôi chỉ có thể làm:
> gcaa This is the commit message
Để tự động giai đoạn và cam kết tất cả các tập tin.
function gcaa() { git add --all && git commit -m "$*" && git push }
gaa && gc -m "my commit"
nhưng điều này đẹp hơn rất nhiều ... <scurries off để thay đổi bashrc ..>
Một lớp lót cho giai đoạn TẤT CẢ các tệp ( đã sửa đổi , xóa và mới ) và cam kết với nhận xét:
git add --all && git commit -m "comment"
http://git-scm.com/docs/git-add
http://git-scm.com/docs/git-commit
Không chắc tại sao những câu trả lời này lại nhảy xung quanh những gì tôi tin là giải pháp phù hợp nhưng với những gì đáng giá ở đây là những gì tôi sử dụng:
git config --global alias.coa '!git add -A && git commit -m'
git coa "A bunch of horrible changes"
LƯU Ý: coa
là viết tắt của cam kết tất cả và có thể được thay thế bằng bất cứ điều gì trái tim bạn mong muốn
git alias
con đường, phần còn lại là nhàm chán.
Cam kết trong git có thể là một quá trình nhiều bước hoặc một bước tùy thuộc vào tình huống.
Tình huống này là nơi bạn có nhiều tệp được cập nhật và muốn cam kết:
Bạn phải thêm tất cả các tệp sửa đổi trước khi bạn cam kết bất cứ điều gì.
git add -A
hoặc là
git add --all
Sau đó, bạn có thể sử dụng cam kết tất cả các tệp đã thêm
git commit
với điều này, bạn phải thêm thông điệp cho cam kết này.
Nếu bạn chỉ muốn một cách "nhanh và bẩn" để xóa các thay đổi trên nhánh hiện tại, bạn có thể sử dụng bí danh sau:
git config --global alias.temp '!git add -A && git commit -m "Temp"'
Sau khi chạy lệnh đó, bạn chỉ cần gõ git temp
để git tự động cam kết tất cả các thay đổi của bạn đối với nhánh hiện tại dưới dạng một cam kết có tên là "Temp". Sau đó, bạn có thể sử dụng git reset HEAD~
sau này để "không phổ biến" các thay đổi để bạn có thể tiếp tục thực hiện chúng hoặc git commit --amend
để thêm nhiều thay đổi cho cam kết và / hoặc đặt cho nó một tên thích hợp.
Tôi có trong cấu hình của mình hai bí danh:
alias.foo=commit -a -m 'none'
alias.coa=commit -a -m
nếu tôi quá lười biếng, tôi chỉ cam kết thay đổi với
git foo
và chỉ cần thực hiện một cam kết nhanh chóng
git coa "my changes are..."
coa là viết tắt của "cam kết tất cả"
Chạy lệnh đã cho
git add . && git commit -m "Changes Committed"
Tuy nhiên, ngay cả khi nó có vẻ là một lệnh đơn lẻ, đó là hai lệnh riêng biệt chạy từng cái một. Ở đây chúng tôi chỉ sử dụng &&
để kết hợp chúng. Nó không khác nhiều so với chạy
git add .
và git commit -m "Changes Committed"
riêng biệt. Bạn có thể chạy nhiều lệnh với nhau nhưng vấn đề trình tự ở đây. Làm thế nào nếu bạn muốn đẩy các thay đổi đến máy chủ từ xa cùng với việc dàn dựng và cam kết bạn có thể thực hiện như đã cho,
git add . && git commit -m "Changes Committed" && git push origin master
Thay vào đó, nếu bạn thay đổi trình tự và đặt push
thành đầu tiên, nó sẽ được thực hiện trước và không đưa ra mong muốn sau khi dàn dựng và cam kết chỉ vì nó đã chạy trước.
&&
chạy lệnh thứ hai trên đường dây khi lệnh đầu tiên trở lại thành công, hoặc với một mức độ lỗi của 0. Ngược lại với &&
là ||
, chạy lệnh thứ hai khi lệnh đầu tiên không thành công, hoặc với một mức độ lỗi của 1.
Ngoài ra, bạn có thể tạo alise như git config --global alias.addcommit '!git add -a && git commit -m'
và sử dụng nó nhưgit addcommit -m "Added and commited new files"
Câu trả lời tuyệt vời, nhưng nếu bạn tìm kiếm một dòng singe làm tất cả, bạn có thể nối, bí danh và tận hưởng sự tiện lợi:
git add * && git commit -am "<commit message>"
Đó là một dòng đơn nhưng hai lệnh và như đã đề cập, bạn có thể đặt bí danh cho các lệnh này:
alias git-aac="git add * && git commit -am "
(không gian ở cuối là quan trọng) bởi vì bạn sẽ tham số hóa lệnh tay ngắn mới.
Từ thời điểm này, bạn sẽ sử dụng bí danh này:
git-acc "<commit message>"
Về cơ bản bạn nói:
git, thêm cho tôi tất cả các tệp không bị theo dõi và cam kết chúng với thông điệp cam kết đã cho này.
Hy vọng bạn sử dụng Linux, hy vọng điều này sẽ giúp.
Bạn có thể viết một đoạn script nhỏ (nhìn vào câu trả lời của Ian Clelland) được gọi là git-commitall
sử dụng một số lệnh git để thực hiện những gì bạn muốn làm.
Đặt kịch bản này ở bất cứ nơi nào trong của bạn $PATH
. Bạn có thể gọi nó bằng git commitall
... rất tiện dụng!
Tìm thấy ở đây (câu hỏi và tất cả các câu trả lời không may bị xóa, chỉ hiển thị với uy tín cao)