Git commit membuka file teks kosong, untuk apa?


93

Di semua tutorial Git yang saya baca, mereka mengatakan bahwa Anda dapat melakukan:

git init
git add .
git commit

Ketika saya melakukan itu saya mendapatkan file teks besar terbuka. Tidak ada tutorial yang membahas hal ini, jadi saya tidak tahu apa yang harus dilakukan dengan file tersebut atau apa yang harus dimasukkan jika ada.

Jawaban:


124

Anda dimaksudkan untuk meletakkan pesan komit di file teks ini, lalu simpan dan keluar.

Anda dapat mengubah editor teks default yang digunakan git dengan perintah ini:

git config --global core.editor "nano"

Anda harus mengubah nano ke perintah apa pun yang biasanya membuka editor teks Anda.


15
Apakah Anda tidak perlu menambahkan --globaluntuk mengubah default?
Znarkus

4
@Untuklah poin yang bagus. Lihat di sini untuk info lebih lanjut. Pada dasarnya, jawaban yang diberikan hanya akan mengubah pengaturan untuk proyek saat ini, sedangkan --globalmengubahnya untuk pengguna saat ini, dan --systemmengubahnya untuk semua orang di komputer itu.
Matt Fenwick

24
Meskipun jawaban ini menyimpan informasi yang baik, namun tidak menjawab pertanyaan yang sebenarnya.
Adrian Schmidt

5
Saya tidak melihat mengapa ini memiliki suara positif dua kali lipat karena beberapa jawaban yang SEBENARNYA menjawab pertanyaan itu. Ini tidak.
Johan

2
@ Johan, Anda tidak salah, tetapi karena tersandung pada ini, saya menemukan jawaban ini sangat membantu. Jadi saya memilihnya.
Danation

65

Seperti yang disebutkan oleh Ben Collins , tanpa -m "..."argumen untuk mengetik komit sebaris (yang umumnya merupakan ide yang buruk karena mendorong Anda untuk singkat), "file teks besar" ini yang dibuka adalah jendela untuk mengetik pesan komit .

Biasanya disarankan untuk menulis ringkasan di baris pertama, melewati satu baris, dan kemudian menulis catatan yang lebih detail di bawahnya; ini membantu program yang melakukan hal-hal seperti mengirim email ke pesan komit dengan baris subjek yang sesuai dan daftar lengkap perubahan yang dibuat di bagian isi.

Alih-alih mengubah EDITORvariabel shell, Anda juga dapat mengubah editor yang digunakan dengan menambahkan baris tambahan di ~/.gitconfigfile Anda :

[core]
    editor = emacs
    excludesfile = /Users/will/.gitignore

Baris kedua sebenarnya tidak ada hubungannya dengan masalah Anda, tetapi saya merasa sangat berguna sehingga saya dapat mengisi ~/.gitignorefile saya dengan semua tipe file yang saya tahu saya tidak akan pernah, ingin berkomitmen ke repositori.


36

File teks yang sedang dibuka adalah ringkasan dari operasi komit saat ini. Git commit menurunkan Anda ke file ini sehingga Anda dapat menambahkan pesan komit di bagian atas file. Setelah Anda menambahkan pesan Anda, simpan dan keluar dari file ini.

Ada juga tombol "-m msg" pada perintah ini yang memungkinkan Anda menambahkan pesan komit pada baris perintah.


Hai Lou, saya juga pemula di GIt. Saya pikir setelah saya ada atau menulis dan ada file teks, git tidak benar-benar melakukan pementasan dan pesan komit yang baru saja saya tulis. Jadi, apa artinya menambahkan pesan ke file teks ini jika saya tidak dapat membuat komit setelah menulis dan keluar. (tolong koreksi saya jika saya salah, terima kasih banyak)
SLN

@SLN Skenario yang Anda uraikan tidak terlalu jelas. Saya akan mengambil tebakan dan menyarankan bahwa mungkin Anda belum membuat file apa pun untuk komit, oleh karena itu upaya Anda untuk berkomitmen tidak melakukan apa pun. Gunakan "git add" ke file tahap pertama yang ingin Anda komit, lalu "git commit" untuk melakukan komit sebenarnya.
Lou

15

Jika Anda menggunakan Mac OS X dan menggunakan BBEdit, Anda dapat mengatur ini sebagai editor pilihan untuk pesan komit:

git config --global core.editor "bbedit -w"

Setelah selesai mengedit, simpan dan tutup file dan git akan menggunakannya untuk komentar.


15

Dengan asumsi bahwa editor Anda default ke vi / vim, Anda dapat keluar dari editor pesan komit dengan mengetik:

:x

yang akan menyimpan dan keluar dari file pesan komit. Kemudian Anda akan kembali ke bagian perintah git normal.

Perintah vi lainnya:
http://www.lagmonster.org/docs/vi.html


9
Jika Anda seperti saya, Anda berada dalam mode sisip / ganti (yaitu mengetik pesan komit). Jika demikian, Anda harus menekan escuntuk masuk ke mode perintah sebelum mengetik :xuntuk menyimpan dan keluar.
Martin Carney

1
Dengan asumsi tentu saja editornya default ke vi / vim. Ini tidak akan benar untuk semua orang. Tentunya bukan untuk pengguna emacs ini;)
haziz

Ini menyelamatkan saya dari banyak masalah. Terima kasih banyak
Danation

12

Seperti yang telah dikatakan semua orang, ini hanya tempat Anda menambahkan komentar komit Anda - tetapi untuk beberapa hal ini mungkin masih membingungkan terutama jika Anda belum mengkonfigurasi pengaturan editor Anda, dan Anda tidak mengetahui apa itu VI : maka Anda mungkin akan terkejut , karena Anda akan mengira Anda masih dalam GIT-Bash

Dalam hal ini Anda sebenarnya berada dalam editor teks dengan beberapa cara menarik untuk menangani berbagai hal dan rangkaian perintah ini dapat membantu Anda sehingga Anda dapat melewati komit pertama Anda dan kemudian mengonfigurasi editor yang Anda kenal atau gunakan sebagai kesempatan untuk mempelajari cara menggunakannya.


8
Saya tahu berakhir di vi selalu mengejutkan saya :)
Will Robertson

1
Segalanya menjadi jauh lebih masuk akal sekarang. +1
Matt Ellen

11

The -mpilihan untuk melakukan memungkinkan Anda memasukkan pesan komit pada baris perintah:

git commit -m "my first commit"

7

Saat Anda membuat komit baru, git menjalankan editor teks dan menulis beberapa hal ke dalamnya.

Menggunakan editor teks ini, tujuannya adalah agar Anda menulis pesan komit yang akan dikaitkan dengan komit yang Anda buat sebelumnya.

Setelah Anda selesai melakukannya, simpan dan keluar dari editor teks. Git akan menggunakan apa yang Anda tulis sebagai pesan komit.

Pesan komit memiliki struktur tertentu, yang dijelaskan sebagai berikut:

Baris pertama dari pesan komit digunakan sebagai tajuk pesan (atau judul). Panjang yang disukai dari header komit kurang dari 40 karakter, karena ini adalah jumlah karakter yang ditampilkan github pada tab Komit dari repositori tertentu sebelum memotongnya, yang menurut beberapa orang menjengkelkan.

Saat membuat tajuk, penggunaan kata kerja present tense yang dikapitalisasi untuk kata pertama adalah praktik umum, meskipun sama sekali tidak diperlukan.

Satu baris baru menggambarkan tajuk dan isi pesan.

Tubuh bisa terdiri dari apapun yang Anda suka. Tinjauan tentang perubahan yang diperkenalkan oleh komit Anda adalah wajar. Beberapa aplikasi pihak ketiga menggunakan info termasuk badan pesan komit untuk memicu berbagai jenis pengait (Saya berpikir Gerrit dan Pivotal Tracker, untuk menyebutkan dua).

Inilah contoh singkat dan manis. Sebuah memimpin #menunjukkan komentar.

Gitignore index.pyc

Ignore gunicorn generated binary file
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch dev
# Your branch is ahead of 'origin/dev' by 10 commits.
#   (use "git push" to publish your local commits)
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   .gitignore
#

Di sini, Tuan Torvalds berpendapat tentang apa yang membuat komitmen yang baik.

Dan di sini Tpope juga melakukannya.

Seperti yang dinyatakan dalam beberapa jawaban lain, mengubah editor default adalah satu baris pada baris perintah.

Untuk preferensi saya:

git config --global core.editor "vim"

2
ini harus menjadi jawaban yang diterima untuk pertanyaan itu.
mppfiles

6

Coba Escape lalu ZZ, setelah Anda selesai mengetik pesan Anda. Seperti yang dikatakan orang lain ketika Anda menjalankan perintah komit itu sebenarnya menjalankan editor teks untuk memasukkan pesan. Dalam kasus saya (OS X) itu adalah VI, yang saya temukan setelah beberapa penggalian. Dalam hal ini, tekan Escape untuk masuk ke mode "perintah" (sebagai lawan dari mode INSERT) masukkan ZZ. Saya yakin ada cara lain untuk menyelesaikan tugas tetapi itu berhasil untuk saya. Karena tidak pernah menggunakan VI atau emacs, hal itu tidak terlihat oleh saya dan tidak disebutkan dalam panduan pemula mana pun yang saya gunakan. Semoga ini membantu.


4

The git commitperintah akan membuka editor yang ditentukan dalam EDITORvariabel lingkungan sehingga Anda dapat memasukkan komit komentar. Pada sistem Linux atau BSD, ini harus vi secara default, meskipun editor mana pun dapat berfungsi.

Cukup masukkan komentar Anda dan simpan file.


2

Saya bingung karena saya terus mencoba memasukkan nama file setelah: w di VIM. Itu tidak memicu komit. Sebaliknya saya terus mendapatkan pesan "Membatalkan komit karena pesan komit kosong." Jangan beri nama file setelah: w. : w menyimpan file ke .git / COMMIT_EDITMSG secara default. Kemudian: q keluar untuk menyelesaikan komit. Anda bisa melihat hasilnya dengan git log.


atau Anda bisa menggunakan: x untuk menyimpan dan keluar.
TJ Ellis

2

Sekarang saya telah mengubah editor saya menjadi emacs, semuanya berfungsi dengan baik.

Tetapi sebelum saya menyetel ini, "git commit -a" membuka gedit, tetapi juga langsung diakhiri dengan "Membatalkan komit karena pesan komit kosong.". Menyimpan file dari gedit tidak berpengaruh. Menyetel editor secara eksplisit dengan "git config --global core.editor" gedit "" memiliki hasil yang sama.

Tidak ada yang salah dengan emacs, tetapi karena penasaran mengapa ini tidak berfungsi dengan gedit, dan adakah cara untuk membuatnya berfungsi?

Terima kasih.


jika gedit sudah berjalan, melakukan "gedit file.txt" akan membuka file di jendela yang ada dan segera kembali ... Anda harus memposting ini sebagai pertanyaan sebenarnya, khususnya tentang penggunaan gedit dengan git.
araqnid

6
mengalami ini juga. Anda dapat memperbaikinya dengan mengatur gedit agar berjalan dalam mode 'mandiri':git config --global core.editor "gedit -s"
brittohalloran

2

Bagi Anda yang menggunakan OS XI merasa perintah ini berfungsi dengan baik:
git config --global core.editor "open -t -W"

yang akan memaksa git untuk membuka editor teks default (textedit dalam kasus saya) dan kemudian menunggu Anda keluar dari aplikasi. Ingatlah bahwa Anda perlu "Simpan" dan kemudian "Keluar" textedit sebelum komit diproses. Ada beberapa perintah lain yang dapat Anda mainkan seperti yang dijelaskan di halaman ini:

Perpustakaan Pengembang Apple - Buka Perintah

Anda juga dapat mencoba git config --global core.editor "open -e -W"jika Anda ingin git selalu membuka textedit apa pun editor defaultnya.


1

Ya, pastikan Anda memiliki set editor yang masuk akal. Tidak yakin apa editor default Anda, tetapi jika, seperti saya, itu nano (akan mengatakan di suatu tempat di dekat bagian atas setelah Anda mengetik komit) Anda hanya perlu mengetikkan komentar dan kemudian tekan Ctrl-x untuk menyelesaikan. Lalu tekan y, diikuti dengan enter untuk menegaskan komit.

Juga, jika Anda ingin melihat daftar sederhana dari file-file yang akan Anda lakukan daripada daftar diff yang besar sebelumnya, coba

git diff --name-only

1

Saat melakukan kontrol revisi, Anda harus selalu menjelaskan apa saja perubahan yang Anda buat. Biasanya pertama kali Anda memiliki komentar seperti "Komitmen Awal".

Namun dalam jangka panjang Anda ingin membuat komentar yang bagus untuk setiap komit. Anda akan menginginkan sesuatu dari formulir:

Menambahkan fitur eksperimental x.

X akan meningkatkan performa fitur Y dalam kondisi Z. Jika Anda perlu X mengaktifkannya dengan sakelar -x atau --feature-eks. Ini membahas permintaan fitur # 1138.


1

Menjadi baru di Terminal juga, "Escape dan kemudian ZZ" berhasil untuk saya, saya telah mengalami masalah ini selama berbulan-bulan dan juga tidak dapat menemukan jalan keluarnya.

Terima kasih TheGeoff atas saran sederhana Anda!


0

Berikut ini mungkin cara termudah untuk melakukan semua perubahan:

git commit -a -m "Type your commit message here..."

Tentu saja ada cara yang lebih mendetail untuk membuat komitmen, tetapi itu akan membantu Anda memulai.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.