git - Branch Anda di depan 'origin / master' dengan 1 komit

107

Saya pemula dalam git dan saya sedang mengerjakan git.

Saya menambahkan beberapa file di git:

git add <file1>
git add <file2>

kemudian saya ingin mendorongnya untuk ditinjau, tetapi secara keliru saya melakukannya

git commit

jadi file yang telah saya ubah tidak perlu ditinjau.
Sekarang jika saya memasukkan perintah:

git status

ia mengatakan

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

Saya ingin mengembalikan komit itu dan saya ingin mendorong file-file itu untuk ditinjau daripada komit. Adakah yang bisa memberi tahu saya bagaimana saya bisa melakukan itu?

sam
sumber
Jika Anda ingin membatalkan komit - lihat pertanyaan serupa .
ДМИТРИЙ МАЛИКОВ
1
Saya tidak tahu apa yang Anda gunakan untuk tinjauan kode. Jawaban sederhana untuk pertanyaan sederhana tentang cara membatalkan komitmen adalahgit reset HEAD^
Anonymoose
saya mengatur ulang HEAD. tetapi kemudian ketika saya mencoba untuk mendorong, kemudian saya mengatakan D file1.py ketika saya mencoba psuh kemudian lagi dikatakan bahwa cabang Anda lebih cepat dari origin / master dengan 1 commit
sam
Apa yang Anda maksud saat mengatakan "Saya ingin mengirim file itu untuk ditinjau"? Apakah Anda ingin orang lain melihat komitmen Anda?
Jake Greene
kode saya akan ditinjau terlebih dahulu dan kemudian akan dikomit. jadi pertama-tama saya ingin mendorong kode untuk ditinjau tetapi secara keliru saya telah berkomitmen
sam

Jawaban:

128

Anda tidak dapat mendorong apa pun yang belum dilakukan. Urutan operasinya adalah:

  1. Lakukan perubahan Anda.
  2. git add - ini tahap perubahan Anda untuk melakukan
  3. git commit - ini melakukan perubahan bertahap Anda secara lokal
  4. git push - ini mendorong perubahan yang Anda lakukan ke remote

Jika Anda mendorong tanpa melakukan, tidak ada yang didorong. Jika Anda berkomitmen tanpa menambahkan, tidak ada yang berkomitmen. Jika Anda menambahkan tanpa melakukan, tidak ada yang terjadi, git hanya mengingat bahwa perubahan yang Anda tambahkan harus dipertimbangkan untuk komit berikut.

Pesan yang Anda lihat (cabang Anda di depan dengan 1 komit) berarti repositori lokal Anda memiliki satu komit yang belum didorong.

Dengan kata lain: adddan commitmerupakan operasi lokal push,, pulldan fetchmerupakan operasi yang berinteraksi dengan remote.

Karena tampaknya ada alur kerja kontrol sumber resmi di tempat Anda bekerja, Anda harus bertanya secara internal bagaimana hal ini harus ditangani.

tdammers
sumber
4
aha ok. jadi itu berarti setelah berkomitmen, saya harus mendorongnya
sam
4
Penjelasan yang bagus - penanya mungkin tidak ingin benar-benar mengembalikan komit, melainkan, minta orang meninjau komit sebelum mendorongnya ke originrepositori. Saya juga merekomendasikan membaca beberapa tutorial / intro untuk git di git-scm.com/documentation
dbr
1
Saat status git saya menyatakan "Cabang Anda di depan 'asal / pengembangan' dengan 1 komit." bagaimana tepatnya cara melihat bahwa file diubah? git diff sepertinya tidak melakukan apa
Tom
Terkadang ada orang lain yang bekerja di sana. Lakukan penarikan sebelum dorongan Anda
Adrian P.
68

git reset HEAD^ --soft (Simpan perubahan Anda, kembali ke komit terakhir)

git reset HEAD^ --hard (Buang perubahan, kembali ke komit terakhir)

Juanito Fatas
sumber
3
Apa pentingnya KEPALA dengan wortel '^'? Saya telah melihatnya ditulis tanpa wortel juga.
Mugen
29

Jika Anda hanya ingin membuang perubahan dan kembali ke komit terakhir (yang ingin Anda bagikan):

git reset --hard HEAD~

Anda mungkin ingin memeriksa untuk memastikan benar-benar menginginkan ini ( git log), karena Anda akan kehilangan semua perubahan.

Alternatif yang lebih aman adalah menjalankan

git reset --soft HEAD~ # reset to the last commit
git stash              # stash all the changes in the working tree 
git push               # push changes 
git stash pop          # get your changes back 
Shep
sumber
21

Saya menyelesaikan ini dengan hanya menjalankan yang sederhana:

git pull

Tidak ada lagi. Sekarang ini menunjukkan:

# On branch master
nothing to commit, working directory clean
karlingen
sumber
Ini dapat menimbulkan masalah jika akan ada lebih dari satu cabang yang dibuat yang tidak diperlukan.
Anil Kumar Arya
1
Anda kembali ke keadaan jarak jauh dan kehilangan pekerjaan terakhir Anda: D
Gucho Ca
13

git setel ulang HEAD ^

maka file yang dimodifikasi akan muncul.

Anda dapat memindahkan file yang dimodifikasi ke cabang baru

menggunakan,

git checkout -b newbranch

git checkout commit -m "files modified"

git push origin newbranch

git checkout master

maka Anda harus berada di cabang yang bersih, dan perubahan Anda harus disimpan di cabang baru. Nanti Anda bisa menggabungkan perubahan ini ke cabang master

OZI
sumber
4
git reset HEAD <file1> <file2> ...

hapus file yang ditentukan dari komit berikutnya

Bnjmn
sumber