Git tambah dan komit dalam satu perintah

392

Apakah ada cara yang bisa saya lakukan

git add -A
git commit -m "commit message"

dalam satu perintah?

Saya sepertinya banyak melakukan kedua perintah itu, dan jika Git memiliki opsi seperti git commit -Am "commit message", itu akan membuat hidup menjadi jauh lebih nyaman.

git commitmemiliki -apengubah, tetapi tidak cukup melakukan hal yang sama seperti melakukan git add -Asebelum melakukan. git add -Amenambahkan file yang baru dibuat, tetapi git commit -amtidak. Apa yang

Chetan
sumber
4
kemungkinan duplikat dari Git Komit semua file menggunakan cmd tunggal
Mr_and_Mrs_D
1
hemat waktu dan komit setiap perubahan lebih baik, jadi saya menggunakan git commit -am"yes the code in committed"
Rizo
git add .adalah opsi yang lebih cepat untuk menambahkan semua
Ryan

Jawaban:

419

Anda dapat menggunakan alias git, mis

git config --global alias.add-commit '!git add -A && git commit'

dan menggunakannya dengan

git add-commit -m 'My commit message'

EDIT: Dikembalikan kembali ke ticks ('), karena jika tidak maka akan gagal untuk ekspansi shell di Linux. Di Windows , seseorang harus menggunakan tanda kutip ganda (") sebagai gantinya (ditunjukkan dalam komentar, tidak memverifikasi).

Martin C.
sumber
24
Gunakan git config --global --unset alias.<your_alias>untuk menghapus alias.
TMOTTM
11
@MrFusion Ini menjadikan perintah sebagai perintah shell eksternal alih-alih jalan pintas ke dalam perintah internal git, yaitu membuat seluruh baris dieksekusi sebagai proses terpisah.
Martin C.
8
Saya lebih suka git config --global alias.add-commit '!git add -A && git commit -m'jadi saya tidak perlu mengetik -msetiap waktu.
pijar
21
Saya terlalu malas untuk mengetik 'add-commit' dan '-m' setiap saat. Akibatnya, saya mengetik: git config --global alias.ac '!git add -A && git commit -m' sekali dan setiap kali saya mengetik: git ac 'comment' :)
Navid Vafaei
5
git config --global alias.add-commit "!git add -A && git commit"(Yaitu tanda kutip ganda bukannya tanda kutip tunggal) adalah apa yang bekerja pada Windows.
Saheed
269
git commit -am "message"

adalah cara mudah untuk memberitahu git untuk menghapus file yang telah Anda hapus, tetapi saya biasanya tidak merekomendasikan alur kerja catch-all. Komit Git seharusnya dalam praktik terbaik bersifat atomik dan hanya memengaruhi beberapa file.

git add .
git commit -m "message"

adalah cara mudah untuk menambahkan semua file baru atau yang dimodifikasi. Juga, kualifikasi catch-all berlaku. Perintah di atas tidak akan menghapus file yang dihapus tanpa git rmperintah.

git add app
git commit -m "message"

adalah cara mudah untuk menambahkan semua file ke indeks dari satu dir, dalam hal ini appdir.

Jed Schneider
sumber
41
atau hanya git commit -am "message"- pastikan tidak ada file baru yang belum diambil git. jika tidak, Anda harus menggunakan git add . &&di depan itu .... untuk melakukannya dalam satu baris.
courtimas
2
Maaf, tetapi pertanyaan aslinya persis tentang ini - menghindari git add .jika file ditambahkan
gorn
50

Untuk menyimpannya dalam satu baris, gunakan:

git add . && git commit -am "comment"

Baris ini akan menambah dan mengkomit semua file yang diubah dan ditambahkan ke repositori.

Ales
sumber
12
Harus dicatat bahwa ini khusus untuk shell Linux (bash dan mungkin yang lain).
R. Martinho Fernandes
6
git commit -am "comment"sempurna
Abhishek Bedi
2
Jika Anda menggunakan: git add . Maka Anda tidak perlu menggunakan opsi -a , hanya perlu:git commit -m "comment"
Duc Chi
18

Cukup gabungkan perintah Anda:

git add -A && git commit -m "comment" 
Yarin
sumber
18

Hanya mengadaptasi jawaban Ales dan komentar courtimas untuk linux bash :

Untuk menyimpannya dalam satu baris, gunakan:

git commit -am "comment"

Baris ini akan menambah dan mengkomit semua yang diubah ke repositori.

Pastikan tidak ada file baru yang belum diambil git. jika tidak, Anda harus menggunakan:

git add . ; git commit -am "message"

danilo
sumber
Bagaimana melakukannya git commit -am "comment", tetapi hanya untuk 1 file? Katakanlah file.txt .
Santosh Kumar
git commit -am "comment"adalah jalan pintas untuk menambahkan dan melakukan semua file yang diubah. Jika Anda ingin menambahkan dan melakukan hanya 1 file daripada yang harus Anda lakukan:git add file.txt ; git commit -m "comment"
danilo
Dalam kasus kedua, tidak perlu menambahkan -a dengan m. Seharusnya git add. ; Git commit -m "message"
Manish Bansal
12

Di versi git yang lebih baru, Anda dapat menambahkan dan melakukan seperti ini

git commit -a -m "commit message"

Selain itu Anda seorang alias:

[alias]
    ac = commit -a -m

Maka Anda dapat menggunakannya seperti ini:

git ac "commit message"
sirwinny
sumber
6
Perintah ini tidak akan membuat file baru, hanya yang diperbarui.
ruvim
11

Di mesin windows saya, saya telah mengatur .bashrcalias ini untuk membuat seluruh proses lebih sederhana.

  • buat / cari .bashrc- rujuk utas SO Anda
  • tambahkan baris berikut ke file

    alias gacp='echo "enter commit message : " && read MSG && git add . && git commit -m "$MSG" && git push'
    

    itu git add commit dan push. tweak dengan cara apa pun, katakan Anda tidak ingin perintah push menghapus bagian itu

  • muat ulang .bashrc/ tutup dan buka kembali cangkang Anda

  • sekarang Anda dapat melakukan seluruh proses dengan gacpperintah.
Sojan V Jose
sumber
FYI skrip itu ada git pushdi dalamnya. Jangan salin dan tempel itu.
Yar
11

cukup yakin Anda bisa menggunakan:

git commit -am "commit all the things"
Blair Anderson
sumber
1
Perintah ini adalah yang terpendek dan mungkin cara termudah untuk mencapai hasil yang diperlukan. Uji pada git versi 2.6.3.windows.1.
Ithar
5
Ini tidak akan membuat file baru ditambahkan, hanya yang "diperbarui"!
user13107
1
BENAR itu tidak akan mulai melacak file yang tidak dilacak
Blair Anderson
@ BlairAnderson - Apakah ada perintah untuk menambahkan file yang tidak dilacak juga dengan tambah dan komit?
MasterJoe2
6

Jika Anda mengetik:

git config --global alias.a '!git add -A && git commit -m'

sekali, Anda hanya perlu mengetik

git a

setiap saat:

git a 'your comment'
Navid Vafaei
sumber
4
ini harus menjadi jawaban teratas, sangat mudah dan termasuk file-file yang TIDAK DITRACK tidak seperti kebanyakan dari saran lainnya.
JesseBoyd
6

Cukup gunakan:

git commit -m "message" .     

Perhatikan tanda "." di akhir ... yang juga bisa menjadi jalur ke file / direktori

Josh Olson
sumber
apakah ini akan berfungsi untuk file yang baru dibuat atau hanya file yang sudah ada yang diubah?
MasterJoe2
5

Saya melakukan shell

#!/bin/sh

clear

git add -A 
git commit -a -m "'$*'"

simpan misalnya git.sh dan panggilan selanjutnya:

sh git.sh your commit message
ademar111190
sumber
1
tidak portabel untuk OS lain, dan git dapat melakukan ini sendiri, jadi apa gunanya?
naught101
2
@naught101 jelas bahwa git dapat melakukan ini sendiri, intinya adalah bahwa shell ini berfungsi untuk merampingkan proses bagi orang yang menggunakan git di linux, menjadi lebih mudah untuk menjalankan sh git.sh pesan komit Anda, dan tidak dibuat portabel tidak berarti itu akan berfungsi dengan baik.
ademar111190
5

Saya memiliki fungsi ini di saya .bash_profileatau .profileatau .zprofileatau apapun yang bersumber di shell login:

function gac () {
  # Usage: gac [files] [message]
  # gac (git add commit) stages files specified by the first argument
  # and commits the changes with a message specified by the second argument.
  # Using quotes one can add multiple files at once: gac "file1 file2" "Message".
  git add $1 && git commit -m "$2"
}
Lenar Hoyt
sumber
3

Anda dapat menggunakan -a

git commit -h

...
Commit contents options
    -a, -all    commit all changed files
...

git commit -a # It will add all files and also will open your default text editor.
Druta Ruslan
sumber
2

Saya harap ini membantu seseorang dan silakan mengedit atau meningkatkan. Saya tidak yakin apa cara tercepat tetapi ini tentu menyederhanakan proses komit kode saya dengan menggunakan "ohmyzsh" untuk Git .

https://ohmyz.sh/

  • git add . disingkat menjadi ga .
  • git commit -m "message" disingkat menjadi gc -m "message"
  • git push disingkat menjadi gp

masukkan deskripsi gambar di sini

dhahn
sumber
1

Saya menggunakan yang berikut ini (keduanya sedang dalam proses, jadi saya akan mencoba untuk mengingat untuk memperbarui ini):

# Add All and Commit
  aac = !echo "Enter commit message:" && read MSG && echo "" && echo "Status before chagnes:" && echo "======================" && git status && echo "" && echo "Adding all..." && echo "=============" && git add . && echo "" && echo "Committing..." && echo "=============" && git commit -m \"$MSG\" && echo "" && echo "New status:" && echo "===========" && git status

# Add All and Commit with bumpted Version number
  aacv = !echo "Status before chagnes:" && echo "======================" && git status && echo "" && echo "Adding all..." && echo "=============" && git add . && echo "" && echo "Committing..." && echo "=============" && git commit -m \"Bumped to version $(head -n 1 VERSION)\" && echo "" && echo "New status:" && echo "===========" && git status

Dengan echo "Enter commit message:" && read MSGbagian yang terinspirasi oleh Sojan V Jose

Saya ingin mendapatkan if elsepernyataan di sana sehingga saya bisa meminta aacv untuk bertanya kepada saya apakah saya ingin menyebarkan ketika itu selesai dan melakukan itu untuk saya jika saya mengetikkan 'y', tapi saya rasa saya harus meletakkannya di .zshrcfile saya

avjaarsveld
sumber
1

Saya menggunakan alias berikut untuk menambahkan semua dan melakukan :

git config --global alias.ac '!git add -A && git commit -a'

Lalu, dengan mengetik:

git ac

Saya mendapatkan jendela vim untuk mendapatkan lebih banyak alat pengeditan untuk pesan komit saya.

Gus
sumber
Saya harus menuntut Anda karena plagiarisme. :)
Navid Vafaei
Tolong jelaskan wawasan tambahan yang berbeda yang diberikan jawaban Anda bila dibandingkan dengan jawaban yang lebih tua dari Navid.
Yunnosch
@Yunnosch Saya kira saya tidak melihat jawaban Navid sebelum memposting karena dia "terlalu malas": P untuk mempostingnya sebagai jawaban penuh. Memang sama saja, dan sebenarnya saya punya alias ini sejak dulu, meminjamnya dari rekan kerja. Jadi saya kira kita bisa menyebutnya: rantai plagiarisme. Maaf jika itu mengganggumu.
Gus
1

Jika seseorang ingin "menambah dan mengkomit" untuk satu file, yang merupakan kasus saya, saya membuat skrip di bawah untuk melakukan hal itu:

#!/bin/bash

function usage {
    echo "Usage: $(basename $0) <filename> <commit_message>"    
}

function die {
    declare MSG="$@"
    echo -e "$0: Error: $MSG">&2
    exit 1
}

(( "$#" == 2 )) || die "Wrong arguments.\n\n$(usage)"

FILE=$1
COMMIT_MESSAGE=$2

[ -f $FILE ] || die "File $FILE does not exist"

echo -n adding $FILE to git...
git add $FILE || die "git add $FILE has failed."
echo done

echo "commiting $file to git..."
git commit -m "$COMMIT_MESSAGE" || die "git commit has failed."

exit 0

Saya menamainya "gitfile.sh" dan menambahkannya ke $ PATH saya. Kemudian saya dapat menjalankan git add dan melakukan satu file dalam satu perintah:

gitfile.sh /path/to/file "MY COMMIT MESSAGE"
Bruno Negrão Zica
sumber
0

Saya menggunakan alias git ini:

git config --global alias.cam '!git commit -a -m '

Jadi, alih-alih menelepon

git add -A && git commit -m "this is a great commit"

Saya hanya melakukan:

git cam "this is a great commit"

Alejandro Silva
sumber
0

Anda dapat menggunakan git commit -am "[komentar]" // solusi terbaik atau git add. && git commit -m "[komentar]"

Gaurav Rathi
sumber
0

Periksa dulu alias apa yang Anda miliki ...

git config --get-regexp alias

Jika tidak ada di sana, Anda dapat membuat sendiri (referensi: https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases )

// git add

git config --global alias.a '!git add -A'

// git commit

git config --global alias.c '!git commit'

// git commit -m

git config --global alias.cm '!git commit -m'

// git add commit

git config --global alias.ac '!git add -A && git commit'

// git add commit -m

git config --global alias.acm '!git add -A && git commit -m'

Misalnya, jika Anda menggunakan yang terakhir ...

git acm 'My commit'
Cruz Jurado
sumber
0
  1. Buat alias di bash: alias gac="git add -A && git commit -m"

    (Saya memilih untuk memanggil pintasan 'gac' tetapi Anda tidak harus)

  2. Gunakan: gac 'your commit message here'

H. Almidan
sumber
0

Untuk punggung perak di kerumunan yang terbiasa dengan hal-hal seperti Subversion ... untuk melakukan "komit" dalam arti kata yang lama (yaitu - atau dalam git berbicara - untuk menambah, mengkomit, dan mendorong) dalam satu langkah saya biasanya menambahkan sesuatu seperti berikut ini di root proyek saya (sebagai file kelelawar di windows misalnya git-commit.bat). Lalu ketika saya ingin menambahkan, komit, dan mendorong saya cukup ketik sesuatu seperti git-commit "Added some new stuff"dan semuanya pergi ke repo jarak jauh.

Juga, dengan cara ini siapa pun di proyek dapat menggunakan yang sama tanpa harus mengubah apa pun secara lokal.

Saya biasanya juga menjalankan git config credential.helper storesekali jadi saya tidak perlu memberikan uid / pwd ketika ini dijalankan.

::
:: add, commit, and push to git
::

@echo off
echo.
echo.
echo 
echo Doing commit...
git add -A && git commit -m %1
echo.
echo.
echo Doing push...
git push
echo.
echo.
echo Done.
echo.
John
sumber
0

Ini berfungsi untuk saya selalu tolong jalankan perintah berikut:

1.git add .
2.git commit -m "no bugs please"
3.git push origin *

di mana * didasarkan dari cabang yang Anda dorong, dan juga komit pesan selalu dapat diubah agar sesuai dengan konteksnya.

Fredrick Okereke
sumber
-1
  1. ketik git add . && git commit -amdan masukkan
  2. ketik historydan masukkan
  3. ingat nomor untuk perintah di atas, misalkan angkanya 543
  4. Mulai sekarang, untuk setiap jenis komit !543 "your comment here"yaitu tanda + angka seruan dan spasi serta komentar Anda.
Nagios Kosmos
sumber
4
Saya downvoted karena itu solusi yang sangat aneh yang dapat memecahkan hal-hal dengan cara yang mengerikan begitu sejarah Anda berakhir dan bahwa perintah ke-543 menjadi sesuatu yang lain.
bfontaine
-2

Hasil Ini - Coba ini: Script sederhana satu perintah untuk git add, git commit dan git push

Buka CMD Anda di Windows dan rekatkan jawaban ini

git commit -m "your message" . && git push origin master

Contoh ini tangkapan layar gambar saya: https://i.stack.imgur.com/2IZDe.jpg

Anang Hanafi
sumber
-4

Untuk menyimpannya dalam satu baris, gunakan:

gacm "your comment"
Ravath Sathish
sumber
2
Bisakah Anda memberikan latar belakang tentang ini atau tautan atau sesuatu?
Gershom
7
Saya pikir poster ini bekerja dengan alias dan tidak menyadarinya. Untuk membuat pekerjaan di atas, Anda ingin menambahkan alias shell like alias gacm="git add .; git commit -m"atau (sebaiknya saya pikir) alias git git config --global alias.gacm '!git add .;git commit -m'.
Pengembangan