Cara membuka komit git lokal

Masalah saya adalah saya mengubah file, misalnya: README, menambahkan baris baru "ini untuk jalur tes saya" dan menyimpan file, lalu saya merilis perintah berikut

  git status # On branch master # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: README # no changes added to commit (use "git add" and/or "git commit -a") git add README git commit -a -m 'To add new line to readme' 

Saya tidak menekan kode pada github, sekarang saya ingin membatalkan komit ini.

Untuk ini, saya menggunakan

  git reset --hard HEAD~1 

Tapi saya kehi>Apakah ada cara untuk menyimpan konten dan membatalkan komit lokal saya?

560
31 янв. ditetapkan oleh Amal Kumar S pada 31 Januari 2011-01-31 15:14 '11 pada 15:14 2011-01-31 15:14
@ 7 jawaban

Cukup gunakan git reset tanpa tanda --hard :

 git reset HEAD~1 

PS: Pada sistem berbasis Unix, Anda bisa menggunakan HEAD^ , yaitu HEAD~1 . Di Windows, HEAD^ tidak akan berfungsi, karena ^ menandakan kelanjutan dari baris. Jadi, apakah command prompt Anda hanya menanyakan More? .

1085
31 янв. Jawabannya diberikan Koraktor 31 Januari 2011-01-31 15:17 '11 pada 15:17 2011-01-31 15:17

Gunakan --soft sebagai ganti --hard flag:

 git reset --soft HEAD^ 
143
10 авг. Jawabannya diberikan TpED 10 Agustus. 2012-08-10 11:02 '12 pada 11:02 2012-08-10 11:02

Jika Anda berada di tengah komit (mis. Sudah ada di editor), Anda dapat membatalkannya dengan menghapus semua baris di atas # pertama. Ini akan mengganggu komit.

Dengan demikian, Anda dapat menghapus semua baris sehingga pesan komit kosong, dan kemudian menyimpan file:

2019

Anda dapat memberi tahu Git apa yang harus dilakukan dengan indeks Anda (kumpulan file yang akan menjadi komit berikutnya) dan direktori kerja ketika melakukan git reset menggunakan salah satu parameter:

--soft : hanya komit yang akan disetel u>

--mixed : ini akan mengatur u>

--hard : me-reset semua (komit, indeks, direktori kerja) sesuai dengan header.

Dalam kasus Anda, saya akan menggunakan git reset --soft untuk menyimpan perubahan yang dimodifikasi pada indeks dan direktori kerja. Pastikan untuk memeriksa ini untuk penjelasan yang lebih rinci.

5
29 мая '18 в 13:22 2018-05-29 13:22 jawabannya diberikan oleh Nesha Zoric pada 29 Mei '18 jam 1:22 siang 2018-05-29 13:22

Hal pertama yang perlu Anda lakukan adalah mencari tahu apakah Anda ingin menyimpan perubahan lokal sebelum menghapus pesan komit.

Gunakan git log untuk menampilkan pesan komit saat ini, dan kemudian temukan commit_id sebelum Anda ingin menghapus, bukan hanya yang ingin Anda hapus.

Jika Anda ingin menyimpan file yang dimodifikasi secara lokal, cukup hapus pesan komit:

git reset --soft commit_id

Jika Anda ingin menghapus semua file yang dimodifikasi secara lokal dan pesan komit:

git reset --hard commit_id

Apa perbedaannya lunak dan keras

2
02 сент. jawabannya diberikan mistdon 02 sept . 2018-09-02 06:43 '18 pada 6:43 2018-09-02 06:43

Gunakan perintah di bawah ini: $ git reset HEAD ~ 1 Setelah itu, Anda juga dapat melihat file yang dikembalikan, seperti yang ditunjukkan di bawah ini.

Perubahan yang tidak terdefinisi setelah reset: M application / config / config.php M application / config / database.php

1
14 мая '18 в 16:25 2018-05-14 16:25 jawabannya diberikan Omkar 14 Mei '18 pukul 16:25 2018-05-14 16:25

Perbedaan antara git reset --mixed, --soft dan --hard

Prasyarat: ketika perubahan dibuat ke file yang ada di repositori Anda, perubahan ini pada awalnya dianggap tidak ditentukan. Untuk mengkomit perubahan, Anda harus menyiapkannya, yang berarti menambahkannya ke indeks menggunakan git add . Selama operasi komit, file yang ditempatkan ditambahkan ke indeks.

Mari kita ambil contoh:

 - A - B - C (master) 

HEAD menunjukkan C dan indeks sesuai dengan C

--soft

  • Ketika kita melakukan git reset --soft B untuk menghapus commit C dan arahkan main / HEAD ke B.
  • Master / HEAD sekarang akan menunjuk ke B, tetapi indeks masih berubah dari C.
  • Saat menjalankan git status Anda dapat melihat file yang diindeks dalam komit C sebagai bertahap .
  • Menjalankan git commit pada titik ini akan membuat komit baru dengan perubahan yang sama seperti pada C

--Campuran

  • Jalankan git reset --mixed B
  • Saat mengeksekusi, master / HEAD akan menunjuk ke B, dan indeks juga berubah untuk mencocokkan B karena flag campuran yang digunakan.
  • Jika saat ini kita menjalankan git commit, tidak ada yang akan terjadi, karena indeks sesuai dengan KEPALA .
  • Kami masih memiliki perubahan dalam direktori kerja, tetapi karena mereka tidak ada dalam indeks, status git menunjukkan mereka sebagai tidak tertangkap .
  • Untuk memperbaikinya, Anda perlu git add dan kemudian memperbaikinya seperti biasa.

--hard

  • Jalankan git reset --hard B
  • Saat mengeksekusi master / HEAD akan menunjuk ke B dan mengubah direktori kerja Anda
  • Perubahan ditambahkan ke C dan semua perubahan yang tidak dikomit akan dihapus .
  • File dalam copy pekerjaan akan sesuai dengan komit B, ini akan menyebabkan hi>

Saya berharap bahwa membandingkan flag yang tersedia untuk digunakan dengan perintah git reset akan membantu seseorang menggunakannya dengan bijak. Hubungi mereka untuk informasi lebih lanjut, tautan1 tautan2

0
18 янв. Jawaban diberikan oleh Keshan Nageswaran 18 Jan 2019-01-18 19:48 '19 pada 19:48 2019-01-18 19:48

Pertanyaan lain tentang tag atau Ajukan Pertanyaan