私は github.com にリポジトリを持っており、ワークステーションに git プルダウンし、編集し、コミットしてから、git プッシュで変更を github に戻します。これはすべてうまくいきます。
しかし、私はよく github.com から読み取り専用コピーを複製します。
git clone git://github.com/jhsrennie/Test.git Test-ro
通常、これは、開発を行わない一時的なテスト インストールがあるためですが、コードのビルドと実行を確認する必要があります。私の github リポジトリのコピーは、変更を github にプッシュする必要がないため、読み取り専用にすることができます。問題は、次を使用して github から読み取り専用コピーに変更をプルダウンするときです。
git pull origin master
git status が次のように表示されることがわかりました。
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
# (use "git push" to publish your local commits)
変更をプッシュバックすることはできませんし、とにかくしたくありませんが、未処理のコミットが原因で問題が発生します。たとえば、新しいリモート ブランチをチェックアウトできません。読み取り専用のリポジトリを削除し、更新が必要になるたびに再クローンする必要があります。
プッシュする必要があるコミットがあると思わせずに、github.com から github リポジトリの読み取り専用コピーを更新するにはどうすればよいですか?
または、これをばかげた方法で行っていますか?目標を達成するためのより良い方法はありますか?
カップケーキの答えへの応答
私にとっても奇妙に思えますし、明らかに何かが欠けています。問題を再現する方法は次のとおりです。
- 次を使用してリポジトリをクローンします。
git clone git@github.com:jhsrennie/Test.git Test-rw
- 次のコマンドを使用して、読み取り専用コピーを複製します。
git clone git://github.com/jhsrennie/Test.git Test-ro
- に変更を加えてから
Test-rw
、git add
git commit
git status
(ご想像のとおり)次のようになります。
renniej@RATHAUS /d/Dev/GIT/Test-rw (master)
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
そして最後に、変更を github にプッシュします。git push origin master
次に、読み取り専用コピーに切り替えて、次のことを確認しgit status
ます。
renniej@RATHAUS /d/Dev/GIT/Test-ro (master)
$ git status
# On branch master
nothing to commit, working directory clean
を使用して更新するgit pull origin master
と、次のようになります (これは、単一ファイル README.md への変更でした):
renniej@RATHAUS /d/Dev/GIT/Test-ro (master)
$ git pull origin master
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 3 (delta 0)
Unpacking objects: 100% (3/3), done.
From git://github.com/jhsrennie/Test
* branch master -> FETCH_HEAD
Updating 76b02d1..5b03266
Fast-forward
README.md | 2 ++
1 file changed, 2 insertions(+)
そしてgit status
今与える:
renniej@RATHAUS /d/Dev/GIT/Test-ro (master)
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
私が考えることができる唯一の説明は、更新が元のクローン元と同じリポジトリからのものであることを読み取り専用コピーが認識しないということですが、これは控えめに言っても奇妙に思えます。