"Pembaruan ditolak karena tag sudah ada" saat mencoba memasukkan SourceTree


117

Saat mencoba Mendorong melalui Pohon Sumber, saya mendapatkan kesalahan berikut:

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags origin refs/heads/master:refs/heads/master 
Pushing to https://user@github.com/repo.git
To https://user@github.com/repo.git
 = [up to date]      master -> master
...
 ! [rejected]        example_tag -> example_tag (already exists)
updating local tracking ref 'refs/remotes/origin/master'
error: failed to push some refs to 'https://user@github.com/repo.git'
hint: Updates were rejected because the tag already exists in the remote.
Completed with errors, see above

Sejauh yang saya tahu, saya tidak membuat perubahan apa pun pada tag ini. Bagaimana cara memperbaikinya?

Jawaban:


229

Anda juga harus bisa menyelesaikan ini di git bash (klik tombol "Terminal" di Source Tree UI). Tipe:

git pull --tags

3
Saya merasa ini adalah jawaban terbaik karena ini adalah jalan yang paling tidak tahan.
Chad

40
Dengan konflik yang dapat Anda lakukan git pull --tags -funtuk menimpa yang Anda miliki secara lokal jika itu yang Anda inginkan
DenLilleMand

2
Di SourceTree, klik Ambil, dan aktifkan "ambil semua tag". Itu akan berhasil.
darkgaze

116

Jika Anda belum membuat perubahan lokal apa pun pada tag yang ingin Anda simpan, Anda dapat menghapus tag yang ditolak karena sudah ada ( example_tagdalam kasus ini):

  1. Klik kanan tag tersebut dan pilih untuk menghapusnya (pastikan untuk menghapus centang pada kotak Hapus tag dari semua remote ).
  2. Pilih Fetch pilihan (Fetch dan menyimpan semua tag secara lokal tidak tidak harus diaktifkan).
  3. Anda sekarang harus memiliki tag yang baru saja dihapus kembali, dan mencoba Push tidak akan lagi menampilkan pesan kesalahan itu.

Alasan hal ini umum terjadi di SourceTree adalah karena opsi Dorong semua tag diatur ke aktif secara default. (Cara lain untuk menyembunyikan kesalahan ini adalah dengan menghapus centang opsi itu.)


"Ambil dan simpan semua tag secara lokal tidak harus diaktifkan" itulah yang menyebabkan saya, memeriksa itu hanya menyebabkan masalah terulang kembali.
Tom

Dengan asumsi repo hulu (asal) adalah sumber kebenaran, solusi ini paling tidak merusak, dan memperbaiki masalah secara instan.
Steve Henty

Sayangnya jika Anda memiliki 15 tag yang ditolak, 1,2, dan 3 langkah bisa sangat membosankan. Ya, menonaktifkan opsi "Dorong semua tag" mungkin adalah cara yang tepat.
SagiSergeNadir

27

Hapus centang push all tagsdi bagian bawah UI saat Anda mengonfirmasi git push Anda


Apakah maksud Anda push all tags?
Wodin

Bagus! Tidak mengamatinya. Terima kasih
Meg-90

@Wodin jadi jika Anda MEMERIKSA push all tagsdi UI itu akan mencoba untuk menimpa tag sebelumnya. tetapi Anda harus MENGHAPUS CEKnya untuk mencegah penimpaan
JDev-Guns

@ JDev-Guns Saya baru saja menanyakan kata-katanya. Anda awalnya mengatakan push all TABs. Saya tidak akrab dengan SourceTree, tapi saya curiga yang Anda maksud, TAGsbukan TABs.
Wodin

@Wodin oh gotcha! saya pikir saya berkata TAGstetapi jika saya tidak melakukannya, saya bermaksud mengatakanTABs
JDev-Guns

15

git pull --tagsbekerja dengan sangat baik tetapi terkadang Anda bisa mendapatkan kesalahan bahkan dengan perintah ini. Contoh pesan kesalahan:

 ! [rejected]        example_tag      -> example_tag  (would clobber existing tag)

Ini dapat diselesaikan dengan perintah: git pull --tags -f

Sumber:

https://github.com/concourse/git-resource/issues/233


14

Pastikan Anda tidak mencentang tombol "Dorong semua tag" saat menekan.

masukkan deskripsi gambar di sini


Seperti disebutkan di atas, jika Anda menambahkan tag baru secara lokal, bukankah ini berarti tag tersebut tidak didorong ke remote?
bytedev

0

Ya, memang, tarik tag terlebih dahulu sebelum Anda push --tags. Memecahkan masalah saya.


-1

Saya menyelesaikan masalah di SourceTree dengan cara ini:

  1. Menghapus tag dengan pilihan "Hapus tag dari semua remote"
  2. Membuat ulang tag
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.