Apa perbedaan antara "git commit" dan "git push"?

895

Dalam tutorial Git yang saya alami, git commitdigunakan untuk menyimpan perubahan yang telah Anda buat.

Apa yang git pushdigunakan untuk itu?

ben
sumber
83
Anda juga dapat melihat "Git cheatsheet" yang banyak membantu saya untuk memahami konsep: ndpsoftware.com/git-cheatsheet.html
adriendenat
Berikut lembar contekan lain: atlassian.com/git/tutorials/atlassian-git-cheatsheet
Kolob Canyon
2
tidak ada jawaban karena sudah disediakan. hanya sebuah pengamatan. Menurut saya komit harus benar-benar disebut save dan push harus disebut komit. Masalah skenario penamaan klasik.
dublinx

Jawaban:

1619

Pada dasarnya git commit" mencatat perubahan ke repositori " sementara git push" memperbarui referensi jarak jauh bersama dengan objek terkait ". Jadi yang pertama digunakan sehubungan dengan repositori lokal Anda, sedangkan yang terakhir digunakan untuk berinteraksi dengan repositori jarak jauh.

Ini adalah gambar yang bagus dari Oliver Steele , yang menjelaskan model git dan perintahnya:

Git perintah transport data

Baca lebih lanjut tentang git pushdan git pulldi GitReady.com (artikel yang saya referensikan dulu)

tanascius
sumber
20
Berikut adalah sumber aslinya: osteele.com/archives/2008/05/my-git-workflow dengan gambar lain dari alur kerja git
tanascius
9
@ben github hanyalah satu solusi untuk meng-host repositori publik Anda, "on-the-cloud", untuk git pushdigunakan. Pada kenyataannya, tujuan dari repositori git git pushdapat berupa apa saja . Itu bisa di hard drive lokal Anda sendiri di direktori lain ( git remote add clone ~/proj/clone.git; git push clone masteratau git push ~/proj/clone.git master, misalnya), atau repositori git yang dilayani oleh host Anda sendiri .
Santa
2
jadi ... apakah Anda perlu mendorong dulu atau melakukan dulu?
Kokodoko
5
@Piet dimulai di ruang kerja Anda, tempat Anda memodifikasi file. Kemudian Anda menambahkan mereka ke indeks, komit mereka ke repositori lokal dan - akhirnya - dorong mereka ke repositori jarak jauh
tanascius
2
@ Mr.Hyde tidak, itu tidak mungkin. Git sebagai kontrol versi terdistribusi mengharuskan Anda memiliki salinan lokal.
tanascius
215

commit : menambahkan perubahan ke repositori lokal

push : untuk mentransfer komit terakhir ke server jarak jauh

TheHippo
sumber
56

Yah, pada dasarnya git commit menempatkan perubahan Anda ke dalam repo lokal Anda, sementara git push mengirim perubahan Anda ke lokasi yang jauh.

markovuksanovic
sumber
9
ini adalah hari kedua saya menggunakan GIT. Ketika saya melihat jawaban di atas, saya masih belum mendapatkan gambaran yang jelas, tetapi jawaban Anda hanya berhasil. Terima kasih.
Bopha
1
Apakah git pushmengunggah file yang sebenarnya diperbarui atau beberapa file "diff" khusus?
multigoodverse
27

git pushdigunakan untuk menambahkan komit yang telah Anda lakukan pada repositori lokal ke repositori jarak jauh - bersama-sama dengannya git pull, memungkinkan orang untuk berkolaborasi.

Michael Borgwardt
sumber
26

Karena git adalah sistem kontrol versi terdistribusi, perbedaannya adalah bahwa komit akan melakukan perubahan pada repositori lokal Anda, sedangkan push akan mendorong perubahan hingga repo jarak jauh.

Justin Ethier
sumber
19

Komit : Snapshot | Changeset | Rekam Riwayat | Versi | 'Save-as' dari repositori. Git repositori = seri (pohon) dari commit .

Repositori lokal : repositori di komputer Anda.

Repositori jarak jauh : repositori di server ( Github ).

git commit: Tambah baru komit (terakhir komit + dipentaskan modifikasi) ke lokal repositori. (Semua komit disimpan dalam /.git)

git push, git pull: Menyinkronkan repositori lokal dengan repositori jarak jauh yang terkait . push- terapkan perubahan dari lokal ke jarak jauh , pull- terapkan perubahan dari jarak jauh ke lokal .

xged
sumber
11

git commitrekam perubahan Anda ke repositori lokal .

git push memperbarui yang terpencil repositori dengan perubahan lokal Anda.

Naresh
sumber
20
Jawaban Anda pada dasarnya identik dengan jawaban ini , tidak menambahkan sesuatu yang baru.
7

Tiga hal yang perlu diperhatikan:

1) Direktori Kerja ----- folder tempat file kode kita ada

2) Repositori Lokal ------ Ini ada di dalam sistem kami. Ketika kita pertama kali membuat perintah COMMIT maka Repositori Lokal ini dibuat. di tempat yang sama dengan direktori kerja kami,
file Checkit (.git) dibuat.
Setelah itu ketika kita melakukan commit, ini akan menyimpan perubahan yang kita buat dalam file Direktori Kerja ke Repositori lokal (.git)

3) Repositori Jarak Jauh ----- Ini terletak di luar sistem kami seperti pada server yang berlokasi di mana saja di dunia. seperti github. Ketika kita membuat perintah PUSH maka kode dari repositori lokal kita disimpan ke Repositori Jarak Jauh ini

THURUR PEMBUAT
sumber
7

Hanya ingin menambahkan poin berikut:

Yon tidak dapat mendorong sampai Anda berkomitmen seperti yang kita gunakan git pushuntuk mendorong komit yang dibuat pada cabang lokal Anda ke repositori jarak jauh.

The git pushperintah membutuhkan dua argumen:

Nama jarak jauh, misalnya, origin Nama cabang, misalnya,master

Sebagai contoh:

git push  <REMOTENAME> <BRANCHNAME> 
git push  origin       master
Faisal Shaikh
sumber
4

Analogi yang sangat kasar: jika kita membandingkan git commitdengan menyimpan file yang diedit, maka git pushakan menyalin file itu ke lokasi lain.

Tolong jangan mengambil analogi ini dari konteks ini - melakukan dan mendorong tidak seperti menyimpan file yang diedit dan menyalinnya. Yang mengatakan, itu harus dilakukan demi perbandingan.

amn
sumber
1

Lebih mudah untuk memahami penggunaan perintah git adddan commitjika Anda membayangkan file log dipelihara dalam repositori Anda di Github. File log khas proyek untuk saya mungkin terlihat seperti:

---------------- Day 1 --------------------
Message: Completed Task A
Index of files changed: File1, File2

Message: Completed Task B
Index of files changed: File2, File3
-------------------------------------------

---------------- Day 2 --------------------
Message: Corrected typos
Index of files changed: File3, File1
-------------------------------------------
...
...
...and so on

Saya biasanya memulai hari saya dengan git pullpermintaan dan mengakhirinya dengan git pushpermintaan. Jadi semua yang ada dalam catatan hari sesuai dengan apa yang terjadi di antara mereka. Setiap hari, ada satu atau lebih tugas logis yang saya selesaikan yang memerlukan perubahan beberapa file. File yang diedit selama tugas itu tercantum dalam indeks.

Masing-masing sub tugas ini (Tugas A dan Tugas B di sini) adalah komitmen individu. The git addperintah menambahkan file ke daftar 'Index File Berubah'. Proses ini juga disebut pementasan dan dalam kenyataannya mencatat file yang diubah dan perubahan yang dilakukan. The git commitcatatan perintah / memfinalisasi perubahan dan daftar indeks yang sesuai bersama dengan pesan khusus yang dapat digunakan untuk referensi nanti.

Ingatlah bahwa Anda masih hanya mengubah salinan lokal dari repositori Anda dan bukan yang ada di Github. Setelah ini, hanya ketika Anda melakukan git pushsemua perubahan yang direkam ini, bersama dengan file indeks Anda untuk setiap komit, login di repositori utama (di Github).

Sebagai contoh, untuk mendapatkan entri kedua dalam file log imajiner itu, saya akan melakukan:

git pull
# Make changes to File3 and File4
git add File3 File4
# Verify changes, run tests etc..
git commit -m 'Corrected typos'
git push

Singkatnya, git adddan git commitmemungkinkan Anda memecah perubahan ke repositori utama menjadi sub-perubahan logis sistematis. Seperti yang telah ditunjukkan oleh jawaban dan komentar lainnya, ada banyak manfaat lain yang dapat digunakan. Namun, ini adalah salah satu penggunaan paling umum dan prinsip penggerak di belakang Git menjadi sistem kontrol revisi multi-tahap tidak seperti yang populer lainnya seperti Svn.

Cibin Joseph
sumber
0

git commit tidak lain hanyalah menyimpan perubahan kita secara resmi, untuk setiap commit yang kita berikan pesan commit, setelah kita selesai dengan commit kita bisa mendorongnya ke jarak jauh untuk melihat perubahan kita secara global

yang berarti kita dapat melakukan banyak komit sebelum kita mendorong ke jarak jauh (kita dapat melihat daftar komit terjadi dan pesan juga) git menyimpan setiap komit dengan id komit yang merupakan kode 40 digit

dan saya menggunakan git push hanya ketika saya ingin melihat perubahan saya di remote (Di sana setelah saya akan memeriksa apakah kode saya bekerja di jenkins)

Sai Koti
sumber
-1

Yah, pada dasarnya git commit menempatkan perubahan Anda ke dalam repo lokal Anda, sementara git push mengirim perubahan Anda ke lokasi yang jauh. Karena git adalah sistem kontrol versi terdistribusi, perbedaannya adalah bahwa komit akan melakukan perubahan pada repositori lokal Anda, sedangkan push akan mendorong perubahan hingga repo jarak jauh

sumber Google

http://gitref.org/basic/ tautan ini akan sangat berguna juga

https://git-scm.com/docs/git-commit

oroyo segun
sumber
Jawaban ini menyalin kata demi kata jawaban lain menjadi satu.
Jeffery Opoku-Mensah
Itu tidak membawa sesuatu yang baru untuk semua yang telah dikatakan sebelumnya ...
hublo
-1

dalam istilah awam, git commitadalah langkah sebelum git pushAnda menjalankannya agar berhasil git file Anda ke github.

Murapa Zeal
sumber
-2

git commitadalah untuk mengkomit file yang dipentaskan di repo lokal. git pushadalah untuk maju cepat menggabungkan cabang master sisi lokal dengan cabang master jarak jauh. Tetapi penggabungan tidak selalu berhasil. Jika penolakan muncul, Anda harus melakukannya pullagar Anda berhasil git push.

Marcus Thornton
sumber
Beberapa orang mungkin ingin memaksakan dorongan daripada menarik. Itu tergantung situasi. Bahkan, jika Anda rebared melakukan pada cabang yang tidak Anda bagikan dengan orang lain (bahkan pada repo jarak jauh), maka menarik tentu bukan apa yang ingin Anda lakukan.