Saya sudah mulai berkolaborasi dengan beberapa teman di sebuah proyek & mereka menggunakan repositori heroku git.
Saya mengkloning repositori beberapa hari yang lalu dan mereka telah membuat beberapa perubahan jadi saya mencoba untuk mendapatkan pembaruan terbaru
Saya menjalankan git pull --rebase
perintah seperti yang dinyatakan di sini (Apakah ini cara yang tepat untuk melakukannya?): Https://devcenter.heroku.com/articles/sharing#merging-code-changes
Saya mendapatkan kesalahan berikut:
$ git pull --rebase
Cannot pull with rebase: You have unstaged changes.
Please commit or stash them.
Dugaan saya adalah bahwa saya mengotak-atik kode dan sekarang ingin saya melakukan atau membuang (apakah itu artinya simpanan?) Perubahan. Inikah yang terjadi? Jika ini masalahnya, saya ingin membuang perubahan yang mungkin telah saya buat dan hanya mendapatkan kode yang diperbarui dari repositori git.
Adakah yang bisa saya lakukan?
git push -f
Jika Anda ingin menjaga perubahan kerja Anda saat melakukan rebase, Anda dapat menggunakan
--autostash
. Dari dokumentasi :Sebagai contoh:
sumber
git config --global rebase.autoStash true
maka Anda tidak perlu melewati sakelar.rebase.autostash
tersedia dari 2.6).git rebase --interactive
!Menarik dengan rebase adalah praktik yang baik secara umum.
Namun Anda tidak dapat melakukan itu jika indeks Anda tidak bersih, yaitu Anda telah membuat perubahan yang belum dilakukan.
Anda dapat melakukan ini untuk mengatasi, dengan asumsi Anda ingin menyimpan perubahan Anda:
git stash
git stash apply stash@{0}
atau yang lebih sederhanagit stash pop
sumber
git stash pop
dapat menerapkan perubahan yang disimpan terakhir dan untuk menghindari menghafal lebih lamaapply stash@{0}
..bashrc
(atau apa pun yang Anda gunakan):alias stashpull='git stash; git pull; git stash pop'
Pertama mulai dengan a
git status
Lihat apakah Anda memiliki perubahan yang tertunda. Untuk membuangnya, jalankan
sumber
Ini bekerja untuk saya:
sumber
Anda selalu bisa melakukannya
dan Anda tidak akan mendapatkan (a) tidak ada perubahan jika Anda memiliki perubahan yang tidak dikomit yang bertentangan dengan perubahan hulu atau (b) efek yang sama dengan simpanan / tarik / terapkan: rebase untuk menempatkan Anda pada perubahan terbaru dari HEAD dan perubahan yang tidak dikomit Anda dibiarkan dengan adanya.
sumber
Ketika perubahan yang tidak dipentaskan adalah karena git berusaha untuk memperbaiki konvensi eol pada file (seperti yang selalu terjadi pada saya), tidak ada jumlah simpanan atau check-out atau pengaturan ulang yang akan membuatnya hilang.
Namun, jika maksud adalah benar-benar untuk rebase dan mengabaikan area stage berubah, maka apa yang saya lakukan adalah menghapus cabang lokal kemudian memeriksanya lagi.
Voila! Saya belum gagal.
sumber
Jika Anda ingin menyimpan perubahan Anda secara otomatis dan melepaskannya untuk setiap rebase, Anda dapat melakukan ini:
sumber
--autostash
ketika itu hanya bisa ... otomatis?