Bagaimana saya bisa membuat stage dan mengkomit semua file, termasuk file yang baru ditambahkan, menggunakan satu perintah?
Bagaimana saya bisa membuat stage dan mengkomit semua file, termasuk file yang baru ditambahkan, menggunakan satu perintah?
Jawaban:
Apakah
git add -A && git commit -m "Your Message"
dihitung sebagai "perintah tunggal"?
Edit berdasarkan jawaban thefinnomenon di bawah ini :
Untuk menjadikannya sebagai git alias
, gunakan:
git config --global alias.coa '!git add -A && git commit -m'
dan komit semua file, termasuk file baru, dengan pesan dengan:
git coa "A bunch of horrible changes"
Penjelasan (dari git add
dokumentasi ):
-A, --all, --no-abaikan-penghapusan
Perbarui indeks tidak hanya di mana pohon yang bekerja memiliki file yang cocok tetapi juga di mana indeks sudah memiliki entri. Ini menambah, memodifikasi, dan menghapus entri indeks agar sesuai dengan pohon kerja.
Jika tidak
<pathspec>
diberikan ketika opsi -A digunakan, semua file di seluruh pohon kerja diperbarui (Git versi lama digunakan untuk membatasi pembaruan ke direktori saat ini dan subdirektori).
git add -A ; git commit -m "Your Message"
Perintah ini akan menambah dan mengkomit semua file yang dimodifikasi, tetapi bukan file yang baru dibuat .
git commit -am "<commit message>"
Dari man 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.
Saya menggunakan fungsi ini:
gcaa() { git add --all && git commit -m "$*" }
Dalam file konfigurasi zsh saya, jadi saya bisa melakukan:
> gcaa This is the commit message
Untuk secara otomatis mengatur dan mengkomit semua file.
function gcaa() { git add --all && git commit -m "$*" && git push }
gaa && gc -m "my commit"
tapi ini jauh lebih bagus ... <bergegas untuk mengubah bashrc ..>
One-liner untuk mem-stage SEMUA file ( dimodifikasi , dihapus , dan baru ) dan komit dengan komentar:
git add --all && git commit -m "comment"
http://git-scm.com/docs/git-add
http://git-scm.com/docs/git-commit
Tidak yakin mengapa jawaban ini semua menari di sekitar apa yang saya yakini sebagai solusi yang tepat tetapi untuk apa nilainya di sini adalah apa yang saya gunakan:
git config --global alias.coa '!git add -A && git commit -m'
git coa "A bunch of horrible changes"
CATATAN: coa
kependekan dari commit semua dan dapat diganti dengan apa pun yang diinginkan hati Anda
git alias
jalan, sisanya membosankan.
Komit di git dapat berupa proses beberapa langkah atau satu langkah tergantung pada situasinya.
Situasi ini adalah tempat Anda memiliki banyak file yang diperbarui dan ingin melakukan:
Anda harus menambahkan semua file yang dimodifikasi sebelum Anda melakukan apa pun.
git add -A
atau
git add --all
Setelah itu Anda bisa menggunakan komit semua file yang ditambahkan
git commit
dengan ini Anda harus menambahkan pesan untuk komit ini.
Jika Anda hanya ingin cara "cepat dan kotor" untuk menyimpan perubahan pada cabang saat ini, Anda dapat menggunakan alias berikut:
git config --global alias.temp '!git add -A && git commit -m "Temp"'
Setelah menjalankan perintah itu, Anda cukup mengetik git temp
agar git secara otomatis mengkomit semua perubahan Anda ke cabang saat ini sebagai komit bernama "Temp". Kemudian, Anda dapat menggunakan git reset HEAD~
nanti untuk "tidak berkomitmen" pada perubahan sehingga Anda dapat terus mengerjakannya, atau git commit --amend
untuk menambahkan lebih banyak perubahan pada komit dan / atau memberikannya nama yang tepat.
Saya memiliki dua alias dalam konfigurasi saya:
alias.foo=commit -a -m 'none'
alias.coa=commit -a -m
jika saya terlalu malas saya hanya melakukan semua perubahan dengan
git foo
dan hanya untuk melakukan komit cepat
git coa "my changes are..."
coa singkatan dari "commit all"
Jalankan perintah yang diberikan
git add . && git commit -m "Changes Committed"
Namun, bahkan jika itu tampak satu perintah, itu adalah dua perintah terpisah yang berjalan satu per satu. Di sini kita biasa &&
menggabungkannya. Ini tidak jauh berbeda dengan menjalankan
git add .
dan git commit -m "Changes Committed"
secara terpisah. Anda dapat menjalankan banyak perintah secara bersamaan tetapi mengurutkannya penting di sini. Bagaimana jika Anda ingin mendorong perubahan ke server jauh bersamaan dengan pementasan dan komit, Anda bisa melakukannya seperti yang diberikan,
git add . && git commit -m "Changes Committed" && git push origin master
Sebaliknya, jika Anda mengubah urutan dan menempatkan push
ke pertama, Itu akan dieksekusi terlebih dahulu dan tidak memberikan dorongan yang diinginkan setelah pementasan dan komit hanya karena sudah berjalan terlebih dahulu.
&&
menjalankan perintah kedua pada baris ketika perintah pertama kembali dengan sukses, atau dengan tingkat kesalahan 0. Kebalikan dari &&
adalah||
, yang menjalankan perintah kedua ketika perintah pertama tidak berhasil, atau dengan tingkat kesalahan 1.
Atau, Anda dapat membuat alise as git config --global alias.addcommit '!git add -a && git commit -m'
dan menggunakannya sebagaigit addcommit -m "Added and commited new files"
Jawaban yang bagus, tetapi jika Anda mencari garis menghanguskan melakukan semua, Anda dapat menyatukan, alias dan menikmati kenyamanan:
git add * && git commit -am "<commit message>"
Ini adalah satu baris tetapi dua perintah, dan seperti yang disebutkan Anda dapat alias perintah ini:
alias git-aac="git add * && git commit -am "
(ruang di bagian akhir penting) karena Anda akan membuat parameter pada perintah short hand yang baru.
Mulai saat ini, Anda akan menggunakan alias ini:
git-acc "<commit message>"
Anda pada dasarnya mengatakan:
git, tambahkan untuk saya semua file yang tidak terlacak dan komit dengan pesan komit yang diberikan ini.
Semoga Anda menggunakan Linux, harap ini membantu.
Anda dapat menulis skrip kecil (lihat jawaban Ian Clelland) yang disebut git-commitall
yang menggunakan beberapa perintah git untuk melakukan apa yang ingin Anda lakukan.
Tempatkan skrip ini di mana pun Anda berada di $PATH
. Anda dapat menyebutnya dengan git commitall
... sangat berguna!
Ditemukan di sini (pertanyaan dan semua jawaban sayangnya dihapus, hanya terlihat dengan reputasi tinggi)