Kaydetme mesajı olmadan Git kaydetme


108

Kaydetme mesajı belirtmeden değişiklikleri nasıl kaydedebilirim? Varsayılan olarak neden gereklidir?


6
Son olarak, git commit -a --allow-empty-message -m ''artık bir düzenleyici bile açmayacak. Aşağıdaki cevabımı
VonC

2
Windows'ta bu komut git commit -a --allow-empty-message -m ''markaları ile işlemek "mesajı işlemek ''yerine bu komutu kullanmak daha iyidir, böylece": git commit -a --allow-empty-message -m "".
tav

Yanıtlar:


138

git genellikle boş olmayan bir mesaj gerektirir, çünkü anlamlı bir commit mesajı sağlamak, iyi geliştirme uygulamalarının ve iyi bir depo yönetiminin bir parçasıdır. Commit mesajının ilk satırı git içinde her yerde kullanılır; daha fazla bilgi için "Git İşlem Mesajları Hakkında Bir Not" u okuyun .

Terminal.app'i cdproje dizininize git commit -am ''açarsanız, boş bir commit mesajına izin verilmediğinden başarısız olduğunu göreceksiniz. Git'in daha yeni sürümleri, Xcode'un
--allow-empty-messageen son sürümüne eklenen git sürümü dahil olmak üzere komut satırı bağımsız değişkenine sahiptir. Bu, boş bir mesajla işlem yapmak için bu komutu kullanmanıza izin verecektir:

git commit -a --allow-empty-message -m ''

--allow-empty-messageBayraktan önce commit-treesıhhi tesisat komutunu kullanmanız gerekiyordu . Sen bu komutu kullanarak bir örneğini görebilirsiniz "Ham Git" bölümünde ait Git kitabında .


1
Yeni versiyonları gitvar --allow-empty-messagekomut argüman. Buradaki belgelere bakın . Sıhhi tesisat komutunu kullanarak aynı şeyi başarabildiğinizden bahsediyor git-commit-tree.
Jeremy W. Sherman

18
Ben cümle "anlamlı bir mesaj taahhüt veren düşünüyorum olduğunu sadece yanlış iyi bir gelişme uygulamaların bir parçası" - Bir anlamlı mesaj taahhüt veren söyleyebiliriz olarak kabul edilir açıklamada bölücü zaten olduğu gibi, iyi bir gelişme uygulama kısmı - Ben biri için Daha az bilginin bazen daha az kafa karışıklığına yol git diffaçacağına inanıyorum, özellikle git gerçek değişiklikleri depodaki açık bir şekilde sakladığından ve ilgili tarafa , insan yazılı açıklamalarına güvenmeksizin bir commit tam olarak ne içerdiğini göstereceğinden . Makineler mümkün olduğunca bizi iş gücünden kurtarmalıdır.
amn

2
@amn, ayrıca yazdığım ve asla kimse tarafından okunamayacak on binlerce iyi yazılmış commit mesajını merak etmeye başladım. Şimdi benim için bu alışkanlığın değeri, beni onları tanımlama girişiminde değişikliklere bakmaya zorlaması ve bu bazen hataları fark etmeme neden oluyor. Yine de haklısın. Koda daha fazla ve commit mesajına daha az dikkat etmeyi düşüneceğim.
osa

7
Git artık sadece kod geliştirme için kullanılmıyor. Bir GitHub wiki sayfasını veya Overleaf LaTeX belgesini güncellediğimde, genellikle belgeleri güncellediğim için söylenecek bir şey yoktur . Değişiklikle ilgili anlamsal olarak anlamlı olan her şey diff içinde bulunur. Aslında kendimi taahhüt mesajının kendisi olarak değişiklik metnini kullanırken buldum: tamamen gereksiz!
Jim Pivarski

1
@amn, bazen git diffişleyen kişi öyle olduğuna inansa bile çıktısı kendi kendini açıklayıcı değildir.
cowlinator

26

Ve bunun için bir takma ad eklerseniz, o zaman daha da iyi değil mi?

git config --global alias.nccommit 'commit -a --allow-empty-message -m ""'

Şimdi yorum yapmadığınız için nccommit yaparsınız ve her şey taahhüt edilmelidir.


19

Önemli bir kod güncellemesi üzerinde çalışırken, gerçekten bir ara kayıt noktasına ihtiyacınız varsa, şunları yapabilirsiniz:

git commit -am'.'

veya daha kısa:

git commit -am.

Ve bu ne işe yarar?
fishinear

'.' Mesajıyla bir kayıt ekler.
lackadaisical

Bu yöntemi, tam anlamıyla bir taahhütte ne koyduğumu hatırlamadığım ve diffhepsine çok tembelim olduğumda kullanıyorum .
TheTechRobo36414519

16

Not: git1.8.3.2'den (Temmuz 2013) itibaren, aşağıdaki komut ( yukarıda Jeremy W Sherman tarafından bahsedilmiştir ) artık bir düzenleyici açmayacaktır:

git commit --allow-empty-message -m ''

Bkz. Commit 25206778aac776fc6cc4887653fdae476c7a9b5a :

-mGit commit seçeneğiyle boş bir mesaj belirtilirse , editör başlatılır.
Bu beklenmedik ve gereksiz.
Kullanıcının belirtip belirtmediğini kontrol etmek için mesaj dizisinin uzunluğunu kullanmak yerine, seçeneğin -mverilip verilmediğini doğrudan hatırlayın .


git 2.9 (Haziran 2016), boş mesaj davranışını iyileştirir:

Bkz. 178e814 (06 Nisan 2016), Adam me-andDinwoodie ( ) .
Bkz. 27014cb (07 Nisan 2016), Jeff King ( peff) .
(Göre Birleştirilmiş - Junio Cı Hamano gitster- içinde 0.709.261 tamamlama 2016, 22 May)

commit: tarafından verilen boş bir mesajı göz ardı etmeyin -m ''

  • " git commit --amend -m '' --allow-empty-message", garip görünmesine rağmen, hiçbir mesaj içermeyecek şekilde kaydetmeyi değiştirmek için geçerli bir istektir. Komut satırındaki
    varlığının -myanlış algılanması nedeniyle, orijinal commit'deki günlük mesajlarını tutmaya başladık.
  • " git commit -m "$msg" -F file" $msgboş bir dizge olsa da olmasa da reddedilmelidir , ancak aynı hatadan dolayı $msgboş olduğunda reddedilmemiştir .
  • " git -c template=file -m "$msg"" $msgboş olsa bile şablonu yok saymalıdır, ancak şablon dosyasındaki içeriği kullanmadı ve bunun yerine kullandı.

3

Bunu başarmak için git'e ihtiyacınız yok. Bir bash işlevinin yaratıcı kullanımı, işe yarayacaktır. Mesajları önemsemiyorsanız, varsayılan bir tane ayarlayın ve unutun.

function gitcom() {
  git commit -m "my default commit message"
}

Gerçekten maceraperest hissediyorsanız, tek bir komutla ekleyebilir, taahhüt edebilir ve itebilirsiniz

function gitzap() {
  git add . && git commit -m "whatevs" && git push $1 $2
}

Hangi daha sonra koşarsınız

gitzap origin master

Hatta daha derine inebilir ve parse_git_branch kullanarak kendinize bazı tuş vuruşlarından tasarruf edebilir veya "kaynak" ve "ana" için ortak bir varsayılan ayar yapabilirsiniz.


1
Bu bash işlevinin nasıl kurulacağına dair biraz daha ayrıntı verebilir misiniz?
adaam

1
OSX veya Linux'ta olduğunuzu varsayarsak, bu işlevleri kopyalayabilir ve. Profilinize yerleştirebilirsiniz (ev klasörünüzde olmalı, yoksa oluşturun). Yeni bir konsol penceresi açın ve bu komutlar sizin için kullanılabilir olacaktır. Bu dosyalarda yapılan herhangi bir değişiklik, bash oturumunu yenilemenizi gerektirir, böylece o dosyaya aşağıdaki takma adları ekleyerek işleri hızlandırabilirsiniz: alias ea = "subl ~ / .profile" # subl benim metin düzenleyicimdir, kendi metin düzenleyicimle değiştirin alias er = "source ~ / .profile" # bu sıfırlanacak Kısayol eklemek istediğinizde sadece "ea" yazarsınız (takma adları düzenle) Ve yenilemek için
Steven Garcia

2
Komut dosyalarını aradıysanız git-comve git-zap(uzantılar olmadan) ve onları git onları bulabileceği bir yere yerleştirdiyseniz (örneğin git com, git zap origin master
PATH'inizde bir

1
bash'da function gitcom {ya gitcom() {TMK, düzeltmek mi?

2

Git, bir yoruma sahip olmak için bir commit gerektirir, aksi takdirde commit kabul etmez.

Git ile varsayılan bir şablon yapılandırabilir veya git'te --allow-empty-message bayrağına bakabilirsiniz. Bence (% 100 emin değilim) git'i boş commit mesajlarını kabul edecek şekilde yeniden yapılandırabilirsiniz (ki bu hiç de iyi bir fikir değil). Normalde her işlem, mesajınız tarafından açıklanan biraz çalışma olmalıdır.


1
Bu cevabın neden reddedildiğinden emin değilim. Git'i boş commit mesajlarını kabul etmeye zorlamanın ya da 'kaydet' gibi bir mesaj kullanmanın kötü bir fikir olduğunu kabul ediyorum. Onunla savaşmayı bırak ve sadece lanet aleti öğren.
Jezen Thomas

2

Özel projemde aşağıdaki yapılandırmaya sahibim:

git config alias.auto 'commit -a -m "changes made from [device name]"'

Bu şekilde, acelem olduğunda yaparım

git auto
git push

Ve en azından taahhüdün hangi cihazdan yapıldığını biliyorum.


1

En basit çözümü buldum:

git commit -am'save'

Hepsi bu, git commit mesajı şeyler etrafında çalışacaksınız.

Hatta daha basit hale getirmek için bu övgüyü bir bash veya başka şeylere kaydedebilirsiniz.

Ekip üyelerimiz her zaman bu mesajları yazar, ancak neredeyse hiç kimse bu mesajı bir daha görmeyecek.

Taahhüt mesajı, en azından ekibimizde zaman öldürücü bir mesajdır, bu yüzden onu görmezden geliyoruz.


-5

Taahhüt mesajı, her zaman takip edilmesi gereken en iyi uygulamadır. Tek geliştirici siz değilseniz ve bu yakın zamanda değişmeyecek.

git commit -a -m 'asdfasdfadsfsdf'

bu bir tür şaka. Ancak küçük taahhütler için değişiklikleri heroku'ya göndermek için YAPMANIZ GEREKİR (örneğin), tek geliştirici durumunda sorun yok.
coloradoblue
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.