ローカルとリモートのGitLabリポジトリの両方でブランチを削除しようとしています。その名前はorigin/feat
です。やってみましたgit push --delete origin feat
。Gitは文句を言います:
remote: error: By default, deleting the current branch is denied, because the next
remote: 'git clone' won't result in any file checked out, causing confusion.
remote:
remote: You can set 'receive.denyDeleteCurrent' configuration variable to
remote: 'warn' or 'ignore' in the remote repository to allow deleting the
remote: current branch, with or without a warning message.
remote:
remote: To squelch this message, you can set it to 'refuse'.
remote: error: refusing to delete the current branch: refs/heads/feat
OKは理にかなっているので、origin/master
withに切り替えてみたところ、次のように表示されgit checkout master
ますAlready on 'master'
。現在のブランチもリモートディレクトリに設定する必要がありますか?どうすればいいですか?
編集(OPによるコメントごと-私はGitLabを使用していません):GitLabにはドロップダウン付きのWebインターフェイスがあります。(プロジェクトビューではなく)設定ビューの下にあるものが必要です。[設定]ビューの[デフォルトのブランチ]でブランチを選択し、[変更を保存]をクリックして、サーバーに現在のブランチを設定します。
あなたは正しい考えを持っていますが、2つのリポジトリ(2つのGits)が関係していることを覚えておく必要があります。
プレフィックスが付いたテキストを取得するときはいつでもremote:
、これはテキストが他のGitからのものであることを意味します。したがって、Gitに他のGitに削除を依頼すると、他のGitが現在のブランチでfeat
あるfeat
と不平を言います。
したがって:
現在のブランチもリモートディレクトリに設定する必要がありますか?
はい(まあ、「また」ではなく「代わりに」)。
どうすればいいですか?
一般に、他のリポジトリで行うのと同じ方法で、ログインしcd
てリポジトリディレクトリに移動し、を実行しgit checkout
ます。しかし、サーバー上にプッシュ可能なリポジトリーには問題が1つか2つあります。
おそらく--bare
リポジトリなので、git checkout
直接使用することはできません。ここでの秘訣はgit symbolic-ref
、更新に使用することHEAD
です。
git symbolic-ref HEAD refs/heads/master
もちろん、これはログインできることを前提としています(最初のポイントを参照)。たとえば、リモートの現在のブランチを変更できるWebインターフェイスがある場合は、このgit symbolic-ref
操作を実行する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加