"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://[email protected]/repo.git
To https://[email protected]/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://[email protected]/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?

Senseful
sumber

Jawaban:

229

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

git pull --tags
bytedev
sumber
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.)

Senseful
sumber
"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

JDev-Guns
sumber
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

Ogglas
sumber
14

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

masukkan deskripsi gambar di sini

Sudheer Kumar Palchuri
sumber
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.

YoungJeXu
sumber
-1

Saya menyelesaikan masalah di SourceTree dengan cara ini:

  1. Menghapus tag dengan pilihan "Hapus tag dari semua remote"
  2. Membuat ulang tag
Marco Barbero
sumber