Yang membuat frustasi adalah bahwa ini dulunya mungkin dan merupakan sintaks standar untuk melakukan dan menambahkan file baru: git commit -a Tetapi benar untuk membentuk, sintaks git berubah. Ini membingungkan pengguna yang ada (dan merusak skrip mereka), menghilangkan fungsionalitas yang berguna, dan mengganti bendera yang tidak perlu.
fijiaaron
1
Ada duplikat dari ini di git add -A, git commit dalam satu perintah? . Jawaban yang diterima di sana mirip dengan jawaban yang diterima di sini, tetapi menyarankan untuk membuat alias git untuk mempersingkat pengetikan yang terlibat (dan menunjukkan cara melakukannya).
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).
@NarendraJaggi git add -A && git commit -m "Pesan Anda"
Dr.jacky
1
orang bisa meletakkannya di file .sh atau .bat itu sendiri dan gunakan saja sebagai satu perintah. Pesannya mungkin param1
BlueWizard
Dan Anda juga dapat menambahkan pintasan untuk perintah git dasar di .bashrc: alias gpl = 'git pull' alias gps = 'git push' alias gc = 'git commit' alias gs = 'git status' alias gd = 'git diff' alias ga = 'git add' alias gck = 'git checkout' alias gb = 'git branch' alias gl = 'git log' alias lcp = 'git format-patch -1 HEAD' alias resetToMaster = 'git ulang - git reset - asal asalnya / master '
ni3
3
Di PowerShell, ganti "&&" untuk ";" untuk menjalankan kedua perintah, seperti ini:git add -A ; git commit -m "Your Message"
Rafael Miceli
415
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.
Ini sebenarnya tidak menjawab pertanyaan, bahkan secara spesifik (dicetak tebal) mengecualikan salah satu bagian kunci dari solusi yang dicari.
Arunas
6
Tidak menambah atau melakukan file yang tidak terlacak.
B15
3
Tapi itu mencakup situasi paling umum ketika Anda melakukan setelah "git add -A" dan perhatikan bahwa Anda lupa mengubah sesuatu yang kecil dalam kode. Saya benci menulis pesan komit yang sama beberapa kali dari awal
KorbenDallas
tetapi thread starter mengatakan SEMUA FILE, jadi, saya pikir ini tidak masuk hitungan
Frederick G. Sandalo
Dan Anda juga dapat menambahkan pintasan untuk perintah git dasar di .bashrc: alias gpl = 'git pull' alias gps = 'git push' alias gc = 'git commit' alias gs = 'git status' alias gd = 'git diff' alias ga = 'git add' alias gck = 'git checkout' alias gb = 'git branch' alias gl = 'git log' alias lcp = 'git format-patch -1 HEAD' alias resetToMaster = 'git ulang - git reset - asal asalnya / master '
ni3
26
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.
satu baris, tetapi tidak satu perintah (yang diminta OP)
Eliran Malka
24
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:
Setelah menjalankan perintah itu, Anda cukup mengetik git tempagar 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 --amenduntuk menambahkan lebih banyak perubahan pada komit dan / atau memberikannya nama yang tepat.
Saya benci bekerja dengan repositori yang berisi pesan komit yang mengatakan "tidak ada", dan saya akan menolak PR apa pun atas dasar itu juga. Sayangnya, satu-satunya cara Anda dapat mempelajari pentingnya memiliki pesan komit yang baik adalah ketika Anda harus kembali untuk mengaudit sesuatu yang sudah lama ditulis ("baris ini menyebabkan bug ... mengapa itu ditambahkan, dan apakah akan ada lagi rusak jika saya mengubah / menghapusnya? ").
gregmac
1
Komitmen dengan "tidak ada" tidak pernah dimaksudkan untuk tinggal lama. Biasanya saya memulai cabang fitur saya sendiri, melakukan micro commit dan memencetnya menjadi sesuatu yang lebih masuk akal sebelum bergabung. Jelas orang yang melakukan untuk setiap fungsi yang dimodifikasi dan tidak keberatan log git penuh tidak perlu ini.
SystematicFrank
1
Saya menggunakan 'wip' (kependekan dari "work in progress") alih-alih 'tidak ada' untuk tujuan ini dan saya hanya mendorong komitmen tersebut ke cabang pribadi saya.
Sergej Koščejev
Itu masih tidak membantu, karena pada akhirnya komitmen "penghapusan" atau "tidak ada" itu akan membuatnya menjadi cabang yang dilihat orang lain, dan akan mencemari log pesan. Jika Anda menekan semua komitmen Anda sebelum mendorong, itu bisa diterima, tetapi jika tidak, hal itu tetap mengganggu bagi tim.
Jordan
Ini adalah ide parut, dan dengan menggabungkannya dengan jawaban berikutnya Anda benar-benar bisa mendapatkan jawaban akurat 100% untuk OP. Saya sebenarnya menguraikan langkah-langkah yang diperlukan (menggunakan git-bash) dalam jawaban saya. ( stackoverflow.com/a/43442269/869239 )
VeRo
3
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,
Sebaliknya, jika Anda mengubah urutan dan menempatkan pushke 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"
Anda dapat menulis skrip kecil (lihat jawaban Ian Clelland) yang disebut git-commitallyang 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)
Seluruh utas merupakan bacaan yang bagus ... itu sebabnya saya menautkannya ^^
tanascius
@ Dimitri - sayangnya beberapa orang yang masih belajar memutuskan untuk menghapus utas bermanfaat ini. Itu masih terlihat dengan reputasi tinggi, jadi saya menyimpan tautannya di sini.
Jawaban:
Apakah
dihitung sebagai "perintah tunggal"?
Edit berdasarkan jawaban thefinnomenon di bawah ini :
Untuk menjadikannya sebagai
git alias
, gunakan:dan komit semua file, termasuk file baru, dengan pesan dengan:
Penjelasan (dari
git add
dokumentasi ):sumber
git add -A ; git commit -m "Your Message"
Perintah ini akan menambah dan mengkomit semua file yang dimodifikasi, tetapi bukan file yang baru dibuat .
Dari man git-commit:
sumber
Saya menggunakan fungsi ini:
Dalam file konfigurasi zsh saya, jadi saya bisa melakukan:
Untuk secara otomatis mengatur dan mengkomit semua file.
sumber
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:
http://git-scm.com/docs/git-add
http://git-scm.com/docs/git-commit
sumber
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:
Buat alias:
Tambahkan semua file & komit dengan pesan:
CATATAN:
coa
kependekan dari commit semua dan dapat diganti dengan apa pun yang diinginkan hati Andasumber
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.
atau
Setelah itu Anda bisa menggunakan komit semua file yang ditambahkan
dengan ini Anda harus menambahkan pesan untuk komit ini.
sumber
Jika Anda hanya ingin cara "cepat dan kotor" untuk menyimpan perubahan pada cabang saat ini, Anda dapat menggunakan alias berikut:
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 menggunakangit reset HEAD~
nanti untuk "tidak berkomitmen" pada perubahan sehingga Anda dapat terus mengerjakannya, ataugit commit --amend
untuk menambahkan lebih banyak perubahan pada komit dan / atau memberikannya nama yang tepat.sumber
Saya memiliki dua alias dalam konfigurasi saya:
jika saya terlalu malas saya hanya melakukan semua perubahan dengan
dan hanya untuk melakukan komit cepat
coa singkatan dari "commit all"
sumber
Jalankan perintah yang diberikan
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 menjalankangit add .
dangit 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,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"
sumber
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.
sumber
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 dengangit commitall
... sangat berguna!Ditemukan di sini (pertanyaan dan semua jawaban sayangnya dihapus, hanya terlihat dengan reputasi tinggi)
sumber
coba gunakan:
sumber