Apa perbedaan antara git dan git?

134

Keduanya git amdan git applydapat digunakan untuk menerapkan tambalan. Saya gagal melihat perbedaannya. Saya melihat perbedaan sekarang: git amsecara otomatis melakukan sementara git applyhanya menyentuh file tetapi tidak membuat komit. Apakah itu satu-satunya perbedaan?

Christoph
sumber
11
amdapat dianggap sebagai singkatan dari Apply Mail...
Philip Oakley

Jawaban:

144

Baik input dan output berbeda:

  • git applymengambil tambalan (misalnya output dari git diff) dan menerapkannya ke direktori kerja (atau indeks, jika --indexatau --cacheddigunakan).
  • git ammengambil kotak surat komit yang diformat sebagai pesan email (mis. output git format-patch) dan menerapkannya ke cabang saat ini.

git ammenggunakan di git applybelakang layar , tetapi bekerja lebih banyak sebelum (membaca Maildiratau mbox, dan parsing pesan email) dan setelahnya (membuat komit).

georgebrock
sumber
6
Catatan: git applysepertinya juga menerima git format-patchoutput.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
7
git applyakan bekerja untuk output git format-patchjuga tetapi perubahan tidak akan bertahap dan perlu dilakukan (sehingga menciptakan titik komit yang berbeda dalam indeks mereka diterapkan). Dengan git amAnda akan membawa informasi komit (bersama dengan penulis, dll.) Ke dalam indeks itu diterapkan. git applykemudian untuk menambal repo Anda (buruk), git amdapat mengambil perubahan fitur yang sah dan memasukkannya ke dalam repo Anda (pendekatan yang disukai).
Prasoon Joshi
18

git applyadalah untuk menerapkan perbedaan langsung (misalnya dari git diff) sedangkan git amuntuk menerapkan tambalan dan urutan tambalan dari email, baik format mbox atau Maildir dan merupakan "kebalikan" dari git format-patch. git ammencoba mengekstrak pesan komit dan detail pembuat dari pesan email yang karenanya dapat membuat komitmen.

CB Bailey
sumber
9

Dengan git amAnda menerapkan tambalan jadi jika Anda menggunakan git statusAnda tidak akan melihat perubahan lokal.

git applymemungkinkan Anda untuk membuat perubahan pada file sumber seolah-olah Anda sedang menulis kode sendiri, akibatnya git statusdan git diffakan menampilkan perubahan yang dibuat dalam tambalan yang telah Anda terapkan, maka Anda dapat memperbaiki / menambahkan lebih banyak perubahan dan mengirimkannya bersama sebagai satu tambalan baru .

0x90
sumber