1. ホーム
  2. git

[解決済み] 裸のGitリポジトリにプッシュするには?

2022-04-24 22:52:12

質問

私は通常、リモートサーバーで ssh を使って作業し(画面と vim)、そこに Git リポジトリを持っています。時々、私はオンラインではないので、私のラップトップに別のリポジトリ(リモートからクローンしたもの)を持っています。

しかし、普段はファイアウォールの中にいたり、パブリックIPを持っていなかったりするので、リモート側のこのリポジトリからプルすることができない。

ベアリポジトリにだけプッシュすればいいと書いてありました。その場合、どのようにリモートリポジトリに変更をプッシュすればよいのでしょうか?

どのように解決するのですか?

receive.denyCurrentBranch updateInstead

このオプション が追加されました。 Git 2.3 では この機能は、サーバーの作業ツリーがクリーンである場合に、それを更新するようにします。

ですから、ローカルでプルする前に必ずコミットし、サーバー上の作業ツリーをクリーンに保つ(マージの衝突を避けるためにそうすべきです)なら、このオプションは良い解決策になります。

使用例です。

git init server
cd server
touch a
git add .
git commit -m 0
git config --local receive.denyCurrentBranch updateInstead

cd ..
git clone server local
cd local
touch b
git add .
git commit -m 1
git push origin master:master

cd ../server
ls

出力します。

a
b