Saya mendapatkan yang berikut saat menjalankan git status
Your branch is ahead of 'origin/master' by 3 commits.
Saya telah membaca beberapa posting lain cara untuk memperbaiki ini dijalankan git pull --rebase
tetapi apa sebenarnya rebase, akankah saya kehilangan data atau apakah ini cara sederhana untuk melakukan sinkronisasi dengan master?
git
git-rebase
FluxEngine
sumber
sumber
Jawaban:
Anda mendapatkan pesan itu karena Anda membuat perubahan pada master lokal Anda dan Anda tidak mendorongnya ke jarak jauh. Anda memiliki beberapa cara untuk "menyelesaikannya" dan biasanya tergantung pada bagaimana alur kerja Anda terlihat:
git push origin
anggap saja asalnya adalah remote Andagit reset --hard origin/master
sumber
git diff master origin/master
(mis.git diff local remote
) Untuk melihat perubahan yang akan Anda hapusgit push origin master:branch
yang dikembalikanEverything up-to-date
, setelah itu pesan menjadi di depan oleh x commit hilang.Tidak ada yang diperbaiki. Anda baru saja membuat 3 komitmen dan belum memindahkannya ke cabang jarak jauh. Ada beberapa opsi, tergantung pada apa yang ingin Anda lakukan:
git push
: pindahkan perubahan Anda ke jarak jauh (ini mungkin ditolak jika sudah ada perubahan lain pada jarak jauh)git pull
: dapatkan perubahan (jika ada) dari jarak jauh dan gabungkan ke dalam perubahan Andagit pull --rebase
: seperti di atas, tetapi cobalah untuk mengulang komit Anda di atas perubahan jarak jauhAnda berada dalam situasi klasik (walaupun biasanya Anda tidak akan banyak berkomitmen pada master di sebagian besar alur kerja). Inilah yang biasanya saya lakukan: Tinjau perubahan saya. Mungkin lakukan
git rebase --interactive
untuk melakukan kosmetik pada mereka, jatuhkan yang mengisap, susun ulang agar lebih masuk akal. Sekarang pindahkan ke remotegit push
. Jika ini ditolak karena cabang lokal saya tidak mutakhir:git pull --rebase
untuk mengulang pekerjaan saya di atas perubahan terbaru dangit push
lagi.sumber
your team lead merged to master
? Bukankah Anda mengatakan sudah mendorong untuk menguasai? Apa yang dikandung komit ekstra? Cobalahgit diff origin/master
untuk melihat bagaimana cabang lokal Anda berbeda dari jarak jauh.Gunakan 4 perintah sederhana ini
Langkah 1 :
git checkout <branch_name>
Ini jelas masuk ke cabang itu.
Langkah 2 :
git pull -s recursive -X theirs
Ambil perubahan cabang jarak jauh dan gantikan dengan perubahannya jika timbul konflik. Di sini jika Anda melakukannya,
git status
Anda akan mendapatkan sesuatu seperti ini cabang Anda di depan 'asal / master' dengan 3 komit.Langkah 3 :
git reset --hard origin/<branch_name>
Langkah 4 :
git fetch
Atur ulang cabang Anda dengan susah payah.
Nikmati.
sumber
Datang pada masalah ini setelah saya menggabungkan permintaan tarik di Bitbucket.
Harus dilakukan
dan itu dia.
sumber
Biasanya jika saya harus memeriksa komit yang berbeda dari master saya lakukan:
Dengan cara ini saya bisa melihat komitmen dan memutuskan untuk menjatuhkannya atau memilih ...
sumber
git diff ...
sihir saya tidak akan berhasil. Ketika saya melakukan ini, itu memberi sayanoop
sebagai satu-satunya komit, dan ketika saya menerimanya, sekarang cabang saya tidak sinkron dengan asal / master. Jadi tampaknya komit berbeda dari asal / master tidak ada efeknya.Pesan ini dari
git
berarti Anda telah membuat tiga komit di repo lokal Anda, dan belum menerbitkannya kemaster
repositori. Perintah untuk menjalankannya adalahgit push {local branch name} {remote branch name}
.Perintah
git pull
(dangit pull --rebase
) adalah untuk situasi lain ketika ada komit pada repo jarak jauh yang tidak Anda miliki di repo lokal Anda. The--rebase
pilihan cara yanggit
akan menggerakkan Anda lokal berkomitmen samping, sinkronisasi dengan repo remote, dan kemudian mencoba untuk menerapkan tiga Anda komit dari negara baru. Mungkin gagal jika ada konflik, tetapi Anda akan diminta untuk menyelesaikannya. Anda juga dapat membatalkanrebase
jika Anda tidak tahu cara menyelesaikan konflik dengan menggunakangit rebase --abort
dan Anda akan kembali ke keadaan sebelum berjalangit pull --rebase
.sumber
Jika git Anda mengatakan Anda berkomitmen, maka hanya Pertama,
Untuk memastikan Anda telah mendorong semua pekerjaan terbaru Anda di repo
Kemudian,
Untuk mengatur ulang dan mencocokkan dengan repo
sumber
Ini terjadi pada saya sekali setelah saya menggabungkan permintaan tarik di Bitbucket.
Saya hanya harus melakukan:
git fetch
Masalah saya terpecahkan. Saya harap ini membantu!!!
sumber
akhirnya:
sumber