Git bir komutta ekleme ve gönderme


392

Yapabileceğim bir yol var mı

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

bir komutta?

Bu iki komutu çok yapıyorum ve Git'in böyle bir seçeneği git commit -Am "commit message"olsaydı, hayatı daha kolay hale getirirdi.

git commitsahip -adeğiştirici, ama oldukça yapıyor aynı yapmaz git add -Ataahhütte bulunmadan önce. git add -Ayeni oluşturulan dosyalar ekler, ancak git commit -ameklemez. Nedir?



1
zaman tasarrufu ve taahhüt her değişiklik daha iyi, bu yüzden git command -am kullanıyorum"yes the code in committed"
Rizo

git add .eklemek için daha hızlı bir seçenektir
Ryan

Yanıtlar:


419

Git takma adlarını kullanabilirsiniz, ör.

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

ve ile kullanın

git add-commit -m 'My commit message'

EDIT: Kenelere (') geri döndü, aksi takdirde Linux'ta kabuk genişletmesi başarısız olur. Windows'ta , tek kullanım kullanmalıdır çift tırnak ( ") (doğrulamadım, Açıklamalarda belirttiği) yerine.


24
git config --global --unset alias.<your_alias>Takma adı ayarlamak için kullanın .
TMOTTM

11
@MrFusion Dahili git komutunda kısayol yerine komutu harici bir kabuk komutu yapar, yani tüm satırı ayrı bir işlem olarak yürütür.
Martin C.

8
Her seferinde yazmak git config --global alias.add-commit '!git add -A && git commit -m'zorunda kalmamayı tercih ederim -m.
incandescentman

21
Her seferinde 'add-taahhüt' ve '-m' yazmak için çok tembelim. Sonuç olarak, ben yazıyorum: bir git config --global alias.ac '!git add -A && git commit -m' kez ve her yazdığımda: git ac 'comment' :)
Navid Vafaei

5
git config --global alias.add-commit "!git add -A && git commit"(yani tek tırnak yerine çift tırnak) Windows üzerinde çalışan şeydir.
Saheed

269
git commit -am "message"

git'e sildiğiniz dosyaları silmesini söylemenin kolay bir yoludur, ancak genellikle bu tür tümünü yakalama iş akışlarını önermiyorum. Git taahhütleri en iyi uygulamada oldukça atomik olmalı ve sadece birkaç dosyayı etkilemelidir.

git add .
git commit -m "message"

tüm dosyaları yeni veya değiştirilmiş olarak eklemenin kolay bir yoludur. Ayrıca, tümünü yakalama yeterliliği geçerlidir. Yukarıdaki komutlar git rmkomut olmadan silinen dosyaları silmez .

git add app
git commit -m "message"

tüm dosyaları tek bir dizinden, bu durumda dir dizininden dizine eklemenin kolay bir yoludur app.


41
veya sadece git commit -am "message"- git'in henüz almadığı yeni dosyalar olmadığından emin olun. Aksi takdirde git add . &&bunun önünde kullanmanız gerekir .... tek bir satırda yapmak için.
courtsimas

2
Üzgünüz ama orijinal soru tam olarak git add .
bununla ilgiliydi

50

Tek satırda tutmak için şunu kullanın:

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

Bu satır, değiştirilen ve eklenen tüm dosyaları depoya ekleyip taahhüt edecektir.


12
Bunun bir Linux kabuğuna (bash ve muhtemelen diğerleri) özgü olduğuna dikkat edilmelidir.
R. Martinho Fernandes

6
git commit -am "comment"mükemmel
Abhishek Bedi

2
Eğer kullandıysanız: git add . O zaman -a seçeneğini kullanmanıza gerek yok , sadece ihtiyacınız var:git commit -m "comment"
Duc Chi

18

Sadece komutlarınızı birleştirin:

git add -A && git commit -m "comment" 

18

Sadece adapte Ales en cevabını ve courtsimas en açıklamasını linux bash :

Tek satırda tutmak için şunu kullanın:

git commit -am "comment"

Bu satır, depoya değiştirilenlerin tümünü ekler ve taahhüt eder.

Git'in henüz almadığı yeni dosyalar olmadığından emin olun . aksi takdirde şunları kullanmanız gerekir:

git add . ; git commit -am "message"


Nasıl yapılır git commit -am "comment", ancak sadece 1 dosya için? Dosya.txt diyelim .
Santosh Kumar

git commit -am "comment"değiştirilen tüm dosyaları eklemek ve işlemek için kullanılan bir kısayoldur. Sadece 1 dosya eklemek ve yürütmek istiyorsanız yürütmeniz gerekiyor:git add file.txt ; git commit -m "comment"
danilo

İkinci durumda, m ile -a eklemeye gerek yoktur. Git add olmalıdır. ; Git taahhüt -m "mesaj"
Manish Bansal

12

Git'in sonraki sürümünde böyle ekleyebilir ve uygulayabilirsiniz

git commit -a -m "commit message"

Ayrıca bir takma ad:

[alias]
    ac = commit -a -m

O zaman bu şekilde kullanabilirsiniz:

git ac "commit message"

6
Bu komut yeni dosyaları değil, sadece güncellenenleri taahhüt eder.
ruvim

11

Windows makinemde .bashrc, tüm işlemi daha basit hale getirmek için bu takma adı ayarladım .

  • oluşturun / bulun .bashrc- bakın SO iş parçacığı
  • dosyaya aşağıdaki satırı ekle

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

    taahhüt ve itme eklemek git yok. herhangi bir şekilde değiştirin, itme komutunun bu parçayı kaldırmasını istemediğinizi söyleyin

  • .bashrckabuğunuzu yeniden yükle / kapat ve yeniden aç

  • şimdi tüm işlemi gacpkomut ile yapabilirsiniz.

Bu komut dosyasında bir FYI var git push. Bunu kopyalayıp yapıştırmayın.
Yar

11

kullanabilirsiniz emin:

git commit -am "commit all the things"

1
Bu komut, gerekli sonucu elde etmenin en kısa ve muhtemelen en kolay yoludur. Git sürüm 2.6.3.windows üzerinde test edin.
Ithar

5
Bu alışkanlık yeni eklenen dosyaları olsa da, sadece "güncellenmiş" olanlar!
user13107

1
DOĞRU izlenmemiş dosyaları izlemeye başlamayacak
Blair Anderson

@BlairAnderson - İzlenmeyen dosyaları ekleme ve kaydetme ile de ekleme komutu var mı?
MasterJoe2

6

Eğer yazarsanız:

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

bir kez, sadece yazmanız gerekecek

git a

her zaman:

git a 'your comment'

4
bu en iyi yanıt, süper kolay olmalı ve diğer önerilerin çoğundan farklı olarak UNTRACKED dosyaları içermelidir.
JesseBoyd

6

Sadece kullan:

git commit -m "message" .     

"." sonunda ... bir dosyaya / dizine giden yol da olabilir


bu yeni oluşturulan dosyalar veya sadece değiştirilen mevcut dosyalar için geçerli olacak mı?
MasterJoe2

5

Bir kabuk yaparım

#!/bin/sh

clear

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

kaydet örneğin git.sh ve daha sonra:

sh git.sh your commit message

1
diğer işletim sistemlerine taşınabilir değildir ve git bunu kendisi yapabilir, peki anlamı nedir?
naught101

2
@ naught101 git'in bunu kendiniz yapabileceği açıktır, mesele bu kabuğun linux'da git kullanan insanlar için süreci kolaylaştırmaya hizmet ettiği, bir sh git.sh komutunu çalıştırmak için daha basit olması ve taşınabilir yapılmamasıdır. düzgün çalışacağı anlamına gelmez.
ademar111190

5

Benim .bash_profileveya .profileveya .zprofilegiriş kabuklarında kaynaklı ne olursa olsun bu işlevi var :

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"
}

3

Kullanabilirsiniz -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.

2

Umarım bu birisine yardımcı olur ve lütfen düzenlemek veya geliştirmek için çekinmeyin. En hızlı yol ne olduğundan emin değilim ama bu kesinlikle Git için "ohmyzsh" kullanarak kod taahhüt sürecini basitleştirir .

https://ohmyz.sh/

  • git add . kısaltılmış ga .
  • git commit -m "message" kısaltılmış gc -m "message"
  • git push kısaltılmış gp

resim açıklamasını buraya girin


1

Aşağıdakileri kullanıyorum (her ikisi de devam ediyor, bu yüzden bunu güncellemeyi hatırlamaya çalışacağım):

# 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

İle echo "Enter commit message:" && read MSGSojan V Jose esinlenerek parçası

Bir almak isteriz if elseben 'y' yazarsanız bitince dağıtmak ve benim için yapar istiyorsanız aacv bana sormaya alabilirsiniz orada deyimi, ama benim o koymalıyız sanırım .zshrcdosyanın


1

Tümünü eklemek ve işlemek için aşağıdaki takma adı kullanıyorum :

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

Ardından, şunu yazarak:

git ac

Tamamlama mesajım için daha fazla düzenleme aracı almak için bir vim penceresi alıyorum.


Sana intihal için dava açmalıyım. :)
Navid Vafaei

Lütfen Navid'in dikkat çekici derecede eski cevabı ile karşılaştırıldığında cevabınızın sağladığı farklı ek bilgileri açıklayın.
Yunnosch

@Yunnosch Sanırım Navid'in cevabını "çok tembel" olduğu için göndermeden önce görmedim: P tam cevap olarak göndermek için. Gerçekten de aynı, ve aslında bu takma adı uzun zaman önce bir iş arkadaşından ödünç aldım. Sanırım buna “intihal zinciri” diyebiliriz. Rahatsız ettiğim için üzgünüm.
Gus

1

Birisi benim durumum olan tek bir dosya için "eklemek ve taahhüt" istiyorum, ben sadece bunu yapmak için aşağıdaki komut dosyasını yarattı:

#!/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

Ben "gitfile.sh" adını ve $ PATH ekledi. Sonra git komutunu tek bir dosya için tek bir komutta çalıştırabilirim:

gitfile.sh /path/to/file "MY COMMIT MESSAGE"

0

Bu git takma adını kullanıyorum:

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

Yani, çağrı yerine

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

Sadece yapıyorum:

git cam "this is a great commit"


0

git command -am "[comment]" // en iyi çözümü veya git add komutunu kullanabilirsiniz . && git commit -m "[yorum]"


0

Önce hangi takma adlara sahip olduğunuzu kontrol edin ...

git config --get-regexp alias

Orada değilse kendinizinkini oluşturabilirsiniz (başvuru: https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases )

// git ekle

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

// git taahhüdü

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

// git commit -m

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

// git taahhüt ekle

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

// git add -m ekle

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

Örneğin, sonuncuyu kullanırsanız ...

git acm 'My commit'

0
  1. Bash içinde bir takma ad oluşturun: alias gac="git add -A && git commit -m"

    ('Gac' kısayolunu aramayı seçtim ama zorunda değilsiniz)

  2. Kullanın: gac 'your commit message here'


0

Subversion gibi şeylere alışkın olan gümüş arkalıklar için ... kelimenin eski anlamında bir “taahhüt” yapmak (yani - veya git konuşmasında - eklemek, işlemek ve itmek) tek adım genellikle projemin köküne aşağıdaki gibi bir şey eklerim (pencerelerde yarasa dosyası olarak, örneğin git-commit.bat). Sonra eklemek, işlemek ve itmek istediğimdegit-commit "Added some new stuff" ve hepsi uzak repoya gidiyor.

Ayrıca, bu şekilde projedeki herkes yerel olarak herhangi bir şeyi değiştirmek zorunda kalmadan aynı şeyi kullanabilir.

Ben de genellikle bir git config credential.helper storekez çalıştırın bu yüzden bu çalıştırıldığında uid / pwd vermek gerekmez.

::
:: 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.

0

Bu benim için her zaman aşağıdaki komutları çalıştırın:

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

Burada *, itmekte olduğunuz şubeyi temel alır ve ayrıca taahhüt mesajları her zaman içeriğe uyacak şekilde değiştirilebilir.


-1
  1. yaz git add . && git commit -amve gir
  2. yaz historyve gir
  3. Yukarıdaki komutun numarasını hatırlayın, sayının 543
  4. Bundan böyle, her taahhüt türü için !543 "your comment here"ünlem işareti + sayı ve bir boşluk ve yorumunuz.

4
Aşağı düştüm, çünkü bu, geçmişinizin süresi dolduğunda ve 543. komuta başka bir şey haline geldiğinde işleri korkunç şekillerde kırabilecek gerçekten garip bir çözüm.
bfontaine


-4

Tek satırda tutmak için şunu kullanın:

gacm "your comment"

2
Bu konuda ya da bir link ya da başka bir şey hakkında biraz bilgi verebilir misiniz?
Gershom

7
Bence bu poster takma adlarla çalışıyor ve farkında değil. Yukarıdaki işi yapmak için, alias gacm="git add .; git commit -m"bir git takma adı gibi veya (tercihen bence) bir kabuk takma adı eklemek istersiniz git config --global alias.gacm '!git add .;git commit -m'.
Sadece Geliştirme
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.