Git: tambahkan vs dorong vs komit

115

Apa perbedaan antara git add, pushdan commit?

Sedikit bingung datang dari SVN, di mana "update" akan 'menambahkan' barang, dan commit melakukan "push" dan akan 'menambahkan' juga

Ada semua fungsi berbeda di dalam git. Berharap penjelasan dari pengalaman Anda.

CQM
sumber
2
Buku
iruediger

Jawaban:

163
  1. git addmenambahkan file Anda yang telah dimodifikasi ke antrian untuk dikerjakan nanti . File tidak dikomit

  2. git commitmelakukan file yang telah ditambahkan dan membuat revisi baru dengan log ... Jika Anda tidak menambahkan file apa pun, git tidak akan melakukan apa pun. Anda dapat menggabungkan kedua tindakan tersebut dengangit commit -a

  3. git push mendorong perubahan Anda ke repositori jarak jauh.

Gambar dari lembar contekan git ini memberikan gambaran yang bagus tentang alur kerja

masukkan deskripsi gambar di sini

git addtidak pada gambar karena cara yang disarankan untuk melakukan adalah gabungan git commit -a, tetapi Anda dapat menambahkan secara mental git addke blok perubahan untuk memahami alirannya.

Terakhir, alasan mengapa pushperintah terpisah adalah karena gitfilosofi. gitadalah sistem versi terdistribusi, dan direktori kerja lokal Anda adalah tempat penyimpanan Anda! Semua perubahan yang Anda lakukan akan langsung tercermin dan direkam. pushhanya digunakan untuk memperbarui repo jarak jauh (yang mungkin Anda bagikan dengan orang lain) ketika Anda selesai dengan apa pun yang sedang Anda kerjakan. Ini adalah cara yang rapi untuk bekerja dan menyimpan perubahan secara lokal (tanpa overhead jaringan) dan memperbaruinya hanya saat Anda mau, bukan setiap komit. Ini secara tidak langsung menghasilkan komit / percabangan dll yang lebih mudah (mengapa tidak, bukan? Berapa biayanya?) Yang mengarah ke lebih banyak save point, tanpa mengacaukan repositori.

abcd
sumber
Jadi apakah push komit secara lokal dan kemudian dorong ke server jarak jauh atau apakah seseorang harus berkomitmen terlebih dahulu kemudian mendorong untuk mendapatkan pekerjaan ke repositori jarak jauh?
Andrew S
2
Pertama Anda harus mengkomit ("git komit") yang memperbarui repositori lokal Anda (alias di mesin lokal Anda) kemudian Anda harus mendorong ke server ("git push") yang memperbarui repositori jarak jauh (di server github misalnya. )
Romain
Saya akan menyukai fungsi "tambahkan secara mental" di Git!
Junchen Liu
1
Dianjurkan untuk tidak hanya sering berkomitmen, tetapi juga sering mendorong. Ini melindungi pekerjaan Anda saat hard drive Anda rusak.
CCC
86

git add memilih perubahan

git commit catatan berubah secara LOKAL

git push berbagi perubahan

Dustin
sumber
22
  • git add menambahkan file ke indeks Git, yang merupakan area pementasan untuk objek yang disiapkan untuk dikomit.
  • git commitmelakukan file dalam indeks ke repositori, git commit -amerupakan jalan pintas untuk menambahkan semua file terlacak yang dimodifikasi ke indeks terlebih dahulu.
  • git push mengirim semua perubahan yang tertunda ke repositori jarak jauh tempat cabang Anda dipetakan (mis. di GitHub).

Untuk memahami Git, Anda perlu menginvestasikan lebih banyak upaya daripada hanya melihat-lihat dokumentasi, tetapi itu pasti sepadan. Hanya saja, jangan mencoba memetakan perintah Git secara langsung ke Subversion, karena kebanyakan dari mereka tidak memiliki mitra langsung.

Adam Byrtek
sumber
Seseorang harus menjelaskan perbedaan antara github lokal dan jarak jauh. Apa yang Anda miliki di local dan remte. Ini adalah kunci yang perlu Anda temukan
Mehdi Amrollahi
12

Saya bingung tentang apa sebenarnya 'tambah' itu. Saya baru saja membaca paragraf yang sangat mencerahkan dari buku Git Pro yang ingin saya tambahkan di sini, karena menjelaskan banyak hal

“Ternyata Git mementaskan file persis seperti saat Anda menjalankan perintah git add. Jika Anda komit sekarang, versi benchmark.rb seperti saat terakhir Anda menjalankan perintah git add adalah bagaimana perintah itu akan masuk ke komit, bukan versi file seperti yang terlihat di direktori kerja Anda saat Anda menjalankan git komit. Jika Anda mengubah file setelah menjalankan git add, Anda harus menjalankan git add lagi untuk membuat versi file terbaru: ”

Kutipan Dari: Chacon, Scott. Pro Git. Springer, 2009-08-19T00: 00: 00 + 00: 00. iBooks. Materi ini mungkin dilindungi oleh hak cipta.


sumber
7

add memberi tahu git untuk mulai melacak file.

komit melakukan perubahan Anda saat ini pada repositori lokal Anda

push mendorong repo lokal Anda ke atas.

hvgotcodes
sumber
5

PDF yang sangat bagus tentang banyak rahasia GIT.

Add sama dengan svn's add (terkadang terkadang digunakan untuk menandai file terselesaikan).

Komit juga sama dengan svn, tetapi komit perubahan ke repositori lokal Anda.

lord_t
sumber
2
Sekarang saya harus mencari svn add dan commit. Ketakutan besar saya: dokumen mereka akan mengarahkan saya ke git add dan commit. Dan lord_t adalah penulis dokumen tersebut.
eric
Penulis soal telah memiliki pengetahuan tentang SVN, jadi saya berasumsi dia tahu perintah svn.
lord_t
0

add -in git digunakan untuk memberi tahu git file mana yang ingin kita komit, ini meletakkan file ke area pementasan

commit- in git digunakan untuk menyimpan file ke mesin lokal sehingga jika kami membuat perubahan atau bahkan menghapus file, kami masih dapat memulihkan file berkomitmen kami

push - jika kita memasukkan file kita ke mesin lokal, file tersebut masih cenderung hilang jika mesin lokal kita hilang, rusak, dll, untuk menjaga file kita tetap aman atau untuk berbagi file kita biasanya kita ingin menyimpan file kita di remote repositori seperti Github. Untuk menghemat repositori jarak jauh kami menggunakan push

contoh Pementasan file bernama index.html git add index.html

Mengkomit file yang dipentaskan git commit -m 'nama komit Anda'

Mendorong file ke master asal Github git push

Herbert
sumber