[解決済み】Git Push エラー: チェックアウトされたブランチの更新ができない
2022-04-06 10:34:41
質問
いくつかのマージの競合を解決してコミットし、変更をプッシュしようとしたところ、次のエラーが発生しました。
c:\Program Files (x86)\Git\bin\git.exe push --recurse-submodules=check "origin" master:master
Done
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To C:/Development/GIT_Repo/Project
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'C:/Development/GIT_Repo/Project'
このエラーの原因についてご存知の方はいらっしゃいますか?
解決方法は?
理由:非ベアリポジトリにプッシュしています。
リポジトリには2つのタイプがあります。 ベアとノンベア
ベアリポジトリは作業コピーを持っておらず、プッシュすることができます。Githubで得られるリポジトリはこのタイプです! ベアリポジトリを作成したい場合は、次のようにします。
git init --bare
つまり、簡単に言うと
ベアでないリポジトリにプッシュすることはできません。
(編集:まあ、リポジトリの現在チェックアウトされているブランチにプッシュすることはできませんが。ベアリポジトリでは、どのブランチもチェックアウトされていないので、プッシュできます。可能ですが、ベアリポジトリでないところへのプッシュは一般的ではありません)。できることは、他のリポジトリから取得し、マージすることです。このように
pull request
Githubで見ることができるのは、その仕組みです。自分からプルするように相手に頼むのであって、無理矢理押し込むのではありません。
更新情報 : VonC さんのご指摘により、最新の git バージョン (現在 2.3.0) になりました。 ベアリポジトリでないチェックアウトブランチへのプッシュは可能です。 . へのプッシュはできません。 ダーティ 作業ツリーで、いずれにせよ安全な操作ではありません。
関連
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] Git でブランチからコミットを削除する
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み] Gitのプッシュを正しく強制する方法は?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】既存のGitブランチをリモートブランチに追従させる?
-
[解決済み】Featureブランチのリベースの後、Gitプッシュが拒否される。
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】git rev-parseは何をするのですか?
-
[解決済み] git rebase fatal: 必要なリビジョンは1つです。
-
[解決済み】「オリジン/マスターへのプッシュが拒否されました」というエラーが常に発生するのはなぜですか?
-
Gitのプッシュでエラーが発生! [リモート拒否] master -> master (pre-receive hook declined) error: failed to push s...
-
[解決済み] git: fatal: リモートリポジトリから読み取れませんでした。
-
[解決済み] fatal: EOF が早い fatal: インデックスパックが失敗した
-
[解決済み] Git エラー : 'upstream' は git リポジトリでないようです。
-
[解決済み] 新しいBitbucketでリポジトリを削除するにはどうすればよいですか?
-
[解決済み] Git作者不明
-
[解決済み】Bareリポジトリと非Bareリポジトリの -実用的な- 違いは何ですか?