SourceTreeをプッシュしようとしたときに、「タグがすでに存在するため、更新は拒否されました」


117

ソースツリーを介してプッシュしようとすると、次のエラーが発生します。

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

私の知る限り、このタグには変更を加えていません。どうすれば修正できますか?

回答:


229

これはgit bashでも解決できるはずです(ソースツリーUIの[ターミナル]ボタンをクリックします)。タイプ:

git pull --tags

3
これが最も抵抗の少ない道なので最良の答えだと思います。
チャド

40
競合が発生しgit pull --tags -fた場合、ローカルにあるものを上書きすることができます
DenLilleMand

2
SourceTreeで、[フェッチ]をクリックして、[すべてのタグをフェッチ]を有効にします。それで十分でしょう。
-darkgaze

116

保持するタグにローカルの変更を加えていない場合は、既に存在するために拒否されたタグを削除できますexample_tagこの場合)。

  1. タグを右クリックして、削除を選択します([ すべてのリモートからタグを削除] チェックボックスオフにしてください)。
  2. フェッチオプションを選択します(すべてのタグをローカルにフェッチして保存する必要はありませ)。
  3. これで、削除されたばかりのタグが表示されるはずです。プッシュしようとしても、そのエラーメッセージは表示されなくなります。

これがSourceTreeで一般的な理由は、[ すべてのタグをプッシュ ]オプションがデフォルトでオンに設定さているためです。(このエラーを非表示にする別の方法は、そのオプションをオフにすることです。)


「すべてのタグをローカルに取得して保存する必要はありません」というのが私にとってそれで、問題が繰り返し発生することを確認しました。
トム

アップストリーム(元の)リポジトリが真のソースであると仮定すると、このソリューションは最も破壊的ではなく、問題を即座に修正します。
スティーブ

残念ながら、15個のタグが拒否された場合、1、2、および3ステップは非常に退屈な作業になる可能性があります。はい、[すべてのタグをプッシュする]オプションを無効にすることはおそらく正しい方法です。
SagiSergeNadir

27

push all tagsgit pushを確認したら、UIの下部でチェックを外します


もしかしてpush all tags
Wodin 2018

すごい!観察しませんでした。ありがとう
Meg-90

@Wodinなのでpush all tags、UIでをチェックすると、以前のタグを上書きしようとします。ただし、上書きを防止するには、チェックを外す必要があります
JDev-Guns

@ JDev-Guns私は言葉遣いを尋ねていました。あなたはもともと言ったpush all TABs。私はSourceTreeに精通していませんが、のTAGs代わりにあなたが意図したのではないかと思いましたTABs
Wodin

@Wodinああっちゃった!私は言っTAGsたと思うが、しなかった場合、私は言うTABs
つもりだった

15

git pull --tags非常にうまく機能しますが、このコマンドを使用してもエラーが発生する場合があります。エラーメッセージの例:

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

これは次のコマンドで解決できます: git pull --tags -f

ソース:

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


14

押している間は、必ず[すべてのタグを押す]ボタンをオフにしてください。

ここに画像の説明を入力してください


上記のように、新しいタグをローカルに追加した場合、それはリモートにプッシュされないという意味ではありませんか?
bytedev

0

はい、確かに、あなたの前に最初にタグを引っ張ってくださいpush --tags。私の問題を解決しました。


-1

私はこの方法でSourceTreeの問題を解決します:

  1. すべてのリモートからタグを削除する」を選択してタグを削除する
  2. タグを再作成する
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.